From 31dec5a666dc2d5014137392886bd3cf6a696b88 Mon Sep 17 00:00:00 2001 From: AsamK Date: Sun, 31 Oct 2021 20:53:03 +0100 Subject: [PATCH] Handle UnauthenticatedResponseException internally --- .../java/org/asamk/signal/manager/Manager.java | 3 +-- .../org/asamk/signal/manager/ManagerImpl.java | 4 ++-- .../asamk/signal/manager/helper/PinHelper.java | 16 ++++++++++++---- .../asamk/signal/commands/RemovePinCommand.java | 4 ---- .../org/asamk/signal/commands/SetPinCommand.java | 5 ----- .../org/asamk/signal/dbus/DbusManagerImpl.java | 3 +-- .../org/asamk/signal/dbus/DbusSignalImpl.java | 5 ----- 7 files changed, 16 insertions(+), 24 deletions(-) diff --git a/lib/src/main/java/org/asamk/signal/manager/Manager.java b/lib/src/main/java/org/asamk/signal/manager/Manager.java index 330a83f4..ab750ff0 100644 --- a/lib/src/main/java/org/asamk/signal/manager/Manager.java +++ b/lib/src/main/java/org/asamk/signal/manager/Manager.java @@ -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 pin) throws IOException, UnauthenticatedResponseException; + void setRegistrationLockPin(Optional pin) throws IOException; Profile getRecipientProfile(RecipientIdentifier.Single recipient) throws IOException; diff --git a/lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java b/lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java index 022915a7..ac2cb9c9 100644 --- a/lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java +++ b/lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java @@ -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 pin) throws IOException, UnauthenticatedResponseException { + public void setRegistrationLockPin(java.util.Optional pin) throws IOException { if (!account.isMasterDevice()) { throw new RuntimeException("Only master device can set a PIN"); } diff --git a/lib/src/main/java/org/asamk/signal/manager/helper/PinHelper.java b/lib/src/main/java/org/asamk/signal/manager/helper/PinHelper.java index b0f66f15..888b86ce 100644 --- a/lib/src/main/java/org/asamk/signal/manager/helper/PinHelper.java +++ b/lib/src/main/java/org/asamk/signal/manager/helper/PinHelper.java @@ -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( diff --git a/src/main/java/org/asamk/signal/commands/RemovePinCommand.java b/src/main/java/org/asamk/signal/commands/RemovePinCommand.java index aea5e3be..d173ee63 100644 --- a/src/main/java/org/asamk/signal/commands/RemovePinCommand.java +++ b/src/main/java/org/asamk/signal/commands/RemovePinCommand.java @@ -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); } diff --git a/src/main/java/org/asamk/signal/commands/SetPinCommand.java b/src/main/java/org/asamk/signal/commands/SetPinCommand.java index db900d6d..ea41341d 100644 --- a/src/main/java/org/asamk/signal/commands/SetPinCommand.java +++ b/src/main/java/org/asamk/signal/commands/SetPinCommand.java @@ -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); } diff --git a/src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java b/src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java index 7c886e36..df0bb869 100644 --- a/src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java +++ b/src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java @@ -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 pin) throws IOException, UnauthenticatedResponseException { + public void setRegistrationLockPin(final Optional pin) throws IOException { if (pin.isPresent()) { signal.setPin(pin.get()); } else { diff --git a/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java b/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java index 28187771..0a36376c 100644 --- a/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java +++ b/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java @@ -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()); } -- 2.50.1