]> nmode's Git Repositories - signal-cli/commitdiff
Ignore failures from SVR v1 pin
authorAsamK <asamk@gmx.de>
Tue, 17 Oct 2023 11:34:09 +0000 (13:34 +0200)
committerAsamK <asamk@gmx.de>
Tue, 17 Oct 2023 11:34:09 +0000 (13:34 +0200)
lib/src/main/java/org/asamk/signal/manager/helper/AccountHelper.java
lib/src/main/java/org/asamk/signal/manager/helper/Context.java
lib/src/main/java/org/asamk/signal/manager/helper/PinHelper.java
lib/src/main/java/org/asamk/signal/manager/internal/RegistrationManagerImpl.java

index e021cc37c4b10de6b67268d519fe6fd610a604c5..f2002347fd652a7cb890515f20f2bbdb930d6834 100644 (file)
@@ -416,12 +416,14 @@ public class AccountHelper {
         var masterKey = account.getOrCreatePinMasterKey();
 
         context.getPinHelper().migrateRegistrationLockPin(account.getRegistrationLockPin(), masterKey);
         var masterKey = account.getOrCreatePinMasterKey();
 
         context.getPinHelper().migrateRegistrationLockPin(account.getRegistrationLockPin(), masterKey);
+        dependencies.getAccountManager().enableRegistrationLock(masterKey);
     }
 
     public void setRegistrationPin(String pin) throws IOException {
         var masterKey = account.getOrCreatePinMasterKey();
 
         context.getPinHelper().setRegistrationLockPin(pin, masterKey);
     }
 
     public void setRegistrationPin(String pin) throws IOException {
         var masterKey = account.getOrCreatePinMasterKey();
 
         context.getPinHelper().setRegistrationLockPin(pin, masterKey);
+        dependencies.getAccountManager().enableRegistrationLock(masterKey);
 
         account.setRegistrationLockPin(pin);
     }
 
         account.setRegistrationLockPin(pin);
     }
@@ -429,6 +431,7 @@ public class AccountHelper {
     public void removeRegistrationPin() throws IOException {
         // Remove KBS Pin
         context.getPinHelper().removeRegistrationLockPin();
     public void removeRegistrationPin() throws IOException {
         // Remove KBS Pin
         context.getPinHelper().removeRegistrationLockPin();
+        dependencies.getAccountManager().disableRegistrationLock();
 
         account.setRegistrationLockPin(null);
     }
 
         account.setRegistrationLockPin(null);
     }
index a11ea470320b08f594e1a0fc663ddec9c8034e38..ed0cf3914c6cb20080fd568e964c29b78516e867 100644 (file)
@@ -6,6 +6,7 @@ import org.asamk.signal.manager.storage.AttachmentStore;
 import org.asamk.signal.manager.storage.AvatarStore;
 import org.asamk.signal.manager.storage.SignalAccount;
 import org.asamk.signal.manager.storage.stickerPacks.StickerPackStore;
 import org.asamk.signal.manager.storage.AvatarStore;
 import org.asamk.signal.manager.storage.SignalAccount;
 import org.asamk.signal.manager.storage.stickerPacks.StickerPackStore;
+import org.whispersystems.signalservice.api.svr.SecureValueRecoveryV1;
 
 import java.util.function.Supplier;
 
 
 import java.util.function.Supplier;
 
@@ -115,9 +116,9 @@ public class Context {
 
     PinHelper getPinHelper() {
         return getOrCreate(() -> pinHelper,
 
     PinHelper getPinHelper() {
         return getOrCreate(() -> pinHelper,
-                () -> pinHelper = new PinHelper(dependencies.getKeyBackupService(),
-                        dependencies.getFallbackKeyBackupServices(),
-                        dependencies.getSecureValueRecoveryV2()));
+                () -> pinHelper = new PinHelper(new SecureValueRecoveryV1(dependencies.getKeyBackupService()),
+                        dependencies.getSecureValueRecoveryV2(),
+                        dependencies.getFallbackKeyBackupServices()));
     }
 
     public PreKeyHelper getPreKeyHelper() {
     }
 
     public PreKeyHelper getPreKeyHelper() {
index dcd89f206af626f49959cbac88f12ad7f8079dfd..d8c801be90009050bf72a9653564721cc9f4ed82 100644 (file)
@@ -5,11 +5,9 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.whispersystems.signalservice.api.KeyBackupService;
 import org.whispersystems.signalservice.api.kbs.MasterKey;
 import org.slf4j.LoggerFactory;
 import org.whispersystems.signalservice.api.KeyBackupService;
 import org.whispersystems.signalservice.api.kbs.MasterKey;
-import org.whispersystems.signalservice.api.kbs.PinHashUtil;
 import org.whispersystems.signalservice.api.svr.SecureValueRecovery;
 import org.whispersystems.signalservice.api.svr.SecureValueRecoveryV1;
 import org.whispersystems.signalservice.api.svr.SecureValueRecoveryV2;
 import org.whispersystems.signalservice.api.svr.SecureValueRecovery;
 import org.whispersystems.signalservice.api.svr.SecureValueRecoveryV1;
 import org.whispersystems.signalservice.api.svr.SecureValueRecoveryV2;
-import org.whispersystems.signalservice.internal.contacts.crypto.UnauthenticatedResponseException;
 import org.whispersystems.signalservice.internal.push.AuthCredentials;
 import org.whispersystems.signalservice.internal.push.LockedException;
 
 import org.whispersystems.signalservice.internal.push.AuthCredentials;
 import org.whispersystems.signalservice.internal.push.LockedException;
 
@@ -20,35 +18,24 @@ public class PinHelper {
 
     private final static Logger logger = LoggerFactory.getLogger(PinHelper.class);
 
 
     private final static Logger logger = LoggerFactory.getLogger(PinHelper.class);
 
-    private final KeyBackupService keyBackupService;
     private final SecureValueRecoveryV1 secureValueRecoveryV1;
     private final SecureValueRecoveryV2 secureValueRecoveryV2;
     private final Collection<KeyBackupService> fallbackKeyBackupServices;
 
     public PinHelper(
     private final SecureValueRecoveryV1 secureValueRecoveryV1;
     private final SecureValueRecoveryV2 secureValueRecoveryV2;
     private final Collection<KeyBackupService> fallbackKeyBackupServices;
 
     public PinHelper(
-            final KeyBackupService keyBackupService,
-            final Collection<KeyBackupService> fallbackKeyBackupServices,
-            SecureValueRecoveryV2 secureValueRecoveryV2
+            final SecureValueRecoveryV1 secureValueRecoveryV1,
+            final SecureValueRecoveryV2 secureValueRecoveryV2,
+            final Collection<KeyBackupService> fallbackKeyBackupServices
     ) {
     ) {
-        this.keyBackupService = keyBackupService;
         this.fallbackKeyBackupServices = fallbackKeyBackupServices;
         this.fallbackKeyBackupServices = fallbackKeyBackupServices;
-        this.secureValueRecoveryV1 = new SecureValueRecoveryV1(keyBackupService);
+        this.secureValueRecoveryV1 = secureValueRecoveryV1;
         this.secureValueRecoveryV2 = secureValueRecoveryV2;
     }
 
     public void setRegistrationLockPin(
             String pin, MasterKey masterKey
     ) throws IOException {
         this.secureValueRecoveryV2 = secureValueRecoveryV2;
     }
 
     public void setRegistrationLockPin(
             String pin, MasterKey masterKey
     ) throws IOException {
-        final var pinChangeSession = keyBackupService.newPinChangeSession();
-        final var hashedPin = PinHashUtil.hashPin(pin, pinChangeSession.hashSalt());
-
-        try {
-            pinChangeSession.setPin(hashedPin, masterKey);
-        } catch (UnauthenticatedResponseException e) {
-            throw new IOException(e);
-        }
-        pinChangeSession.enableRegistrationLock(masterKey);
-
+        secureValueRecoveryV1.setPin(pin, masterKey).execute();
         final var backupResponse = secureValueRecoveryV2.setPin(pin, masterKey).execute();
         if (backupResponse instanceof SecureValueRecovery.BackupResponse.Success) {
         } else if (backupResponse instanceof SecureValueRecovery.BackupResponse.ServerRejected) {
         final var backupResponse = secureValueRecoveryV2.setPin(pin, masterKey).execute();
         if (backupResponse instanceof SecureValueRecovery.BackupResponse.Success) {
         } else if (backupResponse instanceof SecureValueRecovery.BackupResponse.ServerRejected) {
@@ -80,14 +67,7 @@ public class PinHelper {
     }
 
     public void removeRegistrationLockPin() throws IOException {
     }
 
     public void removeRegistrationLockPin() throws IOException {
-        final var pinChangeSession = keyBackupService.newPinChangeSession();
-        pinChangeSession.disableRegistrationLock();
-        try {
-            pinChangeSession.removePin();
-        } catch (UnauthenticatedResponseException e) {
-            throw new IOException(e);
-        }
-
+        secureValueRecoveryV1.deleteData();
         final var deleteResponse = secureValueRecoveryV2.deleteData();
         if (deleteResponse instanceof SecureValueRecovery.DeleteResponse.Success) {
         } else if (deleteResponse instanceof SecureValueRecovery.DeleteResponse.ServerRejected) {
         final var deleteResponse = secureValueRecoveryV2.deleteData();
         if (deleteResponse instanceof SecureValueRecovery.DeleteResponse.Success) {
         } else if (deleteResponse instanceof SecureValueRecovery.DeleteResponse.ServerRejected) {
index 793f2f4985d1522cd7ee487547a0e653ae202f93..815cc8f13cfc8350fcb59f9af97117c92d4c26e7 100644 (file)
@@ -45,6 +45,7 @@ import org.whispersystems.signalservice.api.push.ServiceIdType;
 import org.whispersystems.signalservice.api.push.SignalServiceAddress;
 import org.whispersystems.signalservice.api.push.exceptions.AlreadyVerifiedException;
 import org.whispersystems.signalservice.api.push.exceptions.DeprecatedVersionException;
 import org.whispersystems.signalservice.api.push.SignalServiceAddress;
 import org.whispersystems.signalservice.api.push.exceptions.AlreadyVerifiedException;
 import org.whispersystems.signalservice.api.push.exceptions.DeprecatedVersionException;
+import org.whispersystems.signalservice.api.svr.SecureValueRecoveryV1;
 import org.whispersystems.signalservice.internal.push.VerifyAccountResponse;
 import org.whispersystems.signalservice.internal.util.DynamicCredentialsProvider;
 
 import org.whispersystems.signalservice.internal.push.VerifyAccountResponse;
 import org.whispersystems.signalservice.internal.util.DynamicCredentialsProvider;
 
@@ -108,7 +109,9 @@ public class RegistrationManagerImpl implements RegistrationManager {
                         10))
                 .toList();
         final var secureValueRecoveryV2 = accountManager.getSecureValueRecoveryV2(serviceEnvironmentConfig.svr2Mrenclave());
                         10))
                 .toList();
         final var secureValueRecoveryV2 = accountManager.getSecureValueRecoveryV2(serviceEnvironmentConfig.svr2Mrenclave());
-        this.pinHelper = new PinHelper(keyBackupService, fallbackKeyBackupServices, secureValueRecoveryV2);
+        this.pinHelper = new PinHelper(new SecureValueRecoveryV1(keyBackupService),
+                secureValueRecoveryV2,
+                fallbackKeyBackupServices);
     }
 
     @Override
     }
 
     @Override