From 8c471b2b3b3e5893385c2149ac0caf197631c307 Mon Sep 17 00:00:00 2001 From: Liong Sauw Ming Date: Thu, 23 Apr 2015 23:58:22 +0000 Subject: Re #1843: Add support if app uses external libSRTP 1.5.x or above (thanks to Alexander Traud for the patch) git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5079 74dad513-b988-da41-8d7b-12977e46ad98 --- pjmedia/src/pjmedia/transport_srtp.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/pjmedia/src/pjmedia/transport_srtp.c b/pjmedia/src/pjmedia/transport_srtp.c index 8844f2fa..3b4b2f2c 100644 --- a/pjmedia/src/pjmedia/transport_srtp.c +++ b/pjmedia/src/pjmedia/transport_srtp.c @@ -30,8 +30,21 @@ #if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0) +#if defined(PJ_HAS_SSL_SOCK) && (PJ_HAS_SSL_SOCK != 0) +# include + +/* Suppress compile warning of OpenSSL deprecation (OpenSSL is deprecated + * since MacOSX 10.7). + */ +#if defined(PJ_DARWINOS) && PJ_DARWINOS==1 +# pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#endif + +#endif + #if defined(PJMEDIA_EXTERNAL_SRTP) && (PJMEDIA_EXTERNAL_SRTP != 0) # include +# include #else # include #endif @@ -1084,6 +1097,15 @@ static pj_status_t generate_crypto_attr_value(pj_pool_t *pool, do { key_ok = PJ_TRUE; + +#if defined(PJ_HAS_SSL_SOCK) && (PJ_HAS_SSL_SOCK != 0) + err = RAND_bytes((unsigned char*)key, + crypto_suites[cs_idx].cipher_key_len); + if (err != 1) { + PJ_LOG(5,(THIS_FILE, "Failed generating random key")); + return PJMEDIA_ERRNO_FROM_LIBSRTP(1); + } +#else err = crypto_get_random((unsigned char*)key, crypto_suites[cs_idx].cipher_key_len); if (err != err_status_ok) { @@ -1091,6 +1113,7 @@ static pj_status_t generate_crypto_attr_value(pj_pool_t *pool, get_libsrtp_errstr(err))); return PJMEDIA_ERRNO_FROM_LIBSRTP(err); } +#endif for (i=0; i