浏览代码

Revert "Use overloaded method storePassword instead of a new one"

This reverts commit aa34ad52e628a95e0adef5c540bca389dd38f24c.
Ralph Plawetzki 6 月之前
父节点
当前提交
7499867665

+ 3 - 2
src/main/java/org/cryptomator/common/keychain/KeychainManager.java

@@ -49,8 +49,9 @@ public class KeychainManager implements KeychainAccessProvider {
 		setPassphraseStored(key, true);
 		setPassphraseStored(key, true);
 	}
 	}
 
 
-	public void storePassphrase(String key, String displayName, CharSequence passphrase, boolean requireOsAuthentication) throws KeychainAccessException {
-		getKeychainOrFail().storePassphrase(key, displayName, passphrase, requireOsAuthentication);
+	@Override
+	public void storePassphraseForAuthenticatedUser(String key, String displayName, CharSequence passphrase) throws KeychainAccessException {
+		getKeychainOrFail().storePassphraseForAuthenticatedUser(key, displayName, passphrase);
 		setPassphraseStored(key, true);
 		setPassphraseStored(key, true);
 	}
 	}
 
 

+ 5 - 1
src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/MasterkeyFileLoadingStrategy.java

@@ -114,7 +114,11 @@ public class MasterkeyFileLoadingStrategy implements KeyLoadingStrategy {
 	private void savePasswordToSystemkeychain(Passphrase passphrase) {
 	private void savePasswordToSystemkeychain(Passphrase passphrase) {
 		if (keychain.isSupported()) {
 		if (keychain.isSupported()) {
 			try {
 			try {
-				keychain.storePassphrase(vault.getId(), vault.getDisplayName(), passphrase, vault.getVaultSettings().needAuthenticatedUser.get());
+				if (vault.getVaultSettings().needAuthenticatedUser.get()) {
+					keychain.storePassphraseForAuthenticatedUser(vault.getId(), vault.getDisplayName(), passphrase);
+				} else {
+					keychain.storePassphrase(vault.getId(), vault.getDisplayName(), passphrase);
+				}
 			} catch (KeychainAccessException e) {
 			} catch (KeychainAccessException e) {
 				LOG.error("Failed to store passphrase in system keychain.", e);
 				LOG.error("Failed to store passphrase in system keychain.", e);
 			}
 			}

+ 9 - 1
src/main/java/org/cryptomator/ui/vaultoptions/MasterkeyOptionsController.java

@@ -54,6 +54,10 @@ public class MasterkeyOptionsController implements FxController {
 	public void initialize() {
 	public void initialize() {
 		needAuthenticatedUserCheckbox.selectedProperty().bindBidirectional(vault.getVaultSettings().needAuthenticatedUser);
 		needAuthenticatedUserCheckbox.selectedProperty().bindBidirectional(vault.getVaultSettings().needAuthenticatedUser);
 		needAuthenticatedUserCheckbox.selectedProperty().addListener(this::needAuthenticatedUserCheckboxToggled);
 		needAuthenticatedUserCheckbox.selectedProperty().addListener(this::needAuthenticatedUserCheckboxToggled);
+		// ToDo Remove or adjust, as soon as there are implementations for integrations-api KeychainAccessProvider:storePassphraseForAuthenticatedUser for other OSes
+		if (!SystemUtils.IS_OS_MAC) {
+			needAuthenticatedUserCheckbox.setVisible(false);
+		}
 	}
 	}
 
 
 	/**
 	/**
@@ -70,7 +74,11 @@ public class MasterkeyOptionsController implements FxController {
 			if (keychain.isPassphraseStored(vaultId)) {
 			if (keychain.isPassphraseStored(vaultId)) {
 				var passphrase = keychain.loadPassphrase(vaultId);
 				var passphrase = keychain.loadPassphrase(vaultId);
 				keychain.deletePassphrase(vaultId);
 				keychain.deletePassphrase(vaultId);
-				keychain.storePassphrase(vaultId, vault.getId(), new Passphrase(passphrase), isSet);
+				if (isSet) {
+					keychain.storePassphraseForAuthenticatedUser(vaultId, vault.getId(), new Passphrase(passphrase));
+				} else {
+					keychain.storePassphrase(vaultId, vault.getId(), new Passphrase(passphrase));
+				}
 			}
 			}
 		} catch (KeychainAccessException e) {
 		} catch (KeychainAccessException e) {
 			LOG.error("Failed to migrate item in system keychain due to access control change.", e);
 			LOG.error("Failed to migrate item in system keychain due to access control change.", e);

+ 5 - 0
src/test/java/org/cryptomator/common/keychain/MapKeychainAccess.java

@@ -29,6 +29,11 @@ class MapKeychainAccess implements KeychainAccessProvider {
 		map.put(key, pw);
 		map.put(key, pw);
 	}
 	}
 
 
+	@Override
+	public void storePassphraseForAuthenticatedUser(String key, String displayName,CharSequence passphrase) {
+		storePassphrase(key, displayName, passphrase);
+	}
+
 	@Override
 	@Override
 	public char[] loadPassphrase(String key) {
 	public char[] loadPassphrase(String key) {
 		return map.get(key);
 		return map.get(key);