From 7b689c6b788e89fdaea7064c7250f4ae5fab017d Mon Sep 17 00:00:00 2001 From: Ralph Plawetzki Date: Wed, 2 Jun 2021 14:24:51 +0200 Subject: [PATCH] Keychain is locked (#1550) Fixes #1526 Co-authored-by: Sebastian Stenzel Co-authored-by: Sebastian Stenzel --- .../ui/changepassword/ChangePasswordController.java | 2 +- .../keyloading/masterkeyfile/MasterkeyFileLoadingModule.java | 2 +- .../ui/mainwindow/VaultDetailLockedController.java | 2 +- .../ui/vaultoptions/MasterkeyOptionsController.java | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordController.java b/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordController.java index 808375ecd..ccc0184ac 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordController.java @@ -100,7 +100,7 @@ public class ChangePasswordController implements FxController { } private void updatePasswordInSystemkeychain() { - if (keychain.isSupported()) { + if (keychain.isSupported() && !keychain.isLocked()) { try { keychain.changePassphrase(vault.getId(), newPasswordController.passwordField.getCharacters()); LOG.info("Successfully updated password in system keychain for {}", vault.getDisplayName()); diff --git a/main/ui/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/MasterkeyFileLoadingModule.java b/main/ui/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/MasterkeyFileLoadingModule.java index d9413121c..901eacfb9 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/MasterkeyFileLoadingModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/MasterkeyFileLoadingModule.java @@ -59,7 +59,7 @@ public abstract class MasterkeyFileLoadingModule { @Named("savedPassword") @KeyLoadingScoped static Optional provideStoredPassword(KeychainManager keychain, @KeyLoading Vault vault) { - if (!keychain.isSupported()) { + if (!keychain.isSupported() || keychain.isLocked()) { return Optional.empty(); } else { try { diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailLockedController.java b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailLockedController.java index 20f0d916d..5fee2e6d1 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailLockedController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailLockedController.java @@ -36,7 +36,7 @@ public class VaultDetailLockedController implements FxController { this.vaultOptionsWindow = vaultOptionsWindow; this.keychain = keychain; this.mainWindow = mainWindow; - if (keychain.isSupported()) { + if (keychain.isSupported() && !keychain.isLocked()) { this.passwordSaved = BooleanExpression.booleanExpression(EasyBind.select(vault).selectObject(v -> keychain.getPassphraseStoredProperty(v.getId()))); } else { this.passwordSaved = new SimpleBooleanProperty(false); diff --git a/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/MasterkeyOptionsController.java b/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/MasterkeyOptionsController.java index ee38e1f18..fb9d6b711 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/MasterkeyOptionsController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/MasterkeyOptionsController.java @@ -36,7 +36,7 @@ public class MasterkeyOptionsController implements FxController { this.changePasswordWindow = changePasswordWindow; this.recoveryKeyWindow = recoveryKeyWindow; this.keychain = keychain; - if (keychain.isSupported()) { + if (keychain.isSupported() && !keychain.isLocked()) { this.passwordSaved = Bindings.createBooleanBinding(this::isPasswordSaved, keychain.getPassphraseStoredProperty(vault.getId())); } else { this.passwordSaved = new SimpleBooleanProperty(false); @@ -74,7 +74,7 @@ public class MasterkeyOptionsController implements FxController { } public boolean isPasswordSaved() { - if (keychain.isSupported() && vault != null) { + if (keychain.isSupported() && !keychain.isLocked() && vault != null) { return keychain.getPassphraseStoredProperty(vault.getId()).get(); } else return false; }