diff --git a/main/keychain/pom.xml b/main/keychain/pom.xml
index 4fab0ebc6..1983d5873 100644
--- a/main/keychain/pom.xml
+++ b/main/keychain/pom.xml
@@ -18,6 +18,10 @@
bcprov-jdk15on
1.54
+
+ org.cryptomator
+ jni
+
diff --git a/main/keychain/src/main/java/org/cryptomator/keychain/MacSystemKeychainAccess.java b/main/keychain/src/main/java/org/cryptomator/keychain/MacSystemKeychainAccess.java
index 55a5e6ce9..465a17ec1 100644
--- a/main/keychain/src/main/java/org/cryptomator/keychain/MacSystemKeychainAccess.java
+++ b/main/keychain/src/main/java/org/cryptomator/keychain/MacSystemKeychainAccess.java
@@ -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;
}
}
diff --git a/main/pom.xml b/main/pom.xml
index ef7cf60fb..e4ddb32c9 100644
--- a/main/pom.xml
+++ b/main/pom.xml
@@ -27,6 +27,7 @@
UTF-8
+ 1.0.0-SNAPSHOT
2.1
1.7.7
4.12
@@ -122,6 +123,13 @@
ui
${project.version}
+
+
+
+ org.cryptomator
+ jni
+ ${cryptomator.jni.version}
+
diff --git a/main/ui/pom.xml b/main/ui/pom.xml
index 6ceb70390..885a875bc 100644
--- a/main/ui/pom.xml
+++ b/main/ui/pom.xml
@@ -57,7 +57,6 @@
org.cryptomator
jni
- 1.0.0-SNAPSHOT