]> nmode's Git Repositories - signal-cli/commitdiff
Update libsignal-service-java
authorAsamK <asamk@gmx.de>
Fri, 11 Feb 2022 19:33:12 +0000 (20:33 +0100)
committerAsamK <asamk@gmx.de>
Fri, 11 Feb 2022 21:52:06 +0000 (22:52 +0100)
lib/build.gradle.kts
lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java
lib/src/main/java/org/asamk/signal/manager/RegistrationManagerImpl.java
lib/src/main/java/org/asamk/signal/manager/SignalDependencies.java
lib/src/main/java/org/asamk/signal/manager/helper/AccountHelper.java
lib/src/main/java/org/asamk/signal/manager/storage/SignalAccount.java
lib/src/main/java/org/asamk/signal/manager/storage/protocol/SignalProtocolStore.java

index 5b891b8bae6b378accf30fed4519fcbf5eca1628..5c3d8443e7460f9cb5f9489c5d380621d48bc2b5 100644 (file)
@@ -14,7 +14,7 @@ repositories {
 }
 
 dependencies {
 }
 
 dependencies {
-    implementation("com.github.turasa", "signal-service-java", "2.15.3_unofficial_39")
+    implementation("com.github.turasa", "signal-service-java", "2.15.3_unofficial_41")
     implementation("com.fasterxml.jackson.core", "jackson-databind", "2.13.1")
     implementation("com.google.protobuf", "protobuf-javalite", "3.11.4")
     implementation("org.bouncycastle", "bcprov-jdk15on", "1.70")
     implementation("com.fasterxml.jackson.core", "jackson-databind", "2.13.1")
     implementation("com.google.protobuf", "protobuf-javalite", "3.11.4")
     implementation("org.bouncycastle", "bcprov-jdk15on", "1.70")
index fa50071209c141b5bc96aeee6eccad64bfa92ecf..c06436049542ceba826738b19b9f3933d1828c79 100644 (file)
@@ -133,7 +133,7 @@ class ManagerImpl implements Manager {
         this.dependencies = new SignalDependencies(serviceEnvironmentConfig,
                 userAgent,
                 account.getCredentialsProvider(),
         this.dependencies = new SignalDependencies(serviceEnvironmentConfig,
                 userAgent,
                 account.getCredentialsProvider(),
-                account.getSignalProtocolStore(),
+                account.getSignalServiceDataStore(),
                 executor,
                 sessionLock);
         final var avatarStore = new AvatarStore(pathConfig.avatarsPath());
                 executor,
                 sessionLock);
         final var avatarStore = new AvatarStore(pathConfig.avatarsPath());
index 97c0adf2e56ff520b2a26b2ae79a076a190e16d3..599c55a4652d9202556183956e985adda382cef1 100644 (file)
@@ -153,8 +153,7 @@ class RegistrationManagerImpl implements RegistrationManager {
                     userAgent,
                     null,
                     ServiceConfig.AUTOMATIC_NETWORK_RETRY);
                     userAgent,
                     null,
                     ServiceConfig.AUTOMATIC_NETWORK_RETRY);
-            accountManager.setAccountAttributes(account.getEncryptedDeviceName(),
-                    null,
+            accountManager.setAccountAttributes(null,
                     account.getLocalRegistrationId(),
                     true,
                     null,
                     account.getLocalRegistrationId(),
                     true,
                     null,
@@ -162,7 +161,8 @@ class RegistrationManagerImpl implements RegistrationManager {
                     account.getSelfUnidentifiedAccessKey(),
                     account.isUnrestrictedUnidentifiedAccess(),
                     capabilities,
                     account.getSelfUnidentifiedAccessKey(),
                     account.isUnrestrictedUnidentifiedAccess(),
                     capabilities,
-                    account.isDiscoverableByPhoneNumber());
+                    account.isDiscoverableByPhoneNumber(),
+                    account.getEncryptedDeviceName());
             account.setRegistered(true);
             logger.info("Reactivated existing account, verify is not necessary.");
             if (newManagerListener != null) {
             account.setRegistered(true);
             logger.info("Reactivated existing account, verify is not necessary.");
             if (newManagerListener != null) {
index 4597d5859aba86286fc3c0a1bd666ba701058975..450abaaca6a034721da3bb1882a615d95a4e1f85 100644 (file)
@@ -90,8 +90,8 @@ public class SignalDependencies {
         return new SignalServiceAccountManager(getServiceEnvironmentConfig().getSignalServiceConfiguration(),
                 null,
                 number,
         return new SignalServiceAccountManager(getServiceEnvironmentConfig().getSignalServiceConfiguration(),
                 null,
                 number,
-                password,
                 SignalServiceAddress.DEFAULT_DEVICE_ID,
                 SignalServiceAddress.DEFAULT_DEVICE_ID,
+                password,
                 userAgent,
                 ServiceConfig.AUTOMATIC_NETWORK_RETRY);
     }
                 userAgent,
                 ServiceConfig.AUTOMATIC_NETWORK_RETRY);
     }
@@ -191,7 +191,7 @@ public class SignalDependencies {
             final var certificateValidator = new CertificateValidator(serviceEnvironmentConfig.getUnidentifiedSenderTrustRoot());
             final var address = new SignalServiceAddress(credentialsProvider.getAci(), credentialsProvider.getE164());
             final var deviceId = credentialsProvider.getDeviceId();
             final var certificateValidator = new CertificateValidator(serviceEnvironmentConfig.getUnidentifiedSenderTrustRoot());
             final var address = new SignalServiceAddress(credentialsProvider.getAci(), credentialsProvider.getE164());
             final var deviceId = credentialsProvider.getDeviceId();
-            cipher = new SignalServiceCipher(address, deviceId, dataStore, sessionLock, certificateValidator);
+            cipher = new SignalServiceCipher(address, deviceId, dataStore.aci(), sessionLock, certificateValidator);
         });
     }
 
         });
     }
 
index 724c2c49da84f9fa8a30dfc418bfe29e637060df..90a2621715894bb3fa4710983929132c2cf6bae4 100644 (file)
@@ -114,8 +114,7 @@ public class AccountHelper {
 
     public void updateAccountAttributes() throws IOException {
         dependencies.getAccountManager()
 
     public void updateAccountAttributes() throws IOException {
         dependencies.getAccountManager()
-                .setAccountAttributes(account.getEncryptedDeviceName(),
-                        null,
+                .setAccountAttributes(null,
                         account.getLocalRegistrationId(),
                         true,
                         null,
                         account.getLocalRegistrationId(),
                         true,
                         null,
@@ -123,7 +122,8 @@ public class AccountHelper {
                         account.getSelfUnidentifiedAccessKey(),
                         account.isUnrestrictedUnidentifiedAccess(),
                         ServiceConfig.capabilities,
                         account.getSelfUnidentifiedAccessKey(),
                         account.isUnrestrictedUnidentifiedAccess(),
                         ServiceConfig.capabilities,
-                        account.isDiscoverableByPhoneNumber());
+                        account.isDiscoverableByPhoneNumber(),
+                        account.getEncryptedDeviceName());
     }
 
     public void addDevice(DeviceLinkInfo deviceLinkInfo) throws IOException, InvalidDeviceLinkException {
     }
 
     public void addDevice(DeviceLinkInfo deviceLinkInfo) throws IOException, InvalidDeviceLinkException {
index 166855a9770b8447baf8aacf90925e4a6ec54baf..87be95b443aa04d202d6e6aff61d5cd1afae4708 100644 (file)
@@ -44,9 +44,12 @@ import org.whispersystems.libsignal.state.PreKeyRecord;
 import org.whispersystems.libsignal.state.SessionRecord;
 import org.whispersystems.libsignal.state.SignedPreKeyRecord;
 import org.whispersystems.libsignal.util.Medium;
 import org.whispersystems.libsignal.state.SessionRecord;
 import org.whispersystems.libsignal.state.SignedPreKeyRecord;
 import org.whispersystems.libsignal.util.Medium;
+import org.whispersystems.signalservice.api.SignalServiceAccountDataStore;
+import org.whispersystems.signalservice.api.SignalServiceDataStore;
 import org.whispersystems.signalservice.api.crypto.UnidentifiedAccess;
 import org.whispersystems.signalservice.api.kbs.MasterKey;
 import org.whispersystems.signalservice.api.push.ACI;
 import org.whispersystems.signalservice.api.crypto.UnidentifiedAccess;
 import org.whispersystems.signalservice.api.kbs.MasterKey;
 import org.whispersystems.signalservice.api.push.ACI;
+import org.whispersystems.signalservice.api.push.AccountIdentifier;
 import org.whispersystems.signalservice.api.push.DistributionId;
 import org.whispersystems.signalservice.api.push.SignalServiceAddress;
 import org.whispersystems.signalservice.api.storage.StorageKey;
 import org.whispersystems.signalservice.api.push.DistributionId;
 import org.whispersystems.signalservice.api.push.SignalServiceAddress;
 import org.whispersystems.signalservice.api.storage.StorageKey;
@@ -814,7 +817,31 @@ public class SignalAccount implements Closeable {
         save();
     }
 
         save();
     }
 
-    public SignalProtocolStore getSignalProtocolStore() {
+    public SignalServiceDataStore getSignalServiceDataStore() {
+        return new SignalServiceDataStore() {
+            @Override
+            public SignalServiceAccountDataStore get(final AccountIdentifier accountIdentifier) {
+                return getSignalServiceAccountDataStore();
+            }
+
+            @Override
+            public SignalServiceAccountDataStore aci() {
+                return getSignalServiceAccountDataStore();
+            }
+
+            @Override
+            public SignalServiceAccountDataStore pni() {
+                return getSignalServiceAccountDataStore();
+            }
+
+            @Override
+            public boolean isMultiDevice() {
+                return SignalAccount.this.isMultiDevice();
+            }
+        };
+    }
+
+    public SignalServiceAccountDataStore getSignalServiceAccountDataStore() {
         return getOrCreate(() -> signalProtocolStore,
                 () -> signalProtocolStore = new SignalProtocolStore(getPreKeyStore(),
                         getSignedPreKeyStore(),
         return getOrCreate(() -> signalProtocolStore,
                 () -> signalProtocolStore = new SignalProtocolStore(getPreKeyStore(),
                         getSignedPreKeyStore(),
@@ -957,8 +984,8 @@ public class SignalAccount implements Closeable {
         return getRecipientStore().resolveRecipient(getSelfRecipientAddress());
     }
 
         return getRecipientStore().resolveRecipient(getSelfRecipientAddress());
     }
 
-    public String getEncryptedDeviceName() {
-        return encryptedDeviceName;
+    public byte[] getEncryptedDeviceName() {
+        return encryptedDeviceName == null ? null : Base64.getDecoder().decode(encryptedDeviceName);
     }
 
     public void setEncryptedDeviceName(final String encryptedDeviceName) {
     }
 
     public void setEncryptedDeviceName(final String encryptedDeviceName) {
index 7f2004592107190dda5789765002ff832eca8206..d7fb3b4737dcbba44c4c6241c88245f0180d4c66 100644 (file)
@@ -12,7 +12,7 @@ import org.whispersystems.libsignal.state.PreKeyStore;
 import org.whispersystems.libsignal.state.SessionRecord;
 import org.whispersystems.libsignal.state.SignedPreKeyRecord;
 import org.whispersystems.libsignal.state.SignedPreKeyStore;
 import org.whispersystems.libsignal.state.SessionRecord;
 import org.whispersystems.libsignal.state.SignedPreKeyRecord;
 import org.whispersystems.libsignal.state.SignedPreKeyStore;
-import org.whispersystems.signalservice.api.SignalServiceDataStore;
+import org.whispersystems.signalservice.api.SignalServiceAccountDataStore;
 import org.whispersystems.signalservice.api.SignalServiceSenderKeyStore;
 import org.whispersystems.signalservice.api.SignalServiceSessionStore;
 import org.whispersystems.signalservice.api.push.DistributionId;
 import org.whispersystems.signalservice.api.SignalServiceSenderKeyStore;
 import org.whispersystems.signalservice.api.SignalServiceSessionStore;
 import org.whispersystems.signalservice.api.push.DistributionId;
@@ -23,7 +23,7 @@ import java.util.Set;
 import java.util.UUID;
 import java.util.function.Supplier;
 
 import java.util.UUID;
 import java.util.function.Supplier;
 
-public class SignalProtocolStore implements SignalServiceDataStore {
+public class SignalProtocolStore implements SignalServiceAccountDataStore {
 
     private final PreKeyStore preKeyStore;
     private final SignedPreKeyStore signedPreKeyStore;
 
     private final PreKeyStore preKeyStore;
     private final SignedPreKeyStore signedPreKeyStore;
@@ -131,6 +131,7 @@ public class SignalProtocolStore implements SignalServiceDataStore {
     @Override
     public void archiveSession(final SignalProtocolAddress address) {
         sessionStore.archiveSession(address);
     @Override
     public void archiveSession(final SignalProtocolAddress address) {
         sessionStore.archiveSession(address);
+        senderKeyStore.clearSenderKeySharedWith(List.of(address));
     }
 
     @Override
     }
 
     @Override
@@ -196,11 +197,4 @@ public class SignalProtocolStore implements SignalServiceDataStore {
     public boolean isMultiDevice() {
         return isMultiDevice.get();
     }
     public boolean isMultiDevice() {
         return isMultiDevice.get();
     }
-
-    @Override
-    public Transaction beginTransaction() {
-        return () -> {
-            // No-op transaction should be safe, as it's only a performance improvement
-        };
-    }
 }
 }