gnu: webrtc-for-telegram-desktop: Update to 0-389.0532942.
* gnu/packages/patches/webrtc-for-telegram-desktop-unbundle-libsrtp.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. * gnu/packages/telegram.scm (webrtc-for-telegram-desktop): Update to 0-389.0532942, which fixes `telegram-desktop` calls that are not working with OpenSSL 3. [source]<patches>: Add the patch. <snippet>: Unbundle libsrtp. [inputs]: Add libsrtp. Signed-off-by: Hilton Chain <hako@ultrarare.space>master
parent
7db9210ea9
commit
33018f8c25
|
@ -2094,6 +2094,7 @@ dist_patch_DATA = \
|
||||||
%D%/packages/patches/wdl-link-libs-and-fix-jnetlib.patch \
|
%D%/packages/patches/wdl-link-libs-and-fix-jnetlib.patch \
|
||||||
%D%/packages/patches/webkitgtk-adjust-bubblewrap-paths.patch \
|
%D%/packages/patches/webkitgtk-adjust-bubblewrap-paths.patch \
|
||||||
%D%/packages/patches/webrtc-audio-processing-big-endian.patch \
|
%D%/packages/patches/webrtc-audio-processing-big-endian.patch \
|
||||||
|
%D%/packages/patches/webrtc-for-telegram-desktop-unbundle-libsrtp.patch \
|
||||||
%D%/packages/patches/websocketpp-fix-for-cmake-3.15.patch \
|
%D%/packages/patches/websocketpp-fix-for-cmake-3.15.patch \
|
||||||
%D%/packages/patches/wmctrl-64-fix.patch \
|
%D%/packages/patches/wmctrl-64-fix.patch \
|
||||||
%D%/packages/patches/wmfire-update-for-new-gdk-versions.patch \
|
%D%/packages/patches/wmfire-update-for-new-gdk-versions.patch \
|
||||||
|
|
|
@ -0,0 +1,137 @@
|
||||||
|
From 62672f3756ecf218252098211d78c13369ab6d28 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Nicholas Guriev <nicholas@guriev.su>
|
||||||
|
Date: Thu, 4 May 2023 16:21:09 +0300
|
||||||
|
Subject: [PATCH] Unbundle libSRTP
|
||||||
|
|
||||||
|
Avoid private symbols and link against system-wide libSRTP. The excluded code
|
||||||
|
in SrtpSession looks unreachable from the call integration in Telegram Desktop.
|
||||||
|
---
|
||||||
|
CMakeLists.txt | 3 +++
|
||||||
|
cmake/libsrtp.cmake | 13 +++++++++++++
|
||||||
|
src/pc/external_hmac.cc | 1 -
|
||||||
|
src/pc/external_hmac.h | 9 ++++++---
|
||||||
|
src/pc/srtp_session.cc | 16 ++++++++++++++--
|
||||||
|
5 files changed, 36 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||||
|
index af7d24c21..66bec8fdf 100644
|
||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -2647,6 +2647,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)
|
||||||
|
list(APPEND export_targets libabsl)
|
||||||
|
endif()
|
||||||
|
diff --git a/cmake/libsrtp.cmake b/cmake/libsrtp.cmake
|
||||||
|
index 5124312d2..01f051606 100644
|
||||||
|
--- 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)
|
||||||
|
diff --git a/src/pc/external_hmac.cc b/src/pc/external_hmac.cc
|
||||||
|
index 27b5d0e5a..222f5d9ae 100644
|
||||||
|
--- 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] = {
|
||||||
|
diff --git a/src/pc/external_hmac.h b/src/pc/external_hmac.h
|
||||||
|
index c5071fc19..8fdc2f1a7 100644
|
||||||
|
--- 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
|
||||||
|
diff --git a/src/pc/srtp_session.cc b/src/pc/srtp_session.cc
|
||||||
|
index 7d1aaf2d6..7b5a789b0 100644
|
||||||
|
--- 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,9 @@ bool SrtpSession::UnprotectRtcp(void* p, int in_len, int* out_len) {
|
||||||
|
bool SrtpSession::GetRtpAuthParams(uint8_t** key, int* key_len, int* tag_len) {
|
||||||
|
RTC_DCHECK(thread_checker_.IsCurrent());
|
||||||
|
RTC_DCHECK(IsExternalAuthActive());
|
||||||
|
+#ifdef HAVE_LIBSRTP
|
||||||
|
+ return false;
|
||||||
|
+#else
|
||||||
|
if (!IsExternalAuthActive()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
@@ -313,6 +320,7 @@ bool SrtpSession::GetRtpAuthParams(uint8_t** key, int* key_len, int* tag_len) {
|
||||||
|
*key_len = external_hmac->key_length;
|
||||||
|
*tag_len = rtp_auth_tag_len_;
|
||||||
|
return true;
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
int SrtpSession::GetSrtpOverhead() const {
|
||||||
|
@@ -336,6 +344,9 @@ bool SrtpSession::GetSendStreamPacketIndex(void* p,
|
||||||
|
int in_len,
|
||||||
|
int64_t* index) {
|
||||||
|
RTC_DCHECK(thread_checker_.IsCurrent());
|
||||||
|
+#ifdef HAVE_LIBSRTP
|
||||||
|
+ return false;
|
||||||
|
+#else
|
||||||
|
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 +357,7 @@ bool SrtpSession::GetSendStreamPacketIndex(void* p,
|
||||||
|
*index = static_cast<int64_t>(rtc::NetworkToHost64(
|
||||||
|
srtp_rdbx_get_packet_index(&stream->rtp_rdbx) << 16));
|
||||||
|
return true;
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SrtpSession::DoSetKey(int type,
|
|
@ -1,8 +1,9 @@
|
||||||
;;; GNU Guix --- Functional package management for GNU
|
;;; GNU Guix --- Functional package management for GNU
|
||||||
;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
|
;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
|
||||||
;;; Copyright © 2022 Hilton Chain <hako@ultrarare.space>
|
;;; Copyright © 2022, 2023 Hilton Chain <hako@ultrarare.space>
|
||||||
;;; Copyright © 2023 Saku Laesvuori <saku@laesvuori.fi>
|
;;; Copyright © 2023 Saku Laesvuori <saku@laesvuori.fi>
|
||||||
;;; Copyright © 2023 Lu Hui <luhux76@gmail.com>
|
;;; Copyright © 2023 Lu Hui <luhux76@gmail.com>
|
||||||
|
;;; Copyright © 2023 Camilo Q.S. (Distopico) <distopico@riseup.net>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -266,8 +267,8 @@
|
||||||
"193m2gkvipijqbfd6a8mhg9nd63wlnshzgspk3pip57vk21l709z"))))
|
"193m2gkvipijqbfd6a8mhg9nd63wlnshzgspk3pip57vk21l709z"))))
|
||||||
|
|
||||||
(define-public webrtc-for-telegram-desktop
|
(define-public webrtc-for-telegram-desktop
|
||||||
(let ((commit "5098730b9eb6173f0b52068fe2555b7c1015123a")
|
(let ((commit "0532942ac6176a66ef184fb728a4cbb02958fc0b")
|
||||||
(revision "328"))
|
(revision "389"))
|
||||||
(hidden-package
|
(hidden-package
|
||||||
(package
|
(package
|
||||||
(name "webrtc-for-telegram-desktop")
|
(name "webrtc-for-telegram-desktop")
|
||||||
|
@ -283,14 +284,18 @@
|
||||||
(file-name
|
(file-name
|
||||||
(git-file-name name version))
|
(git-file-name name version))
|
||||||
(sha256
|
(sha256
|
||||||
(base32 "1lk54zlrff59rj5k9dylsgz4sdds4728psrk8m3v9qn5y8d6z8qy"))
|
(base32 "0fary99yl1ddk5zjpfy0pyb5brd268j41plcnvv9qjyf0wj9hf2k"))
|
||||||
|
(patches
|
||||||
|
(search-patches
|
||||||
|
;; https://github.com/desktop-app/tg_owt/pull/123
|
||||||
|
"webrtc-for-telegram-desktop-unbundle-libsrtp.patch"))
|
||||||
(modules '((guix build utils)
|
(modules '((guix build utils)
|
||||||
(ice-9 ftw)
|
(ice-9 ftw)
|
||||||
(srfi srfi-1)))
|
(srfi srfi-1)))
|
||||||
(snippet
|
(snippet
|
||||||
#~(begin
|
#~(begin
|
||||||
(let ((keep
|
(let ((keep
|
||||||
'("libsrtp" "rnnoise"
|
'("rnnoise"
|
||||||
;; Not available in Guix.
|
;; Not available in Guix.
|
||||||
"pffft")))
|
"pffft")))
|
||||||
(with-directory-excursion "src/third_party"
|
(with-directory-excursion "src/third_party"
|
||||||
|
@ -325,6 +330,7 @@
|
||||||
libdrm
|
libdrm
|
||||||
libglvnd
|
libglvnd
|
||||||
libjpeg-turbo
|
libjpeg-turbo
|
||||||
|
libsrtp
|
||||||
libvpx
|
libvpx
|
||||||
libxcomposite
|
libxcomposite
|
||||||
libxdamage
|
libxdamage
|
||||||
|
|
Reference in New Issue