提交 4a39e94c authored 作者: Trevor Alpeter's avatar Trevor Alpeter 提交者: Mike Jerris

FS-10370: Enable SRTP Key Padding

Some clients rely on Base64 padding characters (i.e., '=') to be present
in encoded SRTP key/salt strings to determine the length of the encoded
data. However, FreeSWITCH removes these characters before including the
encoded strings in the SDP. This causes those clients that rely on the
padding to truncate the encoded data and be unable to properly set up an
encrypted SRTP session.

This change introduces a channel flag named 'rtp_pad_srtp_keys'. When
this flag is enabled, FreeSWITCH includes the Base64 padding characters
in the SDP. This allows clients that rely on the padding to retrieve the
full key and salt values and successfully negotiate an SRTP stream with
FreeSWITCH.

FS-103070 #resolve
上级 93565545
...@@ -1111,10 +1111,12 @@ static switch_status_t switch_core_media_build_crypto(switch_media_handle_t *smh ...@@ -1111,10 +1111,12 @@ static switch_status_t switch_core_media_build_crypto(switch_media_handle_t *smh
#endif #endif
switch_b64_encode(key, SUITES[ctype].keylen, b64_key, sizeof(b64_key)); switch_b64_encode(key, SUITES[ctype].keylen, b64_key, sizeof(b64_key));
p = strrchr((char *) b64_key, '='); if (!switch_channel_var_true(channel, "rtp_pad_srtp_keys")) {
p = strrchr((char *) b64_key, '=');
while (p && *p && *p == '=') { while (p && *p && *p == '=') {
*p-- = '\0'; *p-- = '\0';
}
} }
if (index == SWITCH_NO_CRYPTO_TAG) index = ctype + 1; if (index == SWITCH_NO_CRYPTO_TAG) index = ctype + 1;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论