libsrtp是被广泛使用的 SRTP/SRTCP 加密的开源项目。
源码地址: GitHub - cisco/libsrtp: Library for SRTP (Secure Realtime Transport Protocol)
常用接口:
1. srtp_init:
初始化 srtp 库,初始化内部加密算法,在使用 srtp 前,必须要调用了
2. srtp_create:
创建 srtp_session
3. srtp_unprotect/srtp_protect:
RTP 包加解密接口
4. srtp_protect_rtcp/srtp_unprotect_rtcp:
RTCP 包的加解密接口
5. srtp_set_stream_roc/srtp_get_stream_roc:
设置和获取 stream 的 ROC,这两个接口在最新的 2.3 版本加入
重要的结构 srtp_policy_t
,用来初始化加解密参数,在 srtp_create
中使用这个结构。以下参数需要关注:
1. DTLS 协商后得到的 MasterKey
和 MasterSalt
通过这个结构传递给 libsrtp,用于 session key 的生成。
2. window_size
,对应我们之前描述的 srtp 防重放攻击的窗口大小。
3. allow_repeat_tx
,是否允许重传相同序号的包。
使用该库作为基础库的开源音视频项目: srs/zlmediakit