mirror of
https://github.com/signalwire/freeswitch.git
synced 2026-07-24 13:12:03 +00:00
FS-11052: Allow alias for crypto suites
For outgoing calls send AES crypto in offer using corrected names
for keys of length 192 and 256, i.e. names containing _192_CM_
and _256_CM_ instead of _CM_192_ and CM_256_. For incoming calls
accept both naming conventions, decaying to same entry in SUITES.
+ fix after SRTP failed for 256 keys:
Tests showed loop removing '=' from keys in switch_core_media_build_crypto
1190 if (!switch_channel_var_true(channel, "rtp_pad_srtp_keys")) {
1191 p = strrchr((char *) b64_key, '=');
1192
1193 while (p && *p && *p == '=') {
1194 *p-- = '\0';
1195 }
1196 }
shouldn't be executed for AES_CM_256_HMAC_SHA1_32 and AES_CM_256_HMAC_SHA1_80
keys and it is meaningless for AES_CM_128_HMAC_SHA1_32 AES_CM_128_HMAC_SHA1_80
keys. Tested calling from Bria.
Introduced switch_channel_var_false and changed this to:
if (switch_channel_var_false(channel, "rtp_pad_srtp_keys"))
to enter the loop if var is set to false (and not if it is _not_ set).
This commit is contained in:
committed by
Mike Jerris
parent
4dd572789a
commit
6cd17fd556
@@ -320,6 +320,9 @@ SWITCH_DECLARE(switch_status_t) switch_channel_get_variables(switch_channel_t *c
|
||||
|
||||
SWITCH_DECLARE(switch_status_t) switch_channel_pass_callee_id(switch_channel_t *channel, switch_channel_t *other_channel);
|
||||
|
||||
static inline int switch_channel_var_false(switch_channel_t *channel, const char *variable) {
|
||||
return switch_false(switch_channel_get_variable_dup(channel, variable, SWITCH_FALSE, -1));
|
||||
}
|
||||
|
||||
static inline int switch_channel_var_true(switch_channel_t *channel, const char *variable) {
|
||||
return switch_true(switch_channel_get_variable_dup(channel, variable, SWITCH_FALSE, -1));
|
||||
|
||||
@@ -65,6 +65,7 @@ typedef enum {
|
||||
|
||||
typedef struct switch_srtp_crypto_suite_s {
|
||||
char *name;
|
||||
const char *alias;
|
||||
switch_rtp_crypto_key_type_t type;
|
||||
int keysalt_len;
|
||||
int salt_len;
|
||||
|
||||
Reference in New Issue
Block a user