X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/de273586b4106171a3940ce5ec2c2b3712430c8c..a96bd91770880fc53e279f8a0a75e90cd32d078a:/lib/src/main/java/org/asamk/signal/manager/RegistrationManager.java diff --git a/lib/src/main/java/org/asamk/signal/manager/RegistrationManager.java b/lib/src/main/java/org/asamk/signal/manager/RegistrationManager.java index 6ded4d0b..9c1eecce 100644 --- a/lib/src/main/java/org/asamk/signal/manager/RegistrationManager.java +++ b/lib/src/main/java/org/asamk/signal/manager/RegistrationManager.java @@ -40,6 +40,7 @@ import org.whispersystems.signalservice.internal.util.DynamicCredentialsProvider import java.io.Closeable; import java.io.File; import java.io.IOException; +import java.util.Date; import java.util.Locale; public class RegistrationManager implements Closeable { @@ -128,7 +129,7 @@ public class RegistrationManager implements Closeable { account.save(); } - public void verifyAccount( + public Manager verifyAccount( String verificationCode, String pin ) throws IOException, KeyBackupSystemNoDataException, KeyBackupServicePinException { verificationCode = verificationCode.replace("-", ""); @@ -163,20 +164,30 @@ public class RegistrationManager implements Closeable { account.setRegistered(true); account.setUuid(UuidUtil.parseOrNull(response.getUuid())); account.setRegistrationLockPin(pin); - account.getSignalProtocolStore().archiveAllSessions(); - account.getSignalProtocolStore() - .saveIdentity(account.getSelfAddress(), - account.getSignalProtocolStore().getIdentityKeyPair().getPublicKey(), - TrustLevel.TRUSTED_VERIFIED); + account.getSessionStore().archiveAllSessions(); + final var recipientId = account.getRecipientStore().resolveRecipient(account.getSelfAddress()); + final var publicKey = account.getIdentityKeyPair().getPublicKey(); + account.getIdentityKeyStore().saveIdentity(recipientId, publicKey, new Date()); + account.getIdentityKeyStore().setIdentityTrustLevel(recipientId, publicKey, TrustLevel.TRUSTED_VERIFIED); - try (var m = new Manager(account, pathConfig, serviceEnvironmentConfig, userAgent)) { + Manager m = null; + try { + m = new Manager(account, pathConfig, serviceEnvironmentConfig, userAgent); m.refreshPreKeys(); - m.close(false); - } + account.save(); - account.save(); + final var result = m; + account = null; + m = null; + + return result; + } finally { + if (m != null) { + m.close(); + } + } } private VerifyAccountResponse verifyAccountWithCode( @@ -184,7 +195,7 @@ public class RegistrationManager implements Closeable { ) throws IOException { return accountManager.verifyAccountWithCode(verificationCode, null, - account.getSignalProtocolStore().getLocalRegistrationId(), + account.getLocalRegistrationId(), true, legacyPin, registrationLock,