SRTP

概述

libsrtp是一个实现SRTP协议(Secure Real-time Transport Protocol,安全实时传输协议)的库。RTP 是实时传输协议,它是由 RFC 3550 定义的实时数据传输( 例如电话。音频和视频)的标准。 安全 RTP ( SRTP ) 是一个RT P配置文件,用于为RTP数据和对RTP报头和负载的认证提供机密性。 SRTP是在 RFC 3711 中定义的,它是在IETF的音频/视频传输( AVT ) 工作组中定义的。 这里库支持SRTP的所有强制功能,但并非所有可选功能。 有关详细信息,请参阅支持的功能部分。

示例代码

示例提供了libSRTP的简要使用流程,主要代码如下:

srtp_t session;
srtp_policy_t policy;

// 加密秘钥
uint8_t key[30] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
                   0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
                   0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
                   0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D};

// 初始化SRTP库
srtp_init();

memset(&policy, 0x0, sizeof(srtp_policy_t));

// 配置rtp和rtcp的默认配置参数
srtp_crypto_policy_set_rtp_default(&policy.rtp);
srtp_crypto_policy_set_rtcp_default(&policy.rtcp);
// 配置源和秘钥等
policy.ssrc = ssrc;
policy.key  = key;
policy.next = NULL;

// 分配srtp上下文,并根据policy初始化相关资源
srtp_create(&session, &policy);

while (1) {
  char rtp_buffer[2048];
  unsigned len;
  // 获取一包rtp原始数据
  len = get_rtp_packet(rtp_buffer);
  // 加密rtp包
  srtp_protect(session, rtp_buffer, &len);
  // 发送加密后的rtp包
  send_srtp_packet(rtp_buffer, len);
}

results matching ""

    No results matching ""