mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-25 11:20:47 +01:00
Update to libsignal-client 0.5.1
This commit is contained in:
@@ -375,7 +375,7 @@ dependencies {
|
|||||||
implementation project(':device-transfer')
|
implementation project(':device-transfer')
|
||||||
|
|
||||||
implementation 'org.signal:zkgroup-android:0.7.0'
|
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.google.protobuf:protobuf-javalite:3.10.0'
|
||||||
|
|
||||||
implementation('com.mobilecoin:android-sdk:1.0.0') {
|
implementation('com.mobilecoin:android-sdk:1.0.0') {
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import org.whispersystems.libsignal.IdentityKey;
|
|||||||
import org.whispersystems.libsignal.IdentityKeyPair;
|
import org.whispersystems.libsignal.IdentityKeyPair;
|
||||||
import org.whispersystems.libsignal.InvalidKeyIdException;
|
import org.whispersystems.libsignal.InvalidKeyIdException;
|
||||||
import org.whispersystems.libsignal.SignalProtocolAddress;
|
import org.whispersystems.libsignal.SignalProtocolAddress;
|
||||||
|
import org.whispersystems.libsignal.groups.state.SenderKeyRecord;
|
||||||
import org.whispersystems.libsignal.state.IdentityKeyStore;
|
import org.whispersystems.libsignal.state.IdentityKeyStore;
|
||||||
import org.whispersystems.libsignal.state.PreKeyRecord;
|
import org.whispersystems.libsignal.state.PreKeyRecord;
|
||||||
import org.whispersystems.libsignal.state.PreKeyStore;
|
import org.whispersystems.libsignal.state.PreKeyStore;
|
||||||
@@ -18,6 +19,7 @@ import org.whispersystems.signalservice.api.SignalServiceProtocolStore;
|
|||||||
import org.whispersystems.signalservice.api.SignalServiceSessionStore;
|
import org.whispersystems.signalservice.api.SignalServiceSessionStore;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
public class SignalProtocolStoreImpl implements SignalServiceProtocolStore {
|
public class SignalProtocolStoreImpl implements SignalServiceProtocolStore {
|
||||||
|
|
||||||
@@ -137,4 +139,14 @@ public class SignalProtocolStoreImpl implements SignalServiceProtocolStore {
|
|||||||
public void removeSignedPreKey(int signedPreKeyId) {
|
public void removeSignedPreKey(int signedPreKeyId) {
|
||||||
signedPreKeyStore.removeSignedPreKey(signedPreKeyId);
|
signedPreKeyStore.removeSignedPreKey(signedPreKeyId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void storeSenderKey(SignalProtocolAddress sender, UUID distributionId, SenderKeyRecord record) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SenderKeyRecord loadSenderKey(SignalProtocolAddress sender, UUID distributionId) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,8 +60,8 @@ public class TextSecureSessionStore implements SignalServiceSessionStore {
|
|||||||
SessionRecord sessionRecord = DatabaseFactory.getSessionDatabase(context).load(recipientId, address.getDeviceId());
|
SessionRecord sessionRecord = DatabaseFactory.getSessionDatabase(context).load(recipientId, address.getDeviceId());
|
||||||
|
|
||||||
return sessionRecord != null &&
|
return sessionRecord != null &&
|
||||||
sessionRecord.getSessionState().hasSenderChain() &&
|
sessionRecord.hasSenderChain() &&
|
||||||
sessionRecord.getSessionState().getSessionVersion() == CiphertextMessage.CURRENT_VERSION;
|
sessionRecord.getSessionVersion() == CiphertextMessage.CURRENT_VERSION;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import org.signal.core.util.Conversions;
|
|||||||
import org.signal.core.util.logging.Log;
|
import org.signal.core.util.logging.Log;
|
||||||
import org.thoughtcrime.securesms.database.SessionDatabase;
|
import org.thoughtcrime.securesms.database.SessionDatabase;
|
||||||
import org.whispersystems.libsignal.state.SessionRecord;
|
import org.whispersystems.libsignal.state.SessionRecord;
|
||||||
import org.whispersystems.libsignal.state.SessionState;
|
|
||||||
import org.whispersystems.signalservice.api.push.SignalServiceAddress;
|
import org.whispersystems.signalservice.api.push.SignalServiceAddress;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@@ -64,9 +63,7 @@ class SessionStoreMigrationHelper {
|
|||||||
|
|
||||||
if (versionMarker == SINGLE_STATE_VERSION) {
|
if (versionMarker == SINGLE_STATE_VERSION) {
|
||||||
Log.i(TAG, "Migrating single state version: " + sessionFile.getAbsolutePath());
|
Log.i(TAG, "Migrating single state version: " + sessionFile.getAbsolutePath());
|
||||||
SessionState sessionState = new SessionState(serialized);
|
sessionRecord = new SessionRecord(serialized);
|
||||||
|
|
||||||
sessionRecord = new SessionRecord(sessionState);
|
|
||||||
} else if (versionMarker >= ARCHIVE_STATES_VERSION) {
|
} else if (versionMarker >= ARCHIVE_STATES_VERSION) {
|
||||||
Log.i(TAG, "Migrating session: " + sessionFile.getAbsolutePath());
|
Log.i(TAG, "Migrating session: " + sessionFile.getAbsolutePath());
|
||||||
sessionRecord = new SessionRecord(serialized);
|
sessionRecord = new SessionRecord(serialized);
|
||||||
|
|||||||
@@ -519,11 +519,11 @@ dependencyVerification {
|
|||||||
['org.threeten:threetenbp:1.3.6',
|
['org.threeten:threetenbp:1.3.6',
|
||||||
'f4c23ffaaed717c3b99c003e0ee02d6d66377fd47d866fec7d971bd8644fc1a7'],
|
'f4c23ffaaed717c3b99c003e0ee02d6d66377fd47d866fec7d971bd8644fc1a7'],
|
||||||
|
|
||||||
['org.whispersystems:signal-client-android:0.1.7',
|
['org.whispersystems:signal-client-android:0.5.1',
|
||||||
'1fade2c159934cd34782474fc4a1010b822e7cd22026ac5da1b25098c99ad6f6'],
|
'c5b523163612fedcf71a5fb51a85cb5a4f545329ec6cf7d4fc885e830466c2e3'],
|
||||||
|
|
||||||
['org.whispersystems:signal-client-java:0.1.7',
|
['org.whispersystems:signal-client-java:0.5.1',
|
||||||
'59dd701f9564c2130177ddaca374d14ce54927075955288f85ff8f55565a78f0'],
|
'682a8094d38a91c8759071b77177ed8196a7137314fdfbb17e819c9ca57a0397'],
|
||||||
|
|
||||||
['pl.tajchert:waitingdots:0.1.0',
|
['pl.tajchert:waitingdots:0.1.0',
|
||||||
'2835d49e0787dbcb606c5a60021ced66578503b1e9fddcd7a5ef0cd5f095ba2c'],
|
'2835d49e0787dbcb606c5a60021ced66578503b1e9fddcd7a5ef0cd5f095ba2c'],
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ dependencies {
|
|||||||
api 'com.googlecode.libphonenumber:libphonenumber:8.12.17'
|
api 'com.googlecode.libphonenumber:libphonenumber:8.12.17'
|
||||||
api 'com.fasterxml.jackson.core:jackson-databind:2.9.9.2'
|
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'
|
api 'com.squareup.okhttp3:okhttp:3.12.10'
|
||||||
implementation 'org.threeten:threetenbp:1.3.6'
|
implementation 'org.threeten:threetenbp:1.3.6'
|
||||||
|
|
||||||
|
|||||||
@@ -192,7 +192,7 @@ public class SignalServiceCipher {
|
|||||||
} else if (envelope.isUnidentifiedSender()) {
|
} else if (envelope.isUnidentifiedSender()) {
|
||||||
SignalSealedSessionCipher sealedSessionCipher = new SignalSealedSessionCipher(sessionLock, new SealedSessionCipher(signalProtocolStore, localAddress.getUuid().orNull(), localAddress.getNumber().orNull(), 1));
|
SignalSealedSessionCipher sealedSessionCipher = new SignalSealedSessionCipher(sessionLock, new SealedSessionCipher(signalProtocolStore, localAddress.getUuid().orNull(), localAddress.getNumber().orNull(), 1));
|
||||||
DecryptionResult result = sealedSessionCipher.decrypt(certificateValidator, ciphertext, envelope.getServerReceivedTimestamp());
|
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());
|
SignalProtocolAddress protocolAddress = getPreferredProtocolAddress(signalProtocolStore, resultAddress, result.getDeviceId());
|
||||||
|
|
||||||
paddedMessage = result.getPaddedMessage();
|
paddedMessage = result.getPaddedMessage();
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ public class RemoteAttestationKeys {
|
|||||||
byte[] publicKeys = ByteUtil.combine(keyPair.getPublicKey().getPublicKeyBytes(), serverPublicEphemeral, serverPublicStatic);
|
byte[] publicKeys = ByteUtil.combine(keyPair.getPublicKey().getPublicKeyBytes(), serverPublicEphemeral, serverPublicStatic);
|
||||||
|
|
||||||
HKDFv3 generator = new HKDFv3();
|
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, 0, clientKey, 0, clientKey.length);
|
||||||
System.arraycopy(keys, clientKey.length, serverKey, 0, serverKey.length);
|
System.arraycopy(keys, clientKey.length, serverKey, 0, serverKey.length);
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ dependencyVerification {
|
|||||||
['org.threeten:threetenbp:1.3.6',
|
['org.threeten:threetenbp:1.3.6',
|
||||||
'f4c23ffaaed717c3b99c003e0ee02d6d66377fd47d866fec7d971bd8644fc1a7'],
|
'f4c23ffaaed717c3b99c003e0ee02d6d66377fd47d866fec7d971bd8644fc1a7'],
|
||||||
|
|
||||||
['org.whispersystems:signal-client-java:0.1.7',
|
['org.whispersystems:signal-client-java:0.5.1',
|
||||||
'59dd701f9564c2130177ddaca374d14ce54927075955288f85ff8f55565a78f0'],
|
'682a8094d38a91c8759071b77177ed8196a7137314fdfbb17e819c9ca57a0397'],
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user