diff --git a/src/main/java/org/cryptomator/common/recovery/MasterkeyService.java b/src/main/java/org/cryptomator/common/recovery/MasterkeyService.java index 42a152d95..a9f311b1d 100644 --- a/src/main/java/org/cryptomator/common/recovery/MasterkeyService.java +++ b/src/main/java/org/cryptomator/common/recovery/MasterkeyService.java @@ -41,8 +41,9 @@ public final class MasterkeyService { return masterkeyFileAccess.load(masterkeyFilePath, password); } - public static Optional validateRecoveryKeyAndDetectCombo(RecoveryKeyFactory recoveryKeyFactory, Vault vault, String recoveryKey, MasterkeyFileAccess masterkeyFileAccess, AtomicBoolean illegalArgumentExceptionOccurred) { - + public static Optional validateRecoveryKeyAndDetectCombo(RecoveryKeyFactory recoveryKeyFactory, // + Vault vault, String recoveryKey, // + MasterkeyFileAccess masterkeyFileAccess) throws IllegalArgumentException { String tmpPass = UUID.randomUUID().toString(); try (RecoveryDirectory recoveryDirectory = RecoveryDirectory.create(vault.getPath())) { Path tempRecoveryPath = recoveryDirectory.getRecoveryPath(); @@ -54,15 +55,9 @@ public final class MasterkeyService { } catch (IOException | CryptoException e) { LOG.info("Recovery key validation failed", e); return Optional.empty(); - } catch (IllegalArgumentException e) { - illegalArgumentExceptionOccurred.set(true); - return Optional.empty(); } } catch (IOException | CryptoException e) { LOG.info("Recovery key validation failed"); - } catch (IllegalArgumentException e) { - LOG.info("Recovery key has an illegal argument"); - illegalArgumentExceptionOccurred.set(true); } return Optional.empty(); } diff --git a/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyValidateController.java b/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyValidateController.java index 9858cad56..5429f9825 100644 --- a/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyValidateController.java +++ b/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyValidateController.java @@ -25,7 +25,6 @@ import javafx.scene.control.TextArea; import javafx.scene.control.TextFormatter; import javafx.scene.input.KeyCode; import javafx.scene.input.KeyEvent; -import java.util.concurrent.atomic.AtomicBoolean; import org.cryptomator.common.recovery.MasterkeyService; import org.cryptomator.common.recovery.RecoveryActionType; @@ -138,16 +137,18 @@ public class RecoveryKeyValidateController implements FxController { private void validateRecoveryKey() { switch (recoverType.get()) { case RESTORE_VAULT_CONFIG -> { - AtomicBoolean illegalArgumentExceptionOccurred = new AtomicBoolean(false); - var combo = MasterkeyService.validateRecoveryKeyAndDetectCombo( - recoveryKeyFactory, vault, recoveryKey.get(), masterkeyFileAccess, illegalArgumentExceptionOccurred); - combo.ifPresent(cipherCombo::set); - if (illegalArgumentExceptionOccurred.get()) { + try{ + var combo = MasterkeyService.validateRecoveryKeyAndDetectCombo( + recoveryKeyFactory, vault, recoveryKey.get(), masterkeyFileAccess); + combo.ifPresent(cipherCombo::set); + if (combo.isPresent()) { + recoveryKeyState.set(RecoveryKeyState.CORRECT); + } else { + recoveryKeyState.set(RecoveryKeyState.WRONG); + } + } + catch (IllegalArgumentException e){ recoveryKeyState.set(RecoveryKeyState.INVALID); - } else if (combo.isPresent()) { - recoveryKeyState.set(RecoveryKeyState.CORRECT); - } else { - recoveryKeyState.set(RecoveryKeyState.WRONG); } } case RESTORE_MASTERKEY, RESET_PASSWORD, SHOW_KEY, CONVERT_VAULT -> {