]> nmode's Git Repositories - signal-cli/commitdiff
Handle UnauthenticatedResponseException internally
authorAsamK <asamk@gmx.de>
Sun, 31 Oct 2021 19:53:03 +0000 (20:53 +0100)
committerAsamK <asamk@gmx.de>
Sun, 31 Oct 2021 19:53:03 +0000 (20:53 +0100)
lib/src/main/java/org/asamk/signal/manager/Manager.java
lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java
lib/src/main/java/org/asamk/signal/manager/helper/PinHelper.java
src/main/java/org/asamk/signal/commands/RemovePinCommand.java
src/main/java/org/asamk/signal/commands/SetPinCommand.java
src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java
src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java

index 330a83f445af4763999be8d0728c74b43fa1a00c..ab750ff014fd501c50f13bc25e11b59e3e917305 100644 (file)
@@ -30,7 +30,6 @@ import org.whispersystems.signalservice.api.messages.SignalServiceContent;
 import org.whispersystems.signalservice.api.messages.SignalServiceEnvelope;
 import org.whispersystems.signalservice.api.push.SignalServiceAddress;
 import org.whispersystems.signalservice.api.util.PhoneNumberFormatter;
-import org.whispersystems.signalservice.internal.contacts.crypto.UnauthenticatedResponseException;
 
 import java.io.Closeable;
 import java.io.File;
@@ -118,7 +117,7 @@ public interface Manager extends Closeable {
 
     void addDeviceLink(URI linkUri) throws IOException, InvalidDeviceLinkException;
 
-    void setRegistrationLockPin(Optional<String> pin) throws IOException, UnauthenticatedResponseException;
+    void setRegistrationLockPin(Optional<String> pin) throws IOException;
 
     Profile getRecipientProfile(RecipientIdentifier.Single recipient) throws IOException;
 
index 022915a769228d44d45196ecfb77fab31376b89e..ac2cb9c9e120bdcd41e3c91433a3837128f8938a 100644 (file)
@@ -382,7 +382,7 @@ public class ManagerImpl implements Manager {
     public void deleteAccount() throws IOException {
         try {
             pinHelper.removeRegistrationLockPin();
-        } catch (UnauthenticatedResponseException e) {
+        } catch (IOException e) {
             logger.warn("Failed to remove registration lock pin");
         }
         account.setRegistrationLockPin(null, null);
@@ -453,7 +453,7 @@ public class ManagerImpl implements Manager {
     }
 
     @Override
-    public void setRegistrationLockPin(java.util.Optional<String> pin) throws IOException, UnauthenticatedResponseException {
+    public void setRegistrationLockPin(java.util.Optional<String> pin) throws IOException {
         if (!account.isMasterDevice()) {
             throw new RuntimeException("Only master device can set a PIN");
         }
index b0f66f15c1c8630db135ce019cce0d265a363b8d..888b86ce603fd221f71c958e3eb684e4d731030f 100644 (file)
@@ -23,18 +23,26 @@ public class PinHelper {
 
     public void setRegistrationLockPin(
             String pin, MasterKey masterKey
-    ) throws IOException, UnauthenticatedResponseException {
+    ) throws IOException {
         final var pinChangeSession = keyBackupService.newPinChangeSession();
         final var hashedPin = PinHashing.hashPin(pin, pinChangeSession);
 
-        pinChangeSession.setPin(hashedPin, masterKey);
+        try {
+            pinChangeSession.setPin(hashedPin, masterKey);
+        } catch (UnauthenticatedResponseException e) {
+            throw new IOException(e);
+        }
         pinChangeSession.enableRegistrationLock(masterKey);
     }
 
-    public void removeRegistrationLockPin() throws IOException, UnauthenticatedResponseException {
+    public void removeRegistrationLockPin() throws IOException {
         final var pinChangeSession = keyBackupService.newPinChangeSession();
         pinChangeSession.disableRegistrationLock();
-        pinChangeSession.removePin();
+        try {
+            pinChangeSession.removePin();
+        } catch (UnauthenticatedResponseException e) {
+            throw new IOException(e);
+        }
     }
 
     public KbsPinData getRegistrationLockData(
index aea5e3be2967c9195b320f5c13f3857aa6a60a42..d173ee636781235e5fb5274518519b5e72609111 100644 (file)
@@ -6,9 +6,7 @@ import net.sourceforge.argparse4j.inf.Subparser;
 import org.asamk.signal.OutputWriter;
 import org.asamk.signal.commands.exceptions.CommandException;
 import org.asamk.signal.commands.exceptions.IOErrorException;
-import org.asamk.signal.commands.exceptions.UnexpectedErrorException;
 import org.asamk.signal.manager.Manager;
-import org.whispersystems.signalservice.internal.contacts.crypto.UnauthenticatedResponseException;
 
 import java.io.IOException;
 import java.util.Optional;
@@ -31,8 +29,6 @@ public class RemovePinCommand implements JsonRpcLocalCommand {
     ) throws CommandException {
         try {
             m.setRegistrationLockPin(Optional.empty());
-        } catch (UnauthenticatedResponseException e) {
-            throw new UnexpectedErrorException("Remove pin failed with unauthenticated response: " + e.getMessage(), e);
         } catch (IOException e) {
             throw new IOErrorException("Remove pin error: " + e.getMessage(), e);
         }
index db900d6d6cbcac9feba8265d94cc2a703b59363c..ea41341dcc103007f18d011572953cf6b936afa6 100644 (file)
@@ -6,9 +6,7 @@ import net.sourceforge.argparse4j.inf.Subparser;
 import org.asamk.signal.OutputWriter;
 import org.asamk.signal.commands.exceptions.CommandException;
 import org.asamk.signal.commands.exceptions.IOErrorException;
-import org.asamk.signal.commands.exceptions.UnexpectedErrorException;
 import org.asamk.signal.manager.Manager;
-import org.whispersystems.signalservice.internal.contacts.crypto.UnauthenticatedResponseException;
 
 import java.io.IOException;
 import java.util.Optional;
@@ -34,9 +32,6 @@ public class SetPinCommand implements JsonRpcLocalCommand {
         try {
             var registrationLockPin = ns.getString("pin");
             m.setRegistrationLockPin(Optional.of(registrationLockPin));
-        } catch (UnauthenticatedResponseException e) {
-            throw new UnexpectedErrorException("Set pin error failed with unauthenticated response: " + e.getMessage(),
-                    e);
         } catch (IOException e) {
             throw new IOErrorException("Set pin error: " + e.getMessage(), e);
         }
index 7c886e36ed88bdcbe5829ae849b6e57d4ded2169..df0bb86925e2fe63914f5207fb89ea9a1b786ad9 100644 (file)
@@ -37,7 +37,6 @@ import org.whispersystems.signalservice.api.messages.SignalServiceAttachmentRemo
 import org.whispersystems.signalservice.api.push.SignalServiceAddress;
 import org.whispersystems.signalservice.api.push.exceptions.UnregisteredUserException;
 import org.whispersystems.signalservice.api.util.UuidUtil;
-import org.whispersystems.signalservice.internal.contacts.crypto.UnauthenticatedResponseException;
 
 import java.io.File;
 import java.io.IOException;
@@ -167,7 +166,7 @@ public class DbusManagerImpl implements Manager {
     }
 
     @Override
-    public void setRegistrationLockPin(final Optional<String> pin) throws IOException, UnauthenticatedResponseException {
+    public void setRegistrationLockPin(final Optional<String> pin) throws IOException {
         if (pin.isPresent()) {
             signal.setPin(pin.get());
         } else {
index 281877710678abcea505b5307794b639a3c07c23..0a36376ccd1984006814ecde24f09ec5c976afbd 100644 (file)
@@ -34,7 +34,6 @@ import org.freedesktop.dbus.exceptions.DBusExecutionException;
 import org.freedesktop.dbus.types.Variant;
 import org.whispersystems.signalservice.api.messages.SendMessageResult;
 import org.whispersystems.signalservice.api.util.InvalidNumberException;
-import org.whispersystems.signalservice.internal.contacts.crypto.UnauthenticatedResponseException;
 
 import java.io.File;
 import java.io.IOException;
@@ -583,8 +582,6 @@ public class DbusSignalImpl implements Signal {
     public void removePin() {
         try {
             m.setRegistrationLockPin(Optional.empty());
-        } catch (UnauthenticatedResponseException e) {
-            throw new Error.Failure("Remove pin failed with unauthenticated response: " + e.getMessage());
         } catch (IOException e) {
             throw new Error.Failure("Remove pin error: " + e.getMessage());
         }
@@ -594,8 +591,6 @@ public class DbusSignalImpl implements Signal {
     public void setPin(String registrationLockPin) {
         try {
             m.setRegistrationLockPin(Optional.of(registrationLockPin));
-        } catch (UnauthenticatedResponseException e) {
-            throw new Error.Failure("Set pin error failed with unauthenticated response: " + e.getMessage());
         } catch (IOException e) {
             throw new Error.Failure("Set pin error: " + e.getMessage());
         }