mirror of
https://github.com/cryptomator/cryptomator.git
synced 2026-09-04 07:07:06 +00:00
implemented keychain access on OS X
This commit is contained in:
@@ -1,45 +1,41 @@
|
||||
package org.cryptomator.keychain;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.security.GeneralSecurityException;
|
||||
import java.security.KeyStore;
|
||||
import java.nio.CharBuffer;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.apache.commons.lang3.SystemUtils;
|
||||
import org.cryptomator.jni.JniModule;
|
||||
import org.cryptomator.jni.MacKeychainAccess;
|
||||
|
||||
@Singleton
|
||||
class MacSystemKeychainAccess implements KeychainAccessStrategy {
|
||||
|
||||
private final KeyStore keyStore;
|
||||
private final MacKeychainAccess keychain;
|
||||
|
||||
@Inject
|
||||
public MacSystemKeychainAccess() {
|
||||
KeyStore ks;
|
||||
try {
|
||||
ks = KeyStore.getInstance("KeychainStore", "Apple");
|
||||
ks.load(null);
|
||||
} catch (GeneralSecurityException | IOException e) {
|
||||
ks = null;
|
||||
if (JniModule.macFunctions().isPresent()) {
|
||||
this.keychain = JniModule.macFunctions().get().getKeychainAccess();
|
||||
} else {
|
||||
this.keychain = null;
|
||||
}
|
||||
this.keyStore = ks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void storePassphrase(String key, CharSequence passphrase) {
|
||||
// TODO Auto-generated method stub
|
||||
keychain.storePassword(key, passphrase);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CharSequence loadPassphrase(String key) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
return CharBuffer.wrap(keychain.loadPassword(key));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSupported() {
|
||||
return SystemUtils.IS_OS_MAC_OSX && keyStore != null;
|
||||
return SystemUtils.IS_OS_MAC_OSX && keychain != null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user