remove optional

This commit is contained in:
Jan-Peter Klein
2025-08-01 12:51:27 +02:00
parent 164a4de6de
commit c199d1cb3b
2 changed files with 16 additions and 15 deletions

View File

@@ -19,7 +19,6 @@ import java.nio.file.StandardOpenOption;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
import java.util.stream.Stream;
@@ -41,9 +40,9 @@ public final class MasterkeyService {
return masterkeyFileAccess.load(masterkeyFilePath, password);
}
public static Optional<CryptorProvider.Scheme> validateRecoveryKeyAndDetectCombo(RecoveryKeyFactory recoveryKeyFactory, //
Vault vault, String recoveryKey, //
MasterkeyFileAccess masterkeyFileAccess) throws IllegalArgumentException {
public static CryptorProvider.Scheme validateRecoveryKeyAndDetectCombo(RecoveryKeyFactory recoveryKeyFactory, //
Vault vault, String recoveryKey, //
MasterkeyFileAccess masterkeyFileAccess) throws IOException, CryptoException {
String tmpPass = UUID.randomUUID().toString();
try (RecoveryDirectory recoveryDirectory = RecoveryDirectory.create(vault.getPath())) {
Path tempRecoveryPath = recoveryDirectory.getRecoveryPath();
@@ -51,11 +50,8 @@ public final class MasterkeyService {
Path masterkeyFilePath = tempRecoveryPath.resolve(MASTERKEY_FILENAME);
try (Masterkey mk = load(masterkeyFileAccess, masterkeyFilePath, tmpPass)) {
return detect(mk, vault.getPath());
return detect(mk, vault.getPath()).orElseThrow();
}
} catch (IOException | CryptoException e) {
LOG.info("Recovery key validation failed");
return Optional.empty();
}
}

View File

@@ -10,6 +10,7 @@ import org.cryptomator.common.vaults.Vault;
import org.cryptomator.cryptofs.VaultConfig;
import org.cryptomator.cryptofs.VaultConfigLoadException;
import org.cryptomator.cryptofs.VaultKeyInvalidException;
import org.cryptomator.cryptolib.api.CryptoException;
import org.cryptomator.cryptolib.api.CryptorProvider;
import org.cryptomator.cryptolib.common.MasterkeyFileAccess;
import org.cryptomator.ui.common.FxController;
@@ -26,6 +27,7 @@ import javafx.scene.control.TextArea;
import javafx.scene.control.TextFormatter;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import java.io.IOException;
public class RecoveryKeyValidateController implements FxController {
@@ -137,14 +139,17 @@ public class RecoveryKeyValidateController implements FxController {
switch (recoverType.get()) {
case RESTORE_ALL, RESTORE_VAULT_CONFIG -> {
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);
}
var scheme = MasterkeyService.validateRecoveryKeyAndDetectCombo(recoveryKeyFactory, vault, recoveryKey.get(), masterkeyFileAccess);
cipherCombo.set(scheme);
recoveryKeyState.set(RecoveryKeyState.CORRECT);
} catch (CryptoException e) {
LOG.info("Recovery key is valid but crypto scheme couldn't be determined", e);
recoveryKeyState.set(RecoveryKeyState.WRONG);
} catch (IllegalArgumentException e) {
LOG.info("Recovery key is syntactically invalid", e);
recoveryKeyState.set(RecoveryKeyState.INVALID);
} catch (IOException e) {
LOG.warn("IO error while validating recovery key", e);
recoveryKeyState.set(RecoveryKeyState.INVALID);
}
}