guix/gnu/packages/patches/mediastreamer2-srtp2.patch

156 lines
4.5 KiB
Diff

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