diff --git a/app/build.gradle b/app/build.gradle index 5b644f6803..571f454542 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -375,7 +375,7 @@ dependencies { implementation project(':device-transfer') implementation 'org.signal:zkgroup-android:0.7.0' - implementation 'org.whispersystems:signal-client-android:0.1.7' + implementation 'org.whispersystems:signal-client-android:0.5.1' implementation 'com.google.protobuf:protobuf-javalite:3.10.0' implementation('com.mobilecoin:android-sdk:1.0.0') { diff --git a/app/src/main/java/org/thoughtcrime/securesms/crypto/storage/SignalProtocolStoreImpl.java b/app/src/main/java/org/thoughtcrime/securesms/crypto/storage/SignalProtocolStoreImpl.java index 5cf86b8044..0ebbb67a07 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/crypto/storage/SignalProtocolStoreImpl.java +++ b/app/src/main/java/org/thoughtcrime/securesms/crypto/storage/SignalProtocolStoreImpl.java @@ -6,6 +6,7 @@ import org.whispersystems.libsignal.IdentityKey; import org.whispersystems.libsignal.IdentityKeyPair; import org.whispersystems.libsignal.InvalidKeyIdException; import org.whispersystems.libsignal.SignalProtocolAddress; +import org.whispersystems.libsignal.groups.state.SenderKeyRecord; import org.whispersystems.libsignal.state.IdentityKeyStore; import org.whispersystems.libsignal.state.PreKeyRecord; import org.whispersystems.libsignal.state.PreKeyStore; @@ -18,6 +19,7 @@ import org.whispersystems.signalservice.api.SignalServiceProtocolStore; import org.whispersystems.signalservice.api.SignalServiceSessionStore; import java.util.List; +import java.util.UUID; public class SignalProtocolStoreImpl implements SignalServiceProtocolStore { @@ -137,4 +139,14 @@ public class SignalProtocolStoreImpl implements SignalServiceProtocolStore { public void removeSignedPreKey(int signedPreKeyId) { signedPreKeyStore.removeSignedPreKey(signedPreKeyId); } + + @Override + public void storeSenderKey(SignalProtocolAddress sender, UUID distributionId, SenderKeyRecord record) { + + } + + @Override + public SenderKeyRecord loadSenderKey(SignalProtocolAddress sender, UUID distributionId) { + return null; + } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/crypto/storage/TextSecureSessionStore.java b/app/src/main/java/org/thoughtcrime/securesms/crypto/storage/TextSecureSessionStore.java index e868d277a0..aa98736918 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/crypto/storage/TextSecureSessionStore.java +++ b/app/src/main/java/org/thoughtcrime/securesms/crypto/storage/TextSecureSessionStore.java @@ -60,8 +60,8 @@ public class TextSecureSessionStore implements SignalServiceSessionStore { SessionRecord sessionRecord = DatabaseFactory.getSessionDatabase(context).load(recipientId, address.getDeviceId()); return sessionRecord != null && - sessionRecord.getSessionState().hasSenderChain() && - sessionRecord.getSessionState().getSessionVersion() == CiphertextMessage.CURRENT_VERSION; + sessionRecord.hasSenderChain() && + sessionRecord.getSessionVersion() == CiphertextMessage.CURRENT_VERSION; } else { return false; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SessionStoreMigrationHelper.java b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SessionStoreMigrationHelper.java index 4eab2303ae..1ab296e613 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SessionStoreMigrationHelper.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SessionStoreMigrationHelper.java @@ -10,7 +10,6 @@ import org.signal.core.util.Conversions; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.database.SessionDatabase; import org.whispersystems.libsignal.state.SessionRecord; -import org.whispersystems.libsignal.state.SessionState; import org.whispersystems.signalservice.api.push.SignalServiceAddress; import java.io.File; @@ -64,9 +63,7 @@ class SessionStoreMigrationHelper { if (versionMarker == SINGLE_STATE_VERSION) { Log.i(TAG, "Migrating single state version: " + sessionFile.getAbsolutePath()); - SessionState sessionState = new SessionState(serialized); - - sessionRecord = new SessionRecord(sessionState); + sessionRecord = new SessionRecord(serialized); } else if (versionMarker >= ARCHIVE_STATES_VERSION) { Log.i(TAG, "Migrating session: " + sessionFile.getAbsolutePath()); sessionRecord = new SessionRecord(serialized); diff --git a/app/witness-verifications.gradle b/app/witness-verifications.gradle index 915fcc24b4..3c2f70dd16 100644 --- a/app/witness-verifications.gradle +++ b/app/witness-verifications.gradle @@ -519,11 +519,11 @@ dependencyVerification { ['org.threeten:threetenbp:1.3.6', 'f4c23ffaaed717c3b99c003e0ee02d6d66377fd47d866fec7d971bd8644fc1a7'], - ['org.whispersystems:signal-client-android:0.1.7', - '1fade2c159934cd34782474fc4a1010b822e7cd22026ac5da1b25098c99ad6f6'], + ['org.whispersystems:signal-client-android:0.5.1', + 'c5b523163612fedcf71a5fb51a85cb5a4f545329ec6cf7d4fc885e830466c2e3'], - ['org.whispersystems:signal-client-java:0.1.7', - '59dd701f9564c2130177ddaca374d14ce54927075955288f85ff8f55565a78f0'], + ['org.whispersystems:signal-client-java:0.5.1', + '682a8094d38a91c8759071b77177ed8196a7137314fdfbb17e819c9ca57a0397'], ['pl.tajchert:waitingdots:0.1.0', '2835d49e0787dbcb606c5a60021ced66578503b1e9fddcd7a5ef0cd5f095ba2c'], diff --git a/libsignal/service/build.gradle b/libsignal/service/build.gradle index a8ced4383f..5739440553 100644 --- a/libsignal/service/build.gradle +++ b/libsignal/service/build.gradle @@ -21,7 +21,7 @@ dependencies { api 'com.googlecode.libphonenumber:libphonenumber:8.12.17' api 'com.fasterxml.jackson.core:jackson-databind:2.9.9.2' - api 'org.whispersystems:signal-client-java:0.1.7' + api 'org.whispersystems:signal-client-java:0.5.1' api 'com.squareup.okhttp3:okhttp:3.12.10' implementation 'org.threeten:threetenbp:1.3.6' diff --git a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/crypto/SignalServiceCipher.java b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/crypto/SignalServiceCipher.java index 27a9252eb3..2dcdc50190 100644 --- a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/crypto/SignalServiceCipher.java +++ b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/crypto/SignalServiceCipher.java @@ -192,7 +192,7 @@ public class SignalServiceCipher { } else if (envelope.isUnidentifiedSender()) { SignalSealedSessionCipher sealedSessionCipher = new SignalSealedSessionCipher(sessionLock, new SealedSessionCipher(signalProtocolStore, localAddress.getUuid().orNull(), localAddress.getNumber().orNull(), 1)); DecryptionResult result = sealedSessionCipher.decrypt(certificateValidator, ciphertext, envelope.getServerReceivedTimestamp()); - SignalServiceAddress resultAddress = new SignalServiceAddress(UuidUtil.parse(result.getSenderUuid().orNull()), result.getSenderE164()); + SignalServiceAddress resultAddress = new SignalServiceAddress(UuidUtil.parse(result.getSenderUuid()), result.getSenderE164()); SignalProtocolAddress protocolAddress = getPreferredProtocolAddress(signalProtocolStore, resultAddress, result.getDeviceId()); paddedMessage = result.getPaddedMessage(); diff --git a/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/contacts/crypto/RemoteAttestationKeys.java b/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/contacts/crypto/RemoteAttestationKeys.java index d21a4de2f3..f1bb3ab6c9 100644 --- a/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/contacts/crypto/RemoteAttestationKeys.java +++ b/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/contacts/crypto/RemoteAttestationKeys.java @@ -21,7 +21,7 @@ public class RemoteAttestationKeys { byte[] publicKeys = ByteUtil.combine(keyPair.getPublicKey().getPublicKeyBytes(), serverPublicEphemeral, serverPublicStatic); HKDFv3 generator = new HKDFv3(); - byte[] keys = generator.deriveSecrets(masterSecret, publicKeys, null, clientKey.length + serverKey.length); + byte[] keys = generator.deriveSecrets(masterSecret, publicKeys, new byte[0], clientKey.length + serverKey.length); System.arraycopy(keys, 0, clientKey, 0, clientKey.length); System.arraycopy(keys, clientKey.length, serverKey, 0, serverKey.length); diff --git a/libsignal/service/witness-verifications.gradle b/libsignal/service/witness-verifications.gradle index 45d83f20c4..a2ebe02129 100644 --- a/libsignal/service/witness-verifications.gradle +++ b/libsignal/service/witness-verifications.gradle @@ -30,7 +30,7 @@ dependencyVerification { ['org.threeten:threetenbp:1.3.6', 'f4c23ffaaed717c3b99c003e0ee02d6d66377fd47d866fec7d971bd8644fc1a7'], - ['org.whispersystems:signal-client-java:0.1.7', - '59dd701f9564c2130177ddaca374d14ce54927075955288f85ff8f55565a78f0'], + ['org.whispersystems:signal-client-java:0.5.1', + '682a8094d38a91c8759071b77177ed8196a7137314fdfbb17e819c9ca57a0397'], ] }