]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/SignalDependencies.java
Move credentials provider to SignalAccount
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / SignalDependencies.java
index 970a67415923131f8ae61cf0a6efd936a6bb37c3..90bbbdc40856a59a24462718751e4dfa04b83051 100644 (file)
@@ -3,6 +3,7 @@ package org.asamk.signal.manager;
 import org.asamk.signal.manager.config.ServiceConfig;
 import org.asamk.signal.manager.config.ServiceEnvironmentConfig;
 import org.signal.libsignal.metadata.certificate.CertificateValidator;
+import org.signal.zkgroup.profiles.ClientZkProfileOperations;
 import org.whispersystems.libsignal.util.guava.Optional;
 import org.whispersystems.signalservice.api.KeyBackupService;
 import org.whispersystems.signalservice.api.SignalServiceAccountManager;
@@ -17,9 +18,9 @@ import org.whispersystems.signalservice.api.groupsv2.GroupsV2Api;
 import org.whispersystems.signalservice.api.groupsv2.GroupsV2Operations;
 import org.whispersystems.signalservice.api.push.SignalServiceAddress;
 import org.whispersystems.signalservice.api.services.ProfileService;
+import org.whispersystems.signalservice.api.util.CredentialsProvider;
 import org.whispersystems.signalservice.api.util.UptimeSleepTimer;
 import org.whispersystems.signalservice.api.websocket.WebSocketFactory;
-import org.whispersystems.signalservice.internal.util.DynamicCredentialsProvider;
 import org.whispersystems.signalservice.internal.websocket.WebSocketConnection;
 
 import java.util.concurrent.ExecutorService;
@@ -33,7 +34,7 @@ public class SignalDependencies {
 
     private final ServiceEnvironmentConfig serviceEnvironmentConfig;
     private final String userAgent;
-    private final DynamicCredentialsProvider credentialsProvider;
+    private final CredentialsProvider credentialsProvider;
     private final SignalServiceDataStore dataStore;
     private final ExecutorService executor;
     private final SignalSessionLock sessionLock;
@@ -51,10 +52,10 @@ public class SignalDependencies {
     private ProfileService profileService;
     private SignalServiceCipher cipher;
 
-    public SignalDependencies(
+    SignalDependencies(
             final ServiceEnvironmentConfig serviceEnvironmentConfig,
             final String userAgent,
-            final DynamicCredentialsProvider credentialsProvider,
+            final CredentialsProvider credentialsProvider,
             final SignalServiceDataStore dataStore,
             final ExecutorService executor,
             final SignalSessionLock sessionLock
@@ -67,6 +68,10 @@ public class SignalDependencies {
         this.sessionLock = sessionLock;
     }
 
+    public ServiceEnvironmentConfig getServiceEnvironmentConfig() {
+        return serviceEnvironmentConfig;
+    }
+
     public SignalServiceAccountManager getAccountManager() {
         return getOrCreate(() -> accountManager,
                 () -> accountManager = new SignalServiceAccountManager(serviceEnvironmentConfig.getSignalServiceConfiguration(),
@@ -93,6 +98,11 @@ public class SignalDependencies {
                         : null);
     }
 
+    private ClientZkProfileOperations getClientZkProfileOperations() {
+        final var clientZkOperations = getClientZkOperations();
+        return clientZkOperations == null ? null : clientZkOperations.getProfileOperations();
+    }
+
     public SignalWebSocket getSignalWebSocket() {
         return getOrCreate(() -> signalWebSocket, () -> {
             final var timer = new UptimeSleepTimer();
@@ -126,7 +136,7 @@ public class SignalDependencies {
                 () -> messageReceiver = new SignalServiceMessageReceiver(serviceEnvironmentConfig.getSignalServiceConfiguration(),
                         credentialsProvider,
                         userAgent,
-                        getClientZkOperations().getProfileOperations(),
+                        getClientZkProfileOperations(),
                         ServiceConfig.AUTOMATIC_NETWORK_RETRY));
     }
 
@@ -139,7 +149,7 @@ public class SignalDependencies {
                         userAgent,
                         getSignalWebSocket(),
                         Optional.absent(),
-                        getClientZkOperations().getProfileOperations(),
+                        getClientZkProfileOperations(),
                         executor,
                         ServiceConfig.MAX_ENVELOPE_SIZE,
                         ServiceConfig.AUTOMATIC_NETWORK_RETRY));
@@ -156,7 +166,7 @@ public class SignalDependencies {
 
     public ProfileService getProfileService() {
         return getOrCreate(() -> profileService,
-                () -> profileService = new ProfileService(getClientZkOperations().getProfileOperations(),
+                () -> profileService = new ProfileService(getClientZkProfileOperations(),
                         getMessageReceiver(),
                         getSignalWebSocket()));
     }
@@ -164,8 +174,9 @@ public class SignalDependencies {
     public SignalServiceCipher getCipher() {
         return getOrCreate(() -> cipher, () -> {
             final var certificateValidator = new CertificateValidator(serviceEnvironmentConfig.getUnidentifiedSenderTrustRoot());
-            final var address = new SignalServiceAddress(credentialsProvider.getUuid(), credentialsProvider.getE164());
-            cipher = new SignalServiceCipher(address, dataStore, sessionLock, certificateValidator);
+            final var address = new SignalServiceAddress(credentialsProvider.getAci(), credentialsProvider.getE164());
+            final var deviceId = credentialsProvider.getDeviceId();
+            cipher = new SignalServiceCipher(address, deviceId, dataStore, sessionLock, certificateValidator);
         });
     }