Skip to content
Snippets Groups Projects
Commit c07d5311 authored by Jasper Hafkenscheid's avatar Jasper Hafkenscheid Committed by Friendly Automation
Browse files

res_srtp: Disable parsing of not enabled cryptos

When compiled without extended srtp crypto suites also disable parsing
these from received SDP. This prevents using these, as some client
implementations are not stable.

ASTERISK-29625

Change-Id: I7dafb29be1cdaabdc984002573f4bea87520533a
parent 695fc3db
No related branches found
No related tags found
3 merge requests!138Merge branch asterisk-20.3.0 into devel properly,!123Merge asterisk '20.3.0' into devel,!118Draft: manager: AOC-S support for AOCMessage
......@@ -275,7 +275,7 @@ static int policy_set_suite(crypto_policy_t *p, enum ast_srtp_suite suite)
crypto_policy_set_aes_cm_128_hmac_sha1_32(p);
return 0;
#ifdef HAVE_SRTP_192
#if defined(HAVE_SRTP_192) && defined(ENABLE_SRTP_AES_192)
case AST_AES_CM_192_HMAC_SHA1_80:
crypto_policy_set_aes_cm_192_hmac_sha1_80(p);
return 0;
......@@ -284,7 +284,7 @@ static int policy_set_suite(crypto_policy_t *p, enum ast_srtp_suite suite)
crypto_policy_set_aes_cm_192_hmac_sha1_32(p);
return 0;
#endif
#ifdef HAVE_SRTP_256
#if defined(HAVE_SRTP_256) && defined(ENABLE_SRTP_AES_256)
case AST_AES_CM_256_HMAC_SHA1_80:
crypto_policy_set_aes_cm_256_hmac_sha1_80(p);
return 0;
......@@ -293,18 +293,19 @@ static int policy_set_suite(crypto_policy_t *p, enum ast_srtp_suite suite)
crypto_policy_set_aes_cm_256_hmac_sha1_32(p);
return 0;
#endif
#ifdef HAVE_SRTP_GCM
#if defined(HAVE_SRTP_GCM) && defined(ENABLE_SRTP_AES_GCM)
case AST_AES_GCM_128:
crypto_policy_set_aes_gcm_128_16_auth(p);
return 0;
case AST_AES_GCM_256:
crypto_policy_set_aes_gcm_256_16_auth(p);
return 0;
case AST_AES_GCM_128_8:
crypto_policy_set_aes_gcm_128_8_auth(p);
return 0;
#endif
#if defined(HAVE_SRTP_GCM) && defined(ENABLE_SRTP_AES_GCM) && defined(ENABLE_SRTP_AES_256)
case AST_AES_GCM_256:
crypto_policy_set_aes_gcm_256_16_auth(p);
return 0;
case AST_AES_GCM_256_8:
crypto_policy_set_aes_gcm_256_8_auth(p);
......@@ -880,7 +881,7 @@ static int res_sdp_crypto_parse_offer(struct ast_rtp_instance *rtp, struct ast_s
suite_val = AST_AES_CM_128_HMAC_SHA1_32;
ast_set_flag(srtp, AST_SRTP_CRYPTO_TAG_32);
key_len_expected = 30;
#ifdef HAVE_SRTP_192
#if defined(HAVE_SRTP_192) && defined(ENABLE_SRTP_AES_192)
} else if (!strcmp(suite, "AES_192_CM_HMAC_SHA1_80")) {
suite_val = AST_AES_CM_192_HMAC_SHA1_80;
ast_set_flag(srtp, AST_SRTP_CRYPTO_TAG_80);
......@@ -905,7 +906,7 @@ static int res_sdp_crypto_parse_offer(struct ast_rtp_instance *rtp, struct ast_s
ast_set_flag(srtp, AST_SRTP_CRYPTO_OLD_NAME);
key_len_expected = 38;
#endif
#ifdef HAVE_SRTP_256
#if defined(HAVE_SRTP_256) && defined(ENABLE_SRTP_AES_256)
} else if (!strcmp(suite, "AES_256_CM_HMAC_SHA1_80")) {
suite_val = AST_AES_CM_256_HMAC_SHA1_80;
ast_set_flag(srtp, AST_SRTP_CRYPTO_TAG_80);
......@@ -930,21 +931,24 @@ static int res_sdp_crypto_parse_offer(struct ast_rtp_instance *rtp, struct ast_s
ast_set_flag(srtp, AST_SRTP_CRYPTO_OLD_NAME);
key_len_expected = 46;
#endif
#ifdef HAVE_SRTP_GCM
#if defined(HAVE_SRTP_GCM) && defined(ENABLE_SRTP_AES_GCM)
} else if (!strcmp(suite, "AEAD_AES_128_GCM")) {
suite_val = AST_AES_GCM_128;
ast_set_flag(srtp, AST_SRTP_CRYPTO_TAG_16);
key_len_expected = AES_128_GCM_KEYSIZE_WSALT;
/* RFC contained a (too) short auth tag for RTP media, some still use that */
} else if (!strcmp(suite, "AEAD_AES_128_GCM_8")) {
suite_val = AST_AES_GCM_128_8;
ast_set_flag(srtp, AST_SRTP_CRYPTO_TAG_8);
key_len_expected = AES_128_GCM_KEYSIZE_WSALT;
#endif
#if defined(HAVE_SRTP_GCM) && defined(ENABLE_SRTP_AES_GCM) && defined(ENABLE_SRTP_AES_256)
} else if (!strcmp(suite, "AEAD_AES_256_GCM")) {
suite_val = AST_AES_GCM_256;
ast_set_flag(srtp, AST_SRTP_CRYPTO_TAG_16);
ast_set_flag(srtp, AST_SRTP_CRYPTO_AES_256);
key_len_expected = AES_256_GCM_KEYSIZE_WSALT;
/* RFC contained a (too) short auth tag for RTP media, some still use that */
} else if (!strcmp(suite, "AEAD_AES_128_GCM_8")) {
suite_val = AST_AES_GCM_128_8;
ast_set_flag(srtp, AST_SRTP_CRYPTO_TAG_8);
key_len_expected = AES_128_GCM_KEYSIZE_WSALT;
} else if (!strcmp(suite, "AEAD_AES_256_GCM_8")) {
suite_val = AST_AES_GCM_256_8;
ast_set_flag(srtp, AST_SRTP_CRYPTO_TAG_8);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment