X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/b810e303ec9d0fcc3ba948b7e65d57f85bffe437..ce7aa580b6f0580cdcf7fd68fcc8efba737d21ed:/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 7801e999..8855e062 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; @@ -94,14 +95,15 @@ public class ProvisioningManager { logger.info("Received link information from {}, linking in progress ...", number); - if (SignalAccount.userExists(pathConfig.getDataPath(), number) && !canRelinkExistingAccount(number)) { - throw new UserAlreadyExists(number, SignalAccount.getFileName(pathConfig.getDataPath(), number)); + if (SignalAccount.userExists(pathConfig.dataPath(), number) && !canRelinkExistingAccount(number)) { + throw new UserAlreadyExists(number, SignalAccount.getFileName(pathConfig.dataPath(), number)); } var encryptedDeviceName = deviceName == null ? null : DeviceNameUtil.encryptDeviceName(deviceName, ret.getIdentity().getPrivateKey()); + logger.debug("Finishing new device registration"); var deviceId = accountManager.finishNewDeviceRegistration(ret.getProvisioningCode(), false, true, @@ -113,7 +115,7 @@ public class ProvisioningManager { SignalAccount account = null; try { - account = SignalAccount.createOrUpdateLinkedAccount(pathConfig.getDataPath(), + account = SignalAccount.createOrUpdateLinkedAccount(pathConfig.dataPath(), number, ret.getUuid(), password, @@ -121,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; @@ -161,7 +165,7 @@ public class ProvisioningManager { private boolean canRelinkExistingAccount(final String number) throws IOException { final SignalAccount signalAccount; try { - signalAccount = SignalAccount.load(pathConfig.getDataPath(), number, false); + signalAccount = SignalAccount.load(pathConfig.dataPath(), number, false, TrustNewIdentity.ON_FIRST_USE); } catch (IOException e) { logger.debug("Account in use or failed to load.", e); return false; @@ -173,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) {