X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/ab95e635cebb33396240cbaaa6eba882350d6877..ce70a623c21a267679d59838d041f9bc1d486cd9:/lib/src/main/java/org/asamk/signal/manager/ProvisioningManager.java diff --git a/lib/src/main/java/org/asamk/signal/manager/ProvisioningManager.java b/lib/src/main/java/org/asamk/signal/manager/ProvisioningManager.java index b0bfebf8..c7876569 100644 --- a/lib/src/main/java/org/asamk/signal/manager/ProvisioningManager.java +++ b/lib/src/main/java/org/asamk/signal/manager/ProvisioningManager.java @@ -20,6 +20,7 @@ import org.asamk.signal.manager.config.ServiceConfig; import org.asamk.signal.manager.config.ServiceEnvironment; import org.asamk.signal.manager.config.ServiceEnvironmentConfig; import org.asamk.signal.manager.storage.SignalAccount; +import org.asamk.signal.manager.storage.identities.TrustNewIdentity; import org.asamk.signal.manager.util.KeyUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -31,8 +32,6 @@ import org.whispersystems.signalservice.api.groupsv2.GroupsV2Operations; 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.api.util.SleepTimer; -import org.whispersystems.signalservice.api.util.UptimeSleepTimer; import org.whispersystems.signalservice.internal.util.DynamicCredentialsProvider; import java.io.File; @@ -61,7 +60,6 @@ public class ProvisioningManager { tempIdentityKey = KeyUtils.generateIdentityKeyPair(); registrationId = KeyHelper.generateRegistrationId(false); password = KeyUtils.createPassword(); - final SleepTimer timer = new UptimeSleepTimer(); GroupsV2Operations groupsV2Operations; try { groupsV2Operations = new GroupsV2Operations(ClientZkOperations.create(serviceEnvironmentConfig.getSignalServiceConfiguration())); @@ -72,8 +70,7 @@ public class ProvisioningManager { new DynamicCredentialsProvider(null, null, password, SignalServiceAddress.DEFAULT_DEVICE_ID), userAgent, groupsV2Operations, - ServiceConfig.AUTOMATIC_NETWORK_RETRY, - timer); + ServiceConfig.AUTOMATIC_NETWORK_RETRY); } public static ProvisioningManager init( @@ -106,6 +103,7 @@ public class ProvisioningManager { ? null : DeviceNameUtil.encryptDeviceName(deviceName, ret.getIdentity().getPrivateKey()); + logger.debug("Finishing new device registration"); var deviceId = accountManager.finishNewDeviceRegistration(ret.getProvisioningCode(), false, true, @@ -125,24 +123,26 @@ public class ProvisioningManager { deviceId, ret.getIdentity(), registrationId, - profileKey); + profileKey, + TrustNewIdentity.ON_FIRST_USE); - Manager m = null; + ManagerImpl m = null; try { - m = new Manager(account, pathConfig, serviceEnvironmentConfig, userAgent); + m = new ManagerImpl(account, pathConfig, serviceEnvironmentConfig, userAgent); + logger.debug("Refreshing pre keys"); try { m.refreshPreKeys(); } catch (Exception e) { - logger.error("Failed to check new account state."); - throw e; + logger.error("Failed to refresh pre keys."); } + logger.debug("Requesting sync data"); try { m.requestAllSyncData(); } catch (Exception e) { - logger.error("Failed to request sync messages from linked device."); - throw e; + logger.error( + "Failed to request sync messages from linked device, data can be requested again with `sendSyncRequest`."); } final var result = m; @@ -162,10 +162,10 @@ public class ProvisioningManager { } } - private boolean canRelinkExistingAccount(final String number) throws UserAlreadyExists, IOException { + private boolean canRelinkExistingAccount(final String number) throws IOException { final SignalAccount signalAccount; try { - signalAccount = SignalAccount.load(pathConfig.getDataPath(), number, false); + signalAccount = SignalAccount.load(pathConfig.getDataPath(), number, false, TrustNewIdentity.ON_FIRST_USE); } catch (IOException e) { logger.debug("Account in use or failed to load.", e); return false; @@ -177,7 +177,7 @@ public class ProvisioningManager { return false; } - final var m = new Manager(signalAccount, pathConfig, serviceEnvironmentConfig, userAgent); + final var m = new ManagerImpl(signalAccount, pathConfig, serviceEnvironmentConfig, userAgent); try (m) { m.checkAccountState(); } catch (AuthorizationFailedException ignored) {