浏览代码

throw illegalArgumentException directly

Jan-Peter Klein 1 月之前
父节点
当前提交
034a70d473

+ 3 - 8
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<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();
 	}

+ 11 - 10
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 -> {