From d73b48b9b4c58977d9f39d462bf19ef1b8ea080e Mon Sep 17 00:00:00 2001 From: Max Radermacher Date: Mon, 11 May 2026 14:11:18 -0500 Subject: [PATCH] Update to LibSignal v0.94.0 --- Podfile | 4 +- Podfile.lock | 16 +- Pods | 2 +- Signal/Settings.bundle/Acknowledgements.plist | 165 +++++++----------- SignalServiceKit/Messages/MessageSender.swift | 2 +- .../tests/Messages/SessionStoreTest.swift | 4 +- 6 files changed, 79 insertions(+), 114 deletions(-) diff --git a/Podfile b/Podfile index 003a65ea9b..3f30abac9d 100644 --- a/Podfile +++ b/Podfile @@ -11,8 +11,8 @@ source 'https://cdn.cocoapods.org/' pod 'blurhash', podspec: './ThirdParty/blurhash.podspec' pod 'SwiftProtobuf', "1.36.1" -ENV['LIBSIGNAL_FFI_PREBUILD_CHECKSUM'] = '546a58e582ccfb02a0d7989d07959bd8dd1cf3b868822888eefe39676d7d8e43' -pod 'LibSignalClient', git: 'https://github.com/signalapp/libsignal.git', tag: 'v0.93.1', testspecs: ["Tests"] +ENV['LIBSIGNAL_FFI_PREBUILD_CHECKSUM'] = '2b781ed29e11848acf7127457e24dedd5f6dce2189ba3c8f6773ee85fc255b3b' +pod 'LibSignalClient', git: 'https://github.com/signalapp/libsignal.git', tag: 'v0.94.0', testspecs: ["Tests"] # pod 'LibSignalClient', path: '../libsignal', testspecs: ["Tests"] ENV['RINGRTC_PREBUILD_CHECKSUM'] = '64743212da1c13ab7092ac4ba905c4b629d2ab1935bf3b3b8db7341cc4b5864e' diff --git a/Podfile.lock b/Podfile.lock index f0d59ddc54..9599a2db5c 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -9,8 +9,8 @@ PODS: - LibMobileCoin/CoreHTTP (6.0.2): - SwiftProtobuf (~> 1.5) - libPhoneNumber-iOS (1.2.0) - - LibSignalClient (0.93.1) - - LibSignalClient/Tests (0.93.1) + - LibSignalClient (0.94.0) + - LibSignalClient/Tests (0.94.0) - libwebp (1.5.0): - libwebp/demux (= 1.5.0) - libwebp/mux (= 1.5.0) @@ -52,8 +52,8 @@ DEPENDENCIES: - GRDB.swift/SQLCipher - LibMobileCoin/CoreHTTP (from `https://github.com/signalapp/libmobilecoin-ios-artifacts`, tag `signal/6.0.2`) - libPhoneNumber-iOS (from `https://github.com/signalapp/libPhoneNumber-iOS`, branch `signal-master`) - - LibSignalClient (from `https://github.com/signalapp/libsignal.git`, tag `v0.93.1`) - - LibSignalClient/Tests (from `https://github.com/signalapp/libsignal.git`, tag `v0.93.1`) + - LibSignalClient (from `https://github.com/signalapp/libsignal.git`, tag `v0.94.0`) + - LibSignalClient/Tests (from `https://github.com/signalapp/libsignal.git`, tag `v0.94.0`) - libwebp - lottie-ios - MobileCoin/CoreHTTP (from `https://github.com/mobilecoinofficial/MobileCoin-Swift`, tag `v6.0.3`) @@ -89,7 +89,7 @@ EXTERNAL SOURCES: :git: https://github.com/signalapp/libPhoneNumber-iOS LibSignalClient: :git: https://github.com/signalapp/libsignal.git - :tag: v0.93.1 + :tag: v0.94.0 MobileCoin: :git: https://github.com/mobilecoinofficial/MobileCoin-Swift :tag: v6.0.3 @@ -113,7 +113,7 @@ CHECKOUT OPTIONS: :git: https://github.com/signalapp/libPhoneNumber-iOS LibSignalClient: :git: https://github.com/signalapp/libsignal.git - :tag: v0.93.1 + :tag: v0.94.0 MobileCoin: :git: https://github.com/mobilecoinofficial/MobileCoin-Swift :tag: v6.0.3 @@ -131,7 +131,7 @@ SPEC CHECKSUMS: GRDB.swift: 1395cb3556df6b16ed69dfc74c3886abc75d2825 LibMobileCoin: 8503f567fa32184a5be7bc038fbd727747dd9991 libPhoneNumber-iOS: 1a34106b49dc6e12a7f37eb9aee7c64011509547 - LibSignalClient: cdfabd6bb62704ee3d217441cf8b5f63dcaf7e12 + LibSignalClient: 8023facf81b9909ad817f75e8df296cf2d8846f1 libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8 Logging: beeb016c9c80cf77042d62e83495816847ef108b lottie-ios: fcb5e73e17ba4c983140b7d21095c834b3087418 @@ -143,6 +143,6 @@ SPEC CHECKSUMS: SQLCipher: ff2f045b20d675a73a70f7329395ddd4a2580063 SwiftProtobuf: 9e106a71456f4d3f6a3b0c8fd87ef0be085efc38 -PODFILE CHECKSUM: 5fea4522a58e77bcab903b5dcf4e37a17e832a57 +PODFILE CHECKSUM: 7328d74a7af4adf8f9cbef39102cf1b41d5201a6 COCOAPODS: 1.15.2 diff --git a/Pods b/Pods index 952e97e59f..cf2c3580a4 160000 --- a/Pods +++ b/Pods @@ -1 +1 @@ -Subproject commit 952e97e59ff7ac261ac48d250d691a69420f4d2c +Subproject commit cf2c3580a41c5b30e319cf3c2c691e276b437d71 diff --git a/Signal/Settings.bundle/Acknowledgements.plist b/Signal/Settings.bundle/Acknowledgements.plist index 2ba36a077b..495d2ace88 100644 --- a/Signal/Settings.bundle/Acknowledgements.plist +++ b/Signal/Settings.bundle/Acknowledgements.plist @@ -288,7 +288,7 @@ DEALINGS IN THE SOFTWARE. License MIT License Title - adler2 2.0.1, anyhow 1.0.100, anyhow 1.0.102, async-trait 0.1.89, atomic-waker 1.1.2, auto_enums 0.8.7, curve25519-dalek-derive 0.1.1, derive_utils 0.15.0, displaydoc 0.2.5, dyn-clone 1.0.20, fastrand 2.3.0, fastrand 2.4.1, home 0.5.11, home 0.5.12, itoa 1.0.17, itoa 1.0.18, linkme 0.3.35, linkme-impl 0.3.35, linux-raw-sys 0.12.1, linux-raw-sys 0.4.15, minimal-lexical 0.2.1, num_enum 0.7.5, num_enum 0.7.6, num_enum_derive 0.7.5, num_enum_derive 0.7.6, once_cell 1.21.3, once_cell 1.21.4, paste 1.0.15, pin-project 1.1.10, pin-project-internal 1.1.10, pin-project-lite 0.2.16, prettyplease 0.2.37, proc-macro-crate 3.4.0, proc-macro-crate 3.5.0, proc-macro2 1.0.105, proc-macro2 1.0.106, quote 1.0.43, quote 1.0.45, ref-cast 1.0.25, ref-cast-impl 1.0.25, rustix 0.38.44, rustix 1.1.3, rustix 1.1.4, rustversion 1.0.22, semver 1.0.27, semver 1.0.28, send_wrapper 0.6.0, serde 1.0.228, serde_core 1.0.228, serde_derive 1.0.228, serde_json 1.0.149, syn 1.0.109, syn 2.0.114, syn 2.0.117, syn-mid 0.6.0, thiserror 1.0.69, thiserror 2.0.17, thiserror 2.0.18, thiserror-impl 1.0.69, thiserror-impl 2.0.17, thiserror-impl 2.0.18, unicode-ident 1.0.22, unicode-ident 1.0.24, utf-8 0.7.6, zmij 1.0.12, zmij 1.0.21 + adler2 2.0.1, anyhow 1.0.100, anyhow 1.0.102, async-trait 0.1.89, atomic-waker 1.1.2, auto_enums 0.8.7, curve25519-dalek-derive 0.1.1, derive_utils 0.15.0, displaydoc 0.2.5, dyn-clone 1.0.20, fastrand 2.3.0, fastrand 2.4.1, home 0.5.11, home 0.5.12, itoa 1.0.17, itoa 1.0.18, linkme 0.3.35, linkme-impl 0.3.35, linux-raw-sys 0.12.1, linux-raw-sys 0.4.15, minimal-lexical 0.2.1, num_enum 0.7.5, num_enum 0.7.6, num_enum_derive 0.7.5, num_enum_derive 0.7.6, once_cell 1.21.3, once_cell 1.21.4, paste 1.0.15, pin-project 1.1.10, pin-project-internal 1.1.10, pin-project-lite 0.2.16, prettyplease 0.2.37, proc-macro-crate 3.4.0, proc-macro-crate 3.5.0, proc-macro2 1.0.105, proc-macro2 1.0.106, quote 1.0.43, quote 1.0.45, ref-cast 1.0.25, ref-cast-impl 1.0.25, rustix 0.38.44, rustix 1.1.3, rustix 1.1.4, rustversion 1.0.22, semver 1.0.27, semver 1.0.28, send_wrapper 0.6.0, serde 1.0.228, serde_core 1.0.228, serde_derive 1.0.228, serde_json 1.0.149, syn 2.0.114, syn 2.0.117, syn-mid 0.6.0, thiserror 1.0.69, thiserror 2.0.17, thiserror 2.0.18, thiserror-impl 1.0.69, thiserror-impl 2.0.17, thiserror-impl 2.0.18, unicode-ident 1.0.22, unicode-ident 1.0.24, utf-8 0.7.6, zmij 1.0.12, zmij 1.0.21 Type PSGroupSpecifier @@ -950,7 +950,7 @@ DEALINGS IN THE SOFTWARE. License MIT License Title - backtrace 0.3.76, cc 1.2.52, cc 1.2.59, cfg-if 1.0.4, cmake 0.1.57, cmake 0.1.58, find-msvc-tools 0.1.7, find-msvc-tools 0.1.9, pkg-config 0.3.32, rustc-demangle 0.1.26, socket2 0.6.1 + backtrace 0.3.76, cc 1.2.52, cc 1.2.59, cfg-if 1.0.4, cmake 0.1.57, cmake 0.1.58, find-msvc-tools 0.1.7, find-msvc-tools 0.1.9, pkg-config 0.3.32, rustc-demangle 0.1.26, socket2 0.6.3 Type PSGroupSpecifier @@ -2628,42 +2628,6 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Type PSGroupSpecifier - - FooterText - Copyright (c) 2012 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED -TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER -OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - License - BSD 3-Clause "New" or "Revised" License - Title - curve25519-dalek 4.1.3 - Type - PSGroupSpecifier - FooterText Copyright (c) 2016-2021 isis agora lovecruft. All rights reserved. @@ -2694,6 +2658,42 @@ TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + License + BSD 3-Clause "New" or "Revised" License + Title + curve25519-dalek 4.1.3 + Type + PSGroupSpecifier + + + FooterText + Copyright (c) 2012 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER +OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License BSD 3-Clause "New" or "Revised" License @@ -5018,41 +5018,6 @@ DEALINGS IN THE SOFTWARE. Type PSGroupSpecifier - - FooterText - Copyright (c) 2014-2020 The Rust Project Developers - -Permission is hereby granted, free of charge, to any -person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the -Software without restriction, including without -limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software -is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF -ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - - License - MIT License - Title - libc 0.2.180 - Type - PSGroupSpecifier - FooterText Copyright (c) The Rust Project Developers @@ -5084,7 +5049,7 @@ DEALINGS IN THE SOFTWARE. License MIT License Title - libc 0.2.184 + libc 0.2.184, libc 0.2.186 Type PSGroupSpecifier @@ -8458,7 +8423,7 @@ THE SOFTWARE. License MIT License Title - mio 1.1.1 + mio 1.2.0 Type PSGroupSpecifier @@ -11005,6 +10970,29 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI Type PSGroupSpecifier + + FooterText + Copyright 2015-2025 Brian Smith. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + License + ISC License + Title + ring 0.17.14 + Type + PSGroupSpecifier + FooterText @@ -11287,29 +11275,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Type PSGroupSpecifier - - FooterText - Copyright 2015-2025 Brian Smith. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION -OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN -CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - License - ISC License - Title - ring 0.17.14 - Type - PSGroupSpecifier - FooterText Copyright (c) 2017, Mozilla @@ -13737,7 +13702,7 @@ SOFTWARE. License MIT License Title - tokio 1.49.0, tokio-stream 0.1.18, tokio-util 0.7.18 + tokio 1.52.2, tokio-stream 0.1.18, tokio-util 0.7.18 Type PSGroupSpecifier @@ -13805,7 +13770,7 @@ SOFTWARE. License MIT License Title - tokio-macros 2.6.0 + tokio-macros 2.7.0 Type PSGroupSpecifier diff --git a/SignalServiceKit/Messages/MessageSender.swift b/SignalServiceKit/Messages/MessageSender.swift index a566cd7eea..5a90f7cfa3 100644 --- a/SignalServiceKit/Messages/MessageSender.swift +++ b/SignalServiceKit/Messages/MessageSender.swift @@ -33,7 +33,7 @@ public class MessageSender { guard let session = try sessionStore.loadSession(forServiceId: serviceId, deviceId: deviceId, tx: tx) else { return nil } - guard session.hasCurrentState else { + guard session.hasCurrentState(requirePqRatio: 0, now: Date()) else { return nil } return session diff --git a/SignalServiceKit/tests/Messages/SessionStoreTest.swift b/SignalServiceKit/tests/Messages/SessionStoreTest.swift index fceb9768d5..3f0c365806 100644 --- a/SignalServiceKit/tests/Messages/SessionStoreTest.swift +++ b/SignalServiceKit/tests/Messages/SessionStoreTest.swift @@ -64,7 +64,7 @@ class SessionStoreTest2: XCTestCase { // maxUnacknowledgedSessionAge 90 days ago. let initial_session = try alice_store.loadSession(for: bob_address, context: NullContext())! - XCTAssertTrue(initial_session.hasCurrentState(now: Date(timeIntervalSinceReferenceDate: PreKeyManagerImpl.Constants.maxUnacknowledgedSessionAge))) - XCTAssertFalse(initial_session.hasCurrentState(now: Date(timeIntervalSinceReferenceDate: PreKeyManagerImpl.Constants.maxUnacknowledgedSessionAge + 1))) + XCTAssertTrue(initial_session.hasCurrentState(requirePqRatio: 0, now: Date(timeIntervalSinceReferenceDate: PreKeyManagerImpl.Constants.maxUnacknowledgedSessionAge))) + XCTAssertFalse(initial_session.hasCurrentState(requirePqRatio: 0, now: Date(timeIntervalSinceReferenceDate: PreKeyManagerImpl.Constants.maxUnacknowledgedSessionAge + 1))) } }