webRTC正确使用SIP并寻找Python库

2024-05-16 03:51:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用DTLS和SIP完成握手。这个网站[0]告诉我,我需要向传入的请求发送一个SIP响应,其中包含我的SDP文件和用于完成DTLS握手的指纹。我现在使用的是客户机服务器模式。客户机正在请求呼叫,我已经有了RTP数据包,但我需要在建立连接时将它们发送回客户机。我很难建立联系。在

为了参考DTLS握手,我有一个我所指的数据包的屏幕截图,这些数据包是我在使用webRTC库的浏览器调用期间使用wireshark发现的。https://imgur.com/a/00bi7

我在哪里可以找到一个好的python库来实现这些目的呢?在

1 ) Setup the DTLS handshake and encrypt my RTP packets to SRTP?

[0]https://tools.ietf.org/html/rfc5763


Tags: 文件https服务器sdp客户机屏幕网站模式
1条回答
网友
1楼 · 发布于 2024-05-16 03:51:53

对于实际的SRTP加密/解密,可以使用pylibsrtp:

https://pypi.python.org/pypi/pylibsrtp

DTLS握手(产生SRTP主密钥)更为复杂,但是 pyOpenSSL应该很快有必要的绑定来启用SRTP扩展:

https://github.com/pyca/pyopenssl/pull/734

一旦这是可用的,您将能够提取生成关键帧材质,如下所示:

SRTP_KEY_LEN = 16
SRTP_SALT_LEN = 14

def get_srtp_key_salt(src, idx):
    key_start = idx * SRTP_KEY_LEN
    salt_start = 2 * SRTP_KEY_LEN + idx * SRTP_SALT_LEN
    return (
        src[key_start:key_start + SRTP_KEY_LEN] +
        src[salt_start:salt_start + SRTP_SALT_LEN]
    )

material = connection.export_keying_material(
    b'EXTRACTOR-dtls_srtp',
    2 * (SRTP_KEY_LEN + SRTP_SALT_LEN))

if is_server:
    srtp_tx_key = get_srtp_key_salt(material, 1)
    srtp_rx_key = get_srtp_key_salt(material, 0)
else:
    srtp_tx_key = get_srtp_key_salt(material, 0)
    srtp_rx_key = get_srtp_key_salt(material, 1)

相关问题 更多 >