[asterisk-commits] mjordan: branch mjordan/1.8-srtp r372147 - in /team/mjordan/1.8-srtp: ./ chan...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Tue Sep 4 13:07:48 CDT 2012
Author: mjordan
Date: Tue Sep 4 13:07:44 2012
New Revision: 372147
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=372147
Log:
Branch out some SRTP tweaks for testing
Added:
team/mjordan/1.8-srtp/
- copied from r372132, branches/1.8/
Modified:
team/mjordan/1.8-srtp/channels/chan_sip.c
team/mjordan/1.8-srtp/channels/sip/sdp_crypto.c
Modified: team/mjordan/1.8-srtp/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/team/mjordan/1.8-srtp/channels/chan_sip.c?view=diff&rev=372147&r1=372132&r2=372147
==============================================================================
--- team/mjordan/1.8-srtp/channels/chan_sip.c (original)
+++ team/mjordan/1.8-srtp/channels/chan_sip.c Tue Sep 4 13:07:44 2012
@@ -9197,6 +9197,10 @@
} else if (!processed_crypto && process_crypto(p, p->rtp, &p->srtp, value)) {
processed_crypto = TRUE;
processed = TRUE;
+ if (secure_audio == FALSE) {
+ ast_log(AST_LOG_NOTICE, "Processed audio crypto attribute without SAVP specified; accepting anyway\n");
+ secure_audio = TRUE;
+ }
} else if (process_sdp_a_audio(value, p, &newaudiortp, &last_rtpmap_codec)) {
processed = TRUE;
}
@@ -9206,6 +9210,10 @@
if (!processed_crypto && process_crypto(p, p->vrtp, &p->vsrtp, value)) {
processed_crypto = TRUE;
processed = TRUE;
+ if (secure_video == FALSE) {
+ ast_log(AST_LOG_NOTICE, "Processed video crypto attribute without SAVP specified; accepting anyway\n");
+ secure_video = TRUE;
+ }
} else if (process_sdp_a_video(value, p, &newvideortp, &last_rtpmap_codec)) {
processed = TRUE;
}
Modified: team/mjordan/1.8-srtp/channels/sip/sdp_crypto.c
URL: http://svnview.digium.com/svn/asterisk/team/mjordan/1.8-srtp/channels/sip/sdp_crypto.c?view=diff&rev=372147&r1=372132&r2=372147
==============================================================================
--- team/mjordan/1.8-srtp/channels/sip/sdp_crypto.c (original)
+++ team/mjordan/1.8-srtp/channels/sip/sdp_crypto.c Tue Sep 4 13:07:44 2012
@@ -49,6 +49,8 @@
char *a_crypto;
unsigned char local_key[SRTP_MASTER_LEN];
char local_key64[SRTP_MASTER_LEN64];
+ unsigned char remote_key[SRTP_MASTER_LEN];
+ char suite[64];
};
static int set_crypto_policy(struct ast_srtp_policy *policy, int suite_val, const unsigned char *master_key, unsigned long ssrc, int inbound);
@@ -257,11 +259,19 @@
return -1;
}
-
if ((key_len = ast_base64decode(remote_key, key_salt, sizeof(remote_key))) != SRTP_MASTER_LEN) {
- ast_log(LOG_WARNING, "SRTP sdescriptions key %d != %d\n", key_len, SRTP_MASTER_LEN);
- return -1;
- }
+ ast_log(LOG_WARNING, "SRTP descriptions key %d != %d\n", key_len, SRTP_MASTER_LEN);
+ return -1;
+ }
+
+ if (!memcmp(p->remote_key, remote_key, sizeof(p->remote_key))) {
+ ast_debug(1, "SRTP remote key unchanged; maintaining current policy\n");
+ return 0;
+ }
+
+ /* Set the accepted policy and remote key */
+ strcpy(p->suite, suite);
+ memcpy(p->remote_key, remote_key, sizeof(p->remote_key));
if (sdp_crypto_activate(p, suite_val, remote_key, rtp) < 0) {
return -1;
@@ -280,13 +290,17 @@
int sdp_crypto_offer(struct sdp_crypto *p)
{
char crypto_buf[128];
- const char *crypto_suite = "AES_CM_128_HMAC_SHA1_80"; /* Crypto offer */
+
+ if (ast_strlen_zero(p->suite)) {
+ /* Default crypto offer */
+ strcpy(p->suite, "AES_CM_128_HMAC_SHA1_80");
+ }
if (p->a_crypto) {
ast_free(p->a_crypto);
}
- if (snprintf(crypto_buf, sizeof(crypto_buf), "a=crypto:1 %s inline:%s\r\n", crypto_suite, p->local_key64) < 1) {
+ if (snprintf(crypto_buf, sizeof(crypto_buf), "a=crypto:1 %s inline:%s\r\n", p->suite, p->local_key64) < 1) {
return -1;
}
More information about the asterisk-commits
mailing list