mirror of
https://github.com/cryptomator/cryptomator.git
synced 2026-04-19 17:16:53 -04:00
remove optional
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user