2 个不稳定版本

0.2.0 2022 年 5 月 2 日
0.1.0 2022 年 4 月 1 日

#2111 in 加密学


用于 msf-webrtc

MIT 许可证

165KB
4K SLoC

安全实时传输协议

根据 RFC 5764 和 RFC 3711 定义的 DTLS-SRTP 实现。


lib.rs:

此包实现了根据 RFC 5764 定义的 DTLS-SRTP。RFC 建立在 RFC 3711 (SRTP) 之上

  • RFC 3711 (SRTP)
  • RFC 4347 (DTLS)
  • RFC 8122 (SDP 中的 TLS)

使用示例

use openssl::{pkey::PKey, rsa::Rsa};

// a UDP stream + sink
let stream = ...;

// peer certificate fingerprint from SDP
let cert_fingerprint = "...";

// peer setup attribute from SDP
let setup = "...";

let connect = match setup {
    "active" | "actpass" => true,
    "passive" => false,
    _ => panic!("unsupported setup"),
};

// generate a private key (can be application-wide)
let rsa = Rsa::generate(2048)?;
let key = PKey::from_rsa(rsa)?;

let context = SrtpContext::self_signed(&key)?;

let stream = if connect {
    context.connect_muxed(stream, cert_fingerprint).await?
} else {
    context.accept_muxed(stream, cert_fingerprint).await?
};

依赖项

~7.5MB
~133K SLoC