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

This reverts commit aa34ad52e6.
This commit is contained in:
Ralph Plawetzki
2024-12-02 08:12:00 +01:00
parent 7b293b8082
commit 7499867665
4 changed files with 22 additions and 4 deletions

View File

@@ -49,8 +49,9 @@ public class KeychainManager implements KeychainAccessProvider {
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);
}

View File

@@ -114,7 +114,11 @@ public class MasterkeyFileLoadingStrategy implements KeyLoadingStrategy {
private void savePasswordToSystemkeychain(Passphrase passphrase) {
if (keychain.isSupported()) {
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) {
LOG.error("Failed to store passphrase in system keychain.", e);
}

View File

@@ -54,6 +54,10 @@ public class MasterkeyOptionsController implements FxController {
public void initialize() {
needAuthenticatedUserCheckbox.selectedProperty().bindBidirectional(vault.getVaultSettings().needAuthenticatedUser);
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)) {
var passphrase = keychain.loadPassphrase(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) {
LOG.error("Failed to migrate item in system keychain due to access control change.", e);

View File

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