[svn-commits] twilson: branch group/srtp_reboot r259798 - in /team/group/srtp_reboot: chann...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Wed Apr 28 14:32:19 CDT 2010


Author: twilson
Date: Wed Apr 28 14:32:16 2010
New Revision: 259798

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=259798
Log:
Don't call res_srtp functions directly

Mainly because people who don't have libsrtp installed would like to
make SIP calls too.

Modified:
    team/group/srtp_reboot/channels/sip/sdp_crypto.c
    team/group/srtp_reboot/include/asterisk/res_srtp.h
    team/group/srtp_reboot/res/res_srtp.c
    team/group/srtp_reboot/res/res_srtp.exports.in

Modified: team/group/srtp_reboot/channels/sip/sdp_crypto.c
URL: http://svnview.digium.com/svn/asterisk/team/group/srtp_reboot/channels/sip/sdp_crypto.c?view=diff&rev=259798&r1=259797&r2=259798
==============================================================================
--- team/group/srtp_reboot/channels/sip/sdp_crypto.c (original)
+++ team/group/srtp_reboot/channels/sip/sdp_crypto.c Wed Apr 28 14:32:16 2010
@@ -38,6 +38,9 @@
 #define SRTP_MASTERSALT_LEN ((SRTP_MASTER_LEN) - (SRTP_MASTERKEY_LEN))
 #define SRTP_MASTER_LEN64 (((SRTP_MASTER_LEN) * 8 + 5) / 6 + 1)
 
+extern struct ast_srtp_res *res_srtp;
+extern struct ast_srtp_policy_res *res_srtp_policy;
+
 struct sdp_crypto {
 	char *a_crypto;
 	unsigned char local_key[SRTP_MASTER_LEN];
@@ -72,11 +75,15 @@
 	int key_len;
 	unsigned char remote_key[SRTP_MASTER_LEN];
 
+	if (!ast_rtp_engine_srtp_is_registered()) {
+		return NULL;
+	}
+
 	if (!(p = sdp_crypto_alloc())) {
 		return NULL;
 	}
 
-	if (ast_srtp_get_random(p->local_key, sizeof(p->local_key)) < 0) {
+	if (res_srtp->get_random(p->local_key, sizeof(p->local_key)) < 0) {
 		sdp_crypto_destroy(p);
 		return NULL;
 	}
@@ -102,17 +109,21 @@
 {
 	const unsigned char *master_salt = NULL;
 
+	if (!ast_rtp_engine_srtp_is_registered()) {
+		return -1;
+	}
+
 	master_salt = master_key + SRTP_MASTERKEY_LEN;
-	if (ast_srtp_policy_set_master_key(policy, master_key, SRTP_MASTERKEY_LEN, master_salt, SRTP_MASTERSALT_LEN) < 0) {
-		return -1;
-	}
-
-	if (ast_srtp_policy_set_suite(policy, suite_val)) {
+	if (res_srtp_policy->set_master_key(policy, master_key, SRTP_MASTERKEY_LEN, master_salt, SRTP_MASTERSALT_LEN) < 0) {
+		return -1;
+	}
+
+	if (res_srtp_policy->set_suite(policy, suite_val)) {
 		ast_log(LOG_WARNING, "Could not set remote SRTP suite\n");
 		return -1;
 	}
 
-	ast_srtp_policy_set_ssrc(policy, ssrc, inbound);
+	res_srtp_policy->set_ssrc(policy, ssrc, inbound);
 
 	return 0;
 }
@@ -124,15 +135,19 @@
 	struct ast_rtp_instance_stats stats = {0,};
 	int res = -1;
 
+	if (!ast_rtp_engine_srtp_is_registered()) {
+		return -1;
+	}
+
 	if (!p) {
 		return -1;
 	}
 
-	if (!(local_policy = ast_srtp_policy_alloc())) {
-		return -1;
-	}
-
-	if (!(remote_policy = ast_srtp_policy_alloc())) {
+	if (!(local_policy = res_srtp_policy->alloc())) {
+		return -1;
+	}
+
+	if (!(remote_policy = res_srtp_policy->alloc())) {
 		goto err;
 	}
 
@@ -165,11 +180,11 @@
 
 err:
 	if (local_policy) {
-		ast_srtp_policy_destroy(local_policy);
+		res_srtp_policy->destroy(local_policy);
 	}
 
 	if (remote_policy) {
-		ast_srtp_policy_destroy(remote_policy);
+		res_srtp_policy->destroy(remote_policy);
 	}
 
 	return res;

Modified: team/group/srtp_reboot/include/asterisk/res_srtp.h
URL: http://svnview.digium.com/svn/asterisk/team/group/srtp_reboot/include/asterisk/res_srtp.h?view=diff&rev=259798&r1=259797&r2=259798
==============================================================================
--- team/group/srtp_reboot/include/asterisk/res_srtp.h (original)
+++ team/group/srtp_reboot/include/asterisk/res_srtp.h Wed Apr 28 14:32:16 2010
@@ -54,12 +54,4 @@
 	void (*set_ssrc)(struct ast_srtp_policy *policy, unsigned long ssrc, int inbound);
 };
 
-struct ast_srtp_policy *ast_srtp_policy_alloc(void);
-int ast_srtp_policy_set_suite(struct ast_srtp_policy *policy, enum ast_srtp_suite suite);
-int ast_srtp_policy_set_master_key(struct ast_srtp_policy *policy, const unsigned char *key, size_t key_len, const unsigned char *salt, size_t salt_len);
-void ast_srtp_policy_set_ssrc(struct ast_srtp_policy *policy, unsigned long ssrc, int inbound);
-
-void ast_srtp_policy_destroy(struct ast_srtp_policy *policy);
-int ast_srtp_get_random(unsigned char *key, size_t len);
-
 #endif /* _ASTERISK_RES_SRTP_H */

Modified: team/group/srtp_reboot/res/res_srtp.c
URL: http://svnview.digium.com/svn/asterisk/team/group/srtp_reboot/res/res_srtp.c?view=diff&rev=259798&r1=259797&r2=259798
==============================================================================
--- team/group/srtp_reboot/res/res_srtp.c (original)
+++ team/group/srtp_reboot/res/res_srtp.c Wed Apr 28 14:32:16 2010
@@ -77,14 +77,14 @@
 static int ast_srtp_unprotect(struct ast_srtp *srtp, void *buf, int *len, int rtcp);
 static int ast_srtp_protect(struct ast_srtp *srtp, void **buf, int *len, int rtcp);
 static void ast_srtp_set_cb(struct ast_srtp *srtp, const struct ast_srtp_cb *cb, void *data);
-int ast_srtp_get_random(unsigned char *key, size_t len);
+static int ast_srtp_get_random(unsigned char *key, size_t len);
 
 /* Policy functions */
-struct ast_srtp_policy *ast_srtp_policy_alloc(void);
-void ast_srtp_policy_destroy(struct ast_srtp_policy *policy);
-int ast_srtp_policy_set_suite(struct ast_srtp_policy *policy, enum ast_srtp_suite suite);
-int ast_srtp_policy_set_master_key(struct ast_srtp_policy *policy, const unsigned char *key, size_t key_len, const unsigned char *salt, size_t salt_len);
-void ast_srtp_policy_set_ssrc(struct ast_srtp_policy *policy, unsigned long ssrc, int inbound);
+static struct ast_srtp_policy *ast_srtp_policy_alloc(void);
+static void ast_srtp_policy_destroy(struct ast_srtp_policy *policy);
+static int ast_srtp_policy_set_suite(struct ast_srtp_policy *policy, enum ast_srtp_suite suite);
+static int ast_srtp_policy_set_master_key(struct ast_srtp_policy *policy, const unsigned char *key, size_t key_len, const unsigned char *salt, size_t salt_len);
+static void ast_srtp_policy_set_ssrc(struct ast_srtp_policy *policy, unsigned long ssrc, int inbound);
 
 static struct ast_srtp_res srtp_res = {
 	.create = ast_srtp_create,
@@ -177,7 +177,7 @@
 	}
 }
 
-void ast_srtp_policy_set_ssrc(struct ast_srtp_policy *policy,
+static void ast_srtp_policy_set_ssrc(struct ast_srtp_policy *policy,
 				     unsigned long ssrc, int inbound)
 {
 	if (ssrc) {
@@ -188,7 +188,7 @@
 	}
 }
 
-struct ast_srtp_policy *ast_srtp_policy_alloc()
+static struct ast_srtp_policy *ast_srtp_policy_alloc()
 {
 	struct ast_srtp_policy *tmp;
 
@@ -199,7 +199,7 @@
 	return tmp;
 }
 
-void ast_srtp_policy_destroy(struct ast_srtp_policy *policy)
+static void ast_srtp_policy_destroy(struct ast_srtp_policy *policy)
 {
 	if (policy->sp.key) {
 		ast_free(policy->sp.key);
@@ -235,12 +235,12 @@
 	}
 }
 
-int ast_srtp_policy_set_suite(struct ast_srtp_policy *policy, enum ast_srtp_suite suite)
+static int ast_srtp_policy_set_suite(struct ast_srtp_policy *policy, enum ast_srtp_suite suite)
 {
 	return policy_set_suite(&policy->sp.rtp, suite) | policy_set_suite(&policy->sp.rtcp, suite);
 }
 
-int ast_srtp_policy_set_master_key(struct ast_srtp_policy *policy, const unsigned char *key, size_t key_len, const unsigned char *salt, size_t salt_len)
+static int ast_srtp_policy_set_master_key(struct ast_srtp_policy *policy, const unsigned char *key, size_t key_len, const unsigned char *salt, size_t salt_len)
 {
 	size_t size = key_len + salt_len;
 	unsigned char *master_key;
@@ -262,7 +262,7 @@
 	return 0;
 }
 
-int ast_srtp_get_random(unsigned char *key, size_t len)
+static int ast_srtp_get_random(unsigned char *key, size_t len)
 {
 	return crypto_get_random(key, len) != err_status_ok ? -1: 0;
 }

Modified: team/group/srtp_reboot/res/res_srtp.exports.in
URL: http://svnview.digium.com/svn/asterisk/team/group/srtp_reboot/res/res_srtp.exports.in?view=diff&rev=259798&r1=259797&r2=259798
==============================================================================
--- team/group/srtp_reboot/res/res_srtp.exports.in (original)
+++ team/group/srtp_reboot/res/res_srtp.exports.in Wed Apr 28 14:32:16 2010
@@ -1,11 +1,4 @@
 {
-	global:
-		LINKER_SYMBOL_PREFIXast_srtp_get_random;
-		LINKER_SYMBOL_PREFIXast_srtp_policy_alloc;
-		LINKER_SYMBOL_PREFIXast_srtp_policy_destroy;
-		LINKER_SYMBOL_PREFIXast_srtp_policy_set_suite;
-		LINKER_SYMBOL_PREFIXast_srtp_policy_set_master_key;
-		LINKER_SYMBOL_PREFIXast_srtp_policy_set_ssrc;
 	local:
 		*;
 };




More information about the svn-commits mailing list