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
This commit is contained in:
parent
b4ada1b849
commit
09174819a9
|
@ -1173,10 +1173,12 @@ static switch_status_t switch_core_media_build_crypto(switch_media_handle_t *smh
|
|||
#endif
|
||||
|
||||
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 == '=') {
|
||||
*p-- = '\0';
|
||||
while (p && *p && *p == '=') {
|
||||
*p-- = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
if (index == SWITCH_NO_CRYPTO_TAG) index = ctype + 1;
|
||||
|
|
Loading…
Reference in New Issue