From 97903498364ae2596e790cb2c2ce9ac76c04d64a Mon Sep 17 00:00:00 2001 From: Danmei Chen <danmei.chen@belledonne-communications.com> Date: Fri, 19 Jan 2018 10:04:07 +0100 Subject: [PATCH] add compability with srtp2 --- cmake/FindSRTP.cmake | 24 ++++++++++++++++++++---- src/CMakeLists.txt | 1 + src/crypto/ms_srtp.c | 10 ++-------- src/utils/srtp_prefix.h | 41 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 64 insertions(+), 12 deletions(-) create mode 100644 src/utils/srtp_prefix.h diff --git a/cmake/FindSRTP.cmake b/cmake/FindSRTP.cmake index 988b846a..f720ce7e 100644 --- a/cmake/FindSRTP.cmake +++ b/cmake/FindSRTP.cmake @@ -31,20 +31,36 @@ set(_SRTP_ROOT_PATHS ) find_path(SRTP_INCLUDE_DIRS - NAMES srtp/srtp.h + NAMES srtp2/srtp.h HINTS _SRTP_ROOT_PATHS PATH_SUFFIXES include ) if(SRTP_INCLUDE_DIRS) set(HAVE_SRTP_SRTP_H 1) -endif() - -find_library(SRTP_LIBRARIES + set(SRTP_VERSION 2) + find_library(SRTP_LIBRARIES + NAMES srtp2 + HINTS ${_SRTP_ROOT_PATHS} + PATH_SUFFIXES bin lib + ) +else() + find_path(SRTP_INCLUDE_DIRS + NAMES srtp/srtp.h + HINTS _SRTP_ROOT_PATHS + PATH_SUFFIXES include + ) + if(SRTP_INCLUDE_DIRS) + set(HAVE_SRTP_SRTP_H 1) + set(SRTP_VERSION 1) + endif() + find_library(SRTP_LIBRARIES NAMES srtp HINTS ${_SRTP_ROOT_PATHS} PATH_SUFFIXES bin lib ) +endif() + include(FindPackageHandleStandardArgs) find_package_handle_standard_args(SRTP diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index da429764..c46faa62 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -183,6 +183,7 @@ set(VOIP_SOURCE_FILES_C utils/pcap_sender.c utils/pcap_sender.h utils/stream_regulator.c + utils/srtp_prefix.h voip/audioconference.c voip/audiostream.c voip/bandwidthcontroller.c diff --git a/src/crypto/ms_srtp.c b/src/crypto/ms_srtp.c index 5a510c99..67810316 100644 --- a/src/crypto/ms_srtp.c +++ b/src/crypto/ms_srtp.c @@ -25,6 +25,7 @@ #include "mediastreamer2/ms_srtp.h" #include "mediastreamer2/mediastream.h" + #ifdef HAVE_SRTP /*srtp defines all this stuff*/ @@ -34,13 +35,7 @@ #undef PACKAGE_TARNAME #undef PACKAGE_VERSION -#if defined(MS2_WINDOWS_PHONE) -// Windows phone doesn't use make install -#include <srtp.h> -#else -#include <srtp/srtp.h> -#endif - +#include "srtp_prefix.h" #include "ortp/b64.h" @@ -352,7 +347,6 @@ int ms_srtp_init(void) srtp_init_done++; }else{ ms_fatal("Couldn't initialize SRTP library: %d.", st); - err_reporting_init("mediastreamer2"); } }else srtp_init_done++; return (int)st; diff --git a/src/utils/srtp_prefix.h b/src/utils/srtp_prefix.h new file mode 100644 index 00000000..68bde496 --- /dev/null +++ b/src/utils/srtp_prefix.h @@ -0,0 +1,41 @@ +/* + mediastreamer2 library - modular sound and video processing and streaming + Copyright (C) 2006-2014 Belledonne Communications, Grenoble + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ +#ifndef __SRTP2_H__ +#define __SRTP2_H__ + +#if defined(MS2_WINDOWS_PHONE) +// Windows phone doesn't use make install +#include <srtp.h> +#elif SRTP_VERSION==1 +#include <srtp/srtp.h> +#else +#include <srtp2/srtp.h> +#define err_status_t srtp_err_status_t +#define err_status_ok srtp_err_status_ok +#define crypto_policy_t srtp_crypto_policy_t +#define crypto_policy_set_aes_cm_256_hmac_sha1_80 srtp_crypto_policy_set_aes_cm_256_hmac_sha1_80 +#define crypto_policy_set_aes_cm_128_hmac_sha1_32 srtp_crypto_policy_set_aes_cm_128_hmac_sha1_32 +#define crypto_policy_set_aes_cm_128_null_auth srtp_crypto_policy_set_aes_cm_128_null_auth +#define crypto_policy_set_null_cipher_hmac_sha1_80 srtp_crypto_policy_set_null_cipher_hmac_sha1_80 +#define crypto_policy_set_aes_cm_128_hmac_sha1_80 srtp_crypto_policy_set_aes_cm_128_hmac_sha1_80 +#define crypto_policy_set_aes_cm_256_hmac_sha1_32 srtp_crypto_policy_set_aes_cm_256_hmac_sha1_32 +#define ssrc_t srtp_ssrc_t +#endif + +#endif -- 2.21.0