diff --git a/app/src/benchmarkShared/java/org/signal/benchmark/setup/OtherClient.kt b/app/src/benchmarkShared/java/org/signal/benchmark/setup/OtherClient.kt index 35038bc1c0..094e015b45 100644 --- a/app/src/benchmarkShared/java/org/signal/benchmark/setup/OtherClient.kt +++ b/app/src/benchmarkShared/java/org/signal/benchmark/setup/OtherClient.kt @@ -74,7 +74,7 @@ class OtherClient(val serviceId: ServiceId, val e164: String, val identityKeyPai val cipher = SignalServiceCipher(serviceAddress, 1, aciStore, sessionLock, null) if (!aciStore.containsSession(getAliceProtocolAddress())) { - val sessionBuilder = SignalSessionBuilder(sessionLock, SessionBuilder(aciStore, getAliceProtocolAddress())) + val sessionBuilder = SignalSessionBuilder(sessionLock, SessionBuilder(aciStore, getAliceProtocolAddress(), SignalProtocolAddress(serviceAddress.identifier, 1))) sessionBuilder.process(getAlicePreKeyBundle()) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e1139a2957..9ed3458c44 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.1.0-alpha04" androidx-window = "1.3.0" glide = "4.15.1" -libsignal-client = "0.92.2" +libsignal-client = "0.93.1" 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 b8fa074fb6..189a03ea51 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -7485,20 +7485,20 @@ https://docs.gradle.org/current/userguide/dependency_verification.html - - - + + + - - + + - - - + + + - - + + diff --git a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/SignalServiceMessageSender.java b/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/SignalServiceMessageSender.java index a575426307..0e347cb101 100644 --- a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/SignalServiceMessageSender.java +++ b/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/SignalServiceMessageSender.java @@ -177,6 +177,7 @@ public class SignalServiceMessageSender { private final SignalServiceAccountDataStore aciStore; private final SignalSessionLock sessionLock; private final SignalServiceAddress localAddress; + private final SignalProtocolAddress localProtocolAddress; private final int localDeviceId; private final PNI localPni; private final Optional eventListener; @@ -214,6 +215,7 @@ public class SignalServiceMessageSender { this.sessionLock = sessionLock; this.localAddress = new SignalServiceAddress(credentialsProvider.getAci(), credentialsProvider.getE164()); this.localDeviceId = credentialsProvider.getDeviceId(); + this.localProtocolAddress = new SignalProtocolAddress(localAddress.getIdentifier(), localDeviceId); this.localPni = credentialsProvider.getPni(); this.attachmentApi = attachmentApi; this.messageApi = messageApi; @@ -1518,7 +1520,7 @@ public class SignalServiceMessageSender { return container.syncMessage(syncMessage.sent(sentMessage.build()).build()).build(); } - + private SyncMessage.Sent.StoryMessageRecipient createStoryMessageRecipient(SignalServiceStoryMessageRecipient storyMessageRecipient) { return new SyncMessage.Sent.StoryMessageRecipient.Builder() .distributionListIds(storyMessageRecipient.getDistributionListIds()) @@ -2888,7 +2890,7 @@ public class SignalServiceMessageSender { try { SignalProtocolAddress preKeyAddress = new SignalProtocolAddress(recipient.getIdentifier(), preKey.getDeviceId()); - SignalSessionBuilder sessionBuilder = new SignalSessionBuilder(sessionLock, new SessionBuilder(aciStore, preKeyAddress)); + SignalSessionBuilder sessionBuilder = new SignalSessionBuilder(sessionLock, new SessionBuilder(aciStore, preKeyAddress, localProtocolAddress)); sessionBuilder.process(preKey); } catch (org.signal.libsignal.protocol.UntrustedIdentityException e) { throw new UntrustedIdentityException("Untrusted identity key!", recipient.getIdentifier(), preKey.getIdentityKey()); @@ -2965,7 +2967,7 @@ public class SignalServiceMessageSender { try { SignalProtocolAddress preKeyAddress = new SignalProtocolAddress(recipient.getIdentifier(), preKey.getDeviceId()); - SignalSessionBuilder sessionBuilder = new SignalSessionBuilder(sessionLock, new SessionBuilder(aciStore, preKeyAddress)); + SignalSessionBuilder sessionBuilder = new SignalSessionBuilder(sessionLock, new SessionBuilder(aciStore, preKeyAddress, localProtocolAddress)); sessionBuilder.process(preKey); } catch (org.signal.libsignal.protocol.UntrustedIdentityException e) { Log.i(TAG, "[eagerPrefetch] Untrusted identity for recipient"); @@ -3020,7 +3022,7 @@ public class SignalServiceMessageSender { PreKeyBundle preKey = NetworkResultUtil.toPreKeysLegacy(keysApi.getPreKey(recipient, missingDeviceId)); try { - SignalSessionBuilder sessionBuilder = new SignalSessionBuilder(sessionLock, new SessionBuilder(aciStore, new SignalProtocolAddress(recipient.getIdentifier(), missingDeviceId))); + SignalSessionBuilder sessionBuilder = new SignalSessionBuilder(sessionLock, new SessionBuilder(aciStore, new SignalProtocolAddress(recipient.getIdentifier(), missingDeviceId), localProtocolAddress)); sessionBuilder.process(preKey); } catch (org.signal.libsignal.protocol.UntrustedIdentityException e) { throw new UntrustedIdentityException("Untrusted identity key!", recipient.getIdentifier(), preKey.getIdentityKey()); diff --git a/microbenchmark/src/androidTest/java/org/signal/util/SignalClient.kt b/microbenchmark/src/androidTest/java/org/signal/util/SignalClient.kt index f06f2552bb..62f4cd2d44 100644 --- a/microbenchmark/src/androidTest/java/org/signal/util/SignalClient.kt +++ b/microbenchmark/src/androidTest/java/org/signal/util/SignalClient.kt @@ -75,7 +75,8 @@ class SignalClient { */ fun initializeSession(to: SignalClient) { val address = SignalProtocolAddress(to.aci.toString(), 1) - SessionBuilder(store, address).process(to.createPreKeyBundle()) + val localAddress = SignalProtocolAddress(aci.libSignalAci, 1) + SessionBuilder(store, address, localAddress).process(to.createPreKeyBundle()) } fun initializedGroupSession(distributionId: DistributionId): SenderKeyDistributionMessage {