]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/internal/ProvisioningManagerImpl.java
Update libsignal-service
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / internal / ProvisioningManagerImpl.java
index 11a6a05ed11b5cab0c615f92326bb18e2a74a698..fcef536a6d8bb000b3cc3862b98b60ba97cbf78f 100644 (file)
@@ -36,7 +36,8 @@ import org.whispersystems.signalservice.api.push.ServiceIdType;
 import org.whispersystems.signalservice.api.push.SignalServiceAddress;
 import org.whispersystems.signalservice.api.push.exceptions.AuthorizationFailedException;
 import org.whispersystems.signalservice.api.util.DeviceNameUtil;
-import org.whispersystems.signalservice.internal.push.ConfirmCodeMessage;
+import org.whispersystems.signalservice.internal.push.ProvisioningSocket;
+import org.whispersystems.signalservice.internal.push.PushServiceSocket;
 import org.whispersystems.signalservice.internal.util.DynamicCredentialsProvider;
 
 import java.io.IOException;
@@ -45,11 +46,11 @@ import java.nio.channels.OverlappingFileLockException;
 import java.util.concurrent.TimeoutException;
 import java.util.function.Consumer;
 
-import static org.asamk.signal.manager.config.ServiceConfig.getCapabilities;
+import static org.asamk.signal.manager.util.KeyUtils.generatePreKeysForType;
 
 public class ProvisioningManagerImpl implements ProvisioningManager {
 
-    private final static Logger logger = LoggerFactory.getLogger(ProvisioningManagerImpl.class);
+    private static final Logger logger = LoggerFactory.getLogger(ProvisioningManagerImpl.class);
 
     private final PathConfig pathConfig;
     private final ServiceEnvironmentConfig serviceEnvironmentConfig;
@@ -76,13 +77,21 @@ public class ProvisioningManagerImpl implements ProvisioningManager {
 
         tempIdentityKey = KeyUtils.generateIdentityKeyPair();
         password = KeyUtils.createPassword();
-        GroupsV2Operations groupsV2Operations = new GroupsV2Operations(ClientZkOperations.create(
-                serviceEnvironmentConfig.signalServiceConfiguration()), ServiceConfig.GROUP_MAX_SIZE);
-        accountManager = new SignalServiceAccountManager(serviceEnvironmentConfig.signalServiceConfiguration(),
-                new DynamicCredentialsProvider(null, null, null, password, SignalServiceAddress.DEFAULT_DEVICE_ID),
+        final var clientZkOperations = ClientZkOperations.create(serviceEnvironmentConfig.signalServiceConfiguration());
+        final var groupsV2Operations = new GroupsV2Operations(clientZkOperations, ServiceConfig.GROUP_MAX_SIZE);
+        final var credentialsProvider = new DynamicCredentialsProvider(null,
+                null,
+                null,
+                password,
+                SignalServiceAddress.DEFAULT_DEVICE_ID);
+        final var pushServiceSocket = new PushServiceSocket(serviceEnvironmentConfig.signalServiceConfiguration(),
+                credentialsProvider,
                 userAgent,
-                groupsV2Operations,
+                clientZkOperations.getProfileOperations(),
                 ServiceConfig.AUTOMATIC_NETWORK_RETRY);
+        accountManager = new SignalServiceAccountManager(pushServiceSocket,
+                new ProvisioningSocket(serviceEnvironmentConfig.signalServiceConfiguration(), userAgent),
+                groupsV2Operations);
     }
 
     @Override
@@ -140,20 +149,23 @@ public class ProvisioningManagerImpl implements ProvisioningManager {
                     encryptedDeviceName,
                     ret.getAciIdentity(),
                     ret.getPniIdentity(),
-                    profileKey);
+                    profileKey,
+                    ret.getMasterKey(),
+                    ret.getAccountEntropyPool(),
+                    ret.getMediaRootBackupKey());
 
             account.getConfigurationStore().setReadReceipts(ret.isReadReceipts());
 
+            final var aciPreKeys = generatePreKeysForType(account.getAccountData(ServiceIdType.ACI));
+            final var pniPreKeys = generatePreKeysForType(account.getAccountData(ServiceIdType.PNI));
+
             logger.debug("Finishing new device registration");
             var deviceId = accountManager.finishNewDeviceRegistration(ret.getProvisioningCode(),
-                    new ConfirmCodeMessage(false,
-                            true,
-                            account.getAccountData(ServiceIdType.ACI).getLocalRegistrationId(),
-                            account.getAccountData(ServiceIdType.PNI).getLocalRegistrationId(),
-                            encryptedDeviceName,
-                            getCapabilities(false)));
-
-            account.finishLinking(deviceId);
+                    account.getAccountAttributes(null),
+                    aciPreKeys,
+                    pniPreKeys);
+
+            account.finishLinking(deviceId, aciPreKeys, pniPreKeys);
 
             ManagerImpl m = null;
             try {