【问题标题】:webRTC - Correctly using SIP and seeking a Python librarywebRTC - 正确使用 SIP 并寻找 Python 库
【发布时间】:2017-12-13 22:46:40
【问题描述】:

我正在尝试使用 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://www.rfc-editor.org/rfc/rfc5763

【问题讨论】:

    标签: python webrtc sip rtp dtls


    【解决方案1】:

    对于实际的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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-01
      • 1970-01-01
      • 2019-03-25
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多