throw illegalArgumentException directly

This commit is contained in:
Jan-Peter Klein
2025-06-16 13:40:57 +02:00
parent 8c9d75fe57
commit 034a70d473
2 changed files with 14 additions and 18 deletions

View File

@@ -41,8 +41,9 @@ public final class MasterkeyService {
return masterkeyFileAccess.load(masterkeyFilePath, password);
}
public static Optional<CryptorProvider.Scheme> validateRecoveryKeyAndDetectCombo(RecoveryKeyFactory recoveryKeyFactory, Vault vault, String recoveryKey, MasterkeyFileAccess masterkeyFileAccess, AtomicBoolean illegalArgumentExceptionOccurred) {
public static Optional<CryptorProvider.Scheme> 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();
}

View File

@@ -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 -> {