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 {