Skip to content
Snippets Groups Projects
Commit b145349b authored by Luis Guzmán's avatar Luis Guzmán
Browse files

libtgowt: apply system libsrtp2 usage for libtgowt

parent dffc4676
No related branches found
No related tags found
1 merge request!1250libtgowt: apply system libsrtp2 usage for libtgowt
Pipeline #1153 passed
From 0614aac699b1a53242ffe2664e3724533bf64f97 Mon Sep 17 00:00:00 2001
From: John Preston <johnprestonmail@gmail.com>
Date: Fri, 28 Apr 2023 14:32:00 +0400
Subject: [PATCH] Build: Add explicit libsrtp_config.
---
src/third_party/libsrtp_config/config.h | 15 +++++++++++++++
1 file changed, 15 insertions(+)
create mode 100644 src/third_party/libsrtp_config/config.h
diff --git a/src/third_party/libsrtp_config/config.h b/src/third_party/libsrtp_config/config.h
new file mode 100644
index 00000000..1edcdc5c
--- /dev/null
+++ b/src/third_party/libsrtp_config/config.h
@@ -0,0 +1,15 @@
+#define PACKAGE_VERSION "2.5.0"
+#define PACKAGE_STRING "libsrtp2 2.5.0"
+
+#define GCM
+#define OPENSSL
+#define CPU_CISC 1
+#define HAVE_INTTYPES_H 1
+#define HAVE_STDINT_H 1
+#define HAVE_STDLIB_H 1
+#define HAVE_SYS_TYPES_H 1
+#define HAVE_UINT8_T 1
+#define HAVE_UINT16_T 1
+#define HAVE_UINT32_T 1
+#define HAVE_UINT64_T 1
+#define HAVE_INT32_T 1
From 7998a2a95da261d709664aefa2787258f1d24142 Mon Sep 17 00:00:00 2001
From: Nicholas Guriev <nicholas@guriev.su>
Date: Tue, 20 Jun 2023 09:47:41 +0300
Subject: [PATCH] Exclude libSRTP from the orig tarball
---
debian/copyright | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/debian/copyright b/debian/copyright
index d8431c08..9f9247fe 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -3,6 +3,7 @@ Upstream-Name: tg_owt
Upstream-Contact: John Preston <johnprestonmail@gmail.com>
Source: https://github.com/desktop-app/tg_owt
Files-Excluded: src/third_party/abseil-cpp/*
+ src/third_party/libsrtp/*
src/third_party/rnnoise/*
src/third_party/yasm/*
Comment: Exclude RNNoise non-free model, and also, unused libraries and binaries.
@@ -94,10 +95,6 @@ Files: src/third_party/crc32c/*
License: BSD-3-Clause
Copyright: 2008,2017,2021, The CRC32C Authors
-Files: src/third_party/libsrtp/*
-License: BSD-3-Clause
-Copyright: 2001-2017, Cisco Systems, Inc.
-
Files: src/third_party/libyuv/*
License: BSD-3-Clause
Copyright: 2011-2022, The LibYuv Project Authors
--
GitLab
From fdb627d9cbe59428b13f3e9f731d4dc0d55354e4 Mon Sep 17 00:00:00 2001
From: Nicholas Guriev <nicholas@guriev.su>
Date: Thu, 4 May 2023 16:21:09 +0300
Subject: [PATCH] New Unbundle-libSRTP.patch
Link against the updated library from the libsrtp2-dev package which already
has a fix of OpenSSL 3.0.0 incompatibility.
Gbp-Dch: full
---
debian/control | 1 +
debian/patches/Unbundle-libSRTP.patch | 124 ++++++++++++++++++++++++++
debian/patches/series | 1 +
3 files changed, 126 insertions(+)
create mode 100644 debian/patches/Unbundle-libSRTP.patch
diff --git a/debian/control b/debian/control
index c9aa2912..516aa47e 100644
--- a/debian/control
+++ b/debian/control
@@ -20,6 +20,7 @@ Build-Depends-Arch:
libpipewire-0.3-dev,
libprotobuf-dev,
libpulse-dev,
+ libsrtp2-dev,
libssl-dev,
libswresample-dev,
libswscale-dev,
diff --git a/debian/patches/Unbundle-libSRTP.patch b/debian/patches/Unbundle-libSRTP.patch
new file mode 100644
index 00000000..466ad0ff
--- /dev/null
+++ b/debian/patches/Unbundle-libSRTP.patch
@@ -0,0 +1,124 @@
+Description: Avoid private symbols and link against system-wide libSRTP
+ The package no longer uses outdated bundled copy of the library. The change
+ fixes incompatibility with OpenSSL 3.0.0 or later.
+ .
+ The excluded code in SrtpSession looks unreachable from the call integration
+ in Telegram Desktop. Though, I can't 100% confirm this.
+Author: Nicholas Guriev <guriev-ns@ya.ru>
+Forwarded: https://github.com/desktop-app/tg_owt/pull/123
+Last-Update: Thu, 04 May 2023 16:21:09 +0300
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -2658,6 +2658,9 @@ if (TG_OWT_USE_PROTOBUF)
+ list(APPEND export_targets proto)
+ endif()
+
++if (LIBSRTP_FOUND)
++ target_compile_definitions(tg_owt PRIVATE HAVE_LIBSRTP)
++endif()
+ if (NOT absl_FOUND)
+ include(cmake/libabsl.cmake)
+ list(APPEND export_targets libabsl)
+--- a/cmake/libsrtp.cmake
++++ b/cmake/libsrtp.cmake
+@@ -1,3 +1,16 @@
++find_package(PkgConfig REQUIRED)
++pkg_check_modules(LIBSRTP libsrtp2)
++
++if (LIBSRTP_FOUND)
++ add_library(libsrtp INTERFACE EXCLUDE_FROM_ALL)
++ add_library(tg_owt::libsrtp ALIAS libsrtp)
++
++ target_include_directories(libsrtp INTERFACE ${LIBSRTP_INCLUDE_DIRS} ${LIBSRTP_CFLAGS_OTHER})
++ target_link_libraries(libsrtp INTERFACE ${LIBSRTP_LINK_LIBRARIES} ${LIBSRTP_LDFLAGS_OTHER})
++
++ return()
++endif()
++
+ add_library(libsrtp OBJECT EXCLUDE_FROM_ALL)
+ init_target(libsrtp)
+ add_library(tg_owt::libsrtp ALIAS libsrtp)
+--- a/src/pc/external_hmac.cc
++++ b/src/pc/external_hmac.cc
+@@ -15,7 +15,6 @@
+
+ #include "rtc_base/logging.h"
+ #include "rtc_base/zero_memory.h"
+-#include "third_party/libsrtp/include/srtp.h"
+
+ // Begin test case 0 */
+ static const uint8_t kExternalHmacTestCase0Key[20] = {
+--- a/src/pc/external_hmac.h
++++ b/src/pc/external_hmac.h
+@@ -30,9 +30,12 @@
+
+ #include <stdint.h>
+
+-#include "third_party/libsrtp/crypto/include/crypto_types.h"
+-#include "third_party/libsrtp/include/srtp.h"
+-#include "third_party/libsrtp/include/srtp_priv.h"
++#ifdef HAVE_LIBSRTP
++# include <srtp2/auth.h>
++# include <srtp2/srtp.h>
++#else
++# include "srtp_priv.h"
++#endif
+
+ #define EXTERNAL_HMAC_SHA1 SRTP_HMAC_SHA1 + 1
+ #define HMAC_KEY_LENGTH 20
+--- a/src/pc/srtp_session.cc
++++ b/src/pc/srtp_session.cc
+@@ -30,8 +30,12 @@
+ #include "rtc_base/thread_annotations.h"
+ #include "rtc_base/time_utils.h"
+ #include "system_wrappers/include/metrics.h"
+-#include "third_party/libsrtp/include/srtp.h"
+-#include "third_party/libsrtp/include/srtp_priv.h"
++
++#ifdef HAVE_LIBSRTP
++# include <srtp2/srtp.h>
++#else
++# include "srtp_priv.h"
++#endif
+
+ namespace cricket {
+
+@@ -290,6 +294,7 @@ bool SrtpSession::UnprotectRtcp(void* p,
+ bool SrtpSession::GetRtpAuthParams(uint8_t** key, int* key_len, int* tag_len) {
+ RTC_DCHECK(thread_checker_.IsCurrent());
+ RTC_DCHECK(IsExternalAuthActive());
++#ifndef HAVE_LIBSRTP
+ if (!IsExternalAuthActive()) {
+ return false;
+ }
+@@ -313,6 +318,10 @@ bool SrtpSession::GetRtpAuthParams(uint8
+ *key_len = external_hmac->key_length;
+ *tag_len = rtp_auth_tag_len_;
+ return true;
++#else
++ RTC_LOG_F(LS_WARNING) << "unavailable";
++ return false;
++#endif
+ }
+
+ int SrtpSession::GetSrtpOverhead() const {
+@@ -336,6 +345,7 @@ bool SrtpSession::GetSendStreamPacketInd
+ int in_len,
+ int64_t* index) {
+ RTC_DCHECK(thread_checker_.IsCurrent());
++#ifndef HAVE_LIBSRTP
+ srtp_hdr_t* hdr = reinterpret_cast<srtp_hdr_t*>(p);
+ srtp_stream_ctx_t* stream = srtp_get_stream(session_, hdr->ssrc);
+ if (!stream) {
+@@ -346,6 +356,10 @@ bool SrtpSession::GetSendStreamPacketInd
+ *index = static_cast<int64_t>(rtc::NetworkToHost64(
+ srtp_rdbx_get_packet_index(&stream->rtp_rdbx) << 16));
+ return true;
++#else
++ RTC_LOG_F(LS_WARNING) << "unavailable";
++ return false;
++#endif
+ }
+
+ bool SrtpSession::DoSetKey(int type,
#diff --git a/debian/patches/series b/debian/patches/series
#index 7dc5c619..0dd4e655 100644
#--- a/debian/patches/series
#+++ b/debian/patches/series
#@@ -3,4 +3,5 @@ Convert-endianness.patch
# Fix-libabsl-include.patch
# Packaged-PipeWire.patch
# Skip-RNNoise.patch
#+Unbundle-libSRTP.patch
# Backport-to-stable-libvpx.patch
diff --git a/debian/patches/series b/debian/patches/series
index fefeb174..bc834658 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -4,5 +4,6 @@ Fix-libabsl-include.patch
Packaged-PipeWire.patch
Prefer-std-bit-over-absl-bits.patch
Skip-RNNoise.patch
+Unbundle-libSRTP.patch
Backport-to-stable-Abseil.patch
Backport-to-stable-libvpx.patch
--
GitLab
From 87e6ebb3d5b2ad4021a25858a73f2a167e9d6027 Mon Sep 17 00:00:00 2001
From: Nicholas Guriev <nicholas@guriev.su>
Date: Sat, 24 Jun 2023 13:00:54 +0300
Subject: [PATCH] Update Unbundle-libSRTP.patch and Unbundle-libyuv.patch
* Remove EXCLUDE_FROM_ALL property from INTERFACE libraries.
* It is meaningless and interferes backporting to bullseye.
Gbp-Dch: ignore
---
debian/patches/Unbundle-libSRTP.patch | 4 ++--
debian/patches/Unbundle-libyuv.patch | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/debian/patches/Unbundle-libSRTP.patch b/debian/patches/Unbundle-libSRTP.patch
index 466ad0ff..b51e2fe3 100644
--- a/debian/patches/Unbundle-libSRTP.patch
+++ b/debian/patches/Unbundle-libSRTP.patch
@@ -10,7 +10,7 @@ Last-Update: Thu, 04 May 2023 16:21:09 +0300
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -2658,6 +2658,9 @@ if (TG_OWT_USE_PROTOBUF)
+@@ -2655,6 +2655,9 @@ if (TG_OWT_USE_PROTOBUF)
list(APPEND export_targets proto)
endif()
@@ -27,7 +27,7 @@ Last-Update: Thu, 04 May 2023 16:21:09 +0300
+pkg_check_modules(LIBSRTP libsrtp2)
+
+if (LIBSRTP_FOUND)
-+ add_library(libsrtp INTERFACE EXCLUDE_FROM_ALL)
++ add_library(libsrtp INTERFACE)
+ add_library(tg_owt::libsrtp ALIAS libsrtp)
+
+ target_include_directories(libsrtp INTERFACE ${LIBSRTP_INCLUDE_DIRS} ${LIBSRTP_CFLAGS_OTHER})
#diff --git a/debian/patches/Unbundle-libyuv.patch b/debian/patches/Unbundle-libyuv.patch
#index 1ad9956d..5fd3d54e 100644
#--- a/debian/patches/Unbundle-libyuv.patch
#+++ b/debian/patches/Unbundle-libyuv.patch
#@@ -7,7 +7,7 @@ Last-Update: Sat, 24 Jun 2023 11:53:26 +0300
# @@ -1,3 +1,12 @@
# +find_library(LIBYUV_PATH yuv)
# +if (LIBYUV_PATH)
#-+ add_library(libyuv INTERFACE EXCLUDE_FROM_ALL)
#++ add_library(libyuv INTERFACE)
# + add_library(tg_owt::libyuv ALIAS libyuv)
# +
# + target_link_libraries(libyuv INTERFACE ${LIBYUV_PATH})
--
GitLab
...@@ -17,13 +17,23 @@ ...@@ -17,13 +17,23 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
# #
VERSION=4 VERSION=5
EXTERNAL='deb-src http://ftp.debian.org/debian bullseye-backports main' EXTERNAL='deb-src http://ftp.debian.org/debian bullseye-backports main'
REPOKEY=0E98404D386FA1D9 REPOKEY=0E98404D386FA1D9
BACKPORT=true BACKPORT=true
. ./config . ./config
changelog "Backported from debian bullseye as dependency for telegram-desktop" # Apply patches to use system's libsrtp2
for patch in $(ls -v ${DATA}/*.patch)
do
echo "Applying $patch"
patch --no-backup-if-mismatch -Np1 < $patch
done
# Manually remove third_party src
rm -r src/third_party/libsrtp
changelog "Applied libsrtp system usage update to bullseye-backports."
package package
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment