From 58e8ea08c2b9acf481d5125e99013a7610c6e311 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Wed, 1 Apr 2026 19:31:18 -0400 Subject: [PATCH] Bump to libsignal v0.91.0 --- gradle/libs.versions.toml | 2 +- gradle/verification-metadata.xml | 20 +++++++++---------- .../api/crypto/SignalServiceCipher.java | 9 ++++++--- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b81cda10a1..871a50de90 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -27,7 +27,7 @@ androidx-navigation3-core = "1.0.0" androidx-core-telecom = "1.0.1" androidx-window = "1.3.0" glide = "4.15.1" -libsignal-client = "0.90.0" +libsignal-client = "0.91.0" mp4parser = "1.9.39" accompanist = "0.28.0" nanohttpd = "2.3.1" diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index 5b732e15fa..a96c2e569a 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -16820,20 +16820,20 @@ https://docs.gradle.org/current/userguide/dependency_verification.html - - - + + + - - + + - - - + + + - - + + diff --git a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/crypto/SignalServiceCipher.java b/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/crypto/SignalServiceCipher.java index 0bb3981fbe..91b40d2db9 100644 --- a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/crypto/SignalServiceCipher.java +++ b/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/crypto/SignalServiceCipher.java @@ -118,7 +118,8 @@ public class SignalServiceCipher { throws UntrustedIdentityException, InvalidKeyException { try { - SignalSessionCipher sessionCipher = new SignalSessionCipher(sessionLock, new SessionCipher(signalProtocolStore, destination)); + SignalProtocolAddress localProtocolAddress = new SignalProtocolAddress(localAddress.getIdentifier(), localDeviceId); + SignalSessionCipher sessionCipher = new SignalSessionCipher(sessionLock, new SessionCipher(signalProtocolStore, localProtocolAddress, destination)); if (sealedSenderAccess != null) { SignalSealedSessionCipher sealedSessionCipher = new SignalSealedSessionCipher(sessionLock, new SealedSessionCipher(signalProtocolStore, localAddress.getServiceId().getRawUuid(), localAddress.getNumber() .orElse(null), localDeviceId)); @@ -187,9 +188,11 @@ public class SignalServiceCipher { throw new InvalidMessageStructureException("Non-UD envelope is missing a UUID!"); } + SignalProtocolAddress localProtocolAddress = new SignalProtocolAddress(localAddress.getIdentifier(), localDeviceId); + if (envelope.type == Envelope.Type.PREKEY_MESSAGE) { SignalProtocolAddress sourceAddress = new SignalProtocolAddress(sourceServiceId.toString(), envelope.sourceDeviceId); - SignalSessionCipher sessionCipher = new SignalSessionCipher(sessionLock, new SessionCipher(signalProtocolStore, sourceAddress)); + SignalSessionCipher sessionCipher = new SignalSessionCipher(sessionLock, new SessionCipher(signalProtocolStore, localProtocolAddress, sourceAddress)); paddedMessage = sessionCipher.decrypt(new PreKeySignalMessage(envelope.content.toByteArray())); metadata = new SignalServiceMetadata(getSourceAddress(envelope), envelope.sourceDeviceId, envelope.clientTimestamp, envelope.serverTimestamp, serverDeliveredTimestamp, false, serverGuid, Optional.empty(), destinationStr); @@ -198,7 +201,7 @@ public class SignalServiceCipher { signalProtocolStore.clearSenderKeySharedWith(Collections.singleton(sourceAddress)); } else if (envelope.type == Envelope.Type.DOUBLE_RATCHET) { SignalProtocolAddress sourceAddress = new SignalProtocolAddress(sourceServiceId.toString(), envelope.sourceDeviceId); - SignalSessionCipher sessionCipher = new SignalSessionCipher(sessionLock, new SessionCipher(signalProtocolStore, sourceAddress)); + SignalSessionCipher sessionCipher = new SignalSessionCipher(sessionLock, new SessionCipher(signalProtocolStore, localProtocolAddress, sourceAddress)); paddedMessage = sessionCipher.decrypt(new SignalMessage(envelope.content.toByteArray())); metadata = new SignalServiceMetadata(getSourceAddress(envelope), envelope.sourceDeviceId, envelope.clientTimestamp, envelope.serverTimestamp, serverDeliveredTimestamp, false, serverGuid, Optional.empty(), destinationStr);