* Opens this file for reading.
@@ -39,7 +46,6 @@ public interface File extends Node, Comparable
* Fast-forwards or rewinds the file to the specified position.
diff --git a/main/filesystem-api/src/main/java/org/cryptomator/filesystem/delegating/DelegatingFile.java b/main/filesystem-api/src/main/java/org/cryptomator/filesystem/delegating/DelegatingFile.java
index 49bc9eb6d..af119c90c 100644
--- a/main/filesystem-api/src/main/java/org/cryptomator/filesystem/delegating/DelegatingFile.java
+++ b/main/filesystem-api/src/main/java/org/cryptomator/filesystem/delegating/DelegatingFile.java
@@ -15,7 +15,7 @@ import org.cryptomator.filesystem.File;
import org.cryptomator.filesystem.ReadableFile;
import org.cryptomator.filesystem.WritableFile;
-public abstract class DelegatingFilenull if no value for the given key could be found.
+ */
+ char[] loadPassphrase(String key);
+
+ /**
+ * Deletes a passphrase with a given key.
+ *
+ * @param key Unique key previously used while {@link #storePassphrase(String, CharSequence) storing a passphrase}.
+ */
+ void deletePassphrase(String key);
+
+}
diff --git a/main/keychain/src/main/java/org/cryptomator/keychain/KeychainAccessStrategy.java b/main/keychain/src/main/java/org/cryptomator/keychain/KeychainAccessStrategy.java
new file mode 100644
index 000000000..b304d6edf
--- /dev/null
+++ b/main/keychain/src/main/java/org/cryptomator/keychain/KeychainAccessStrategy.java
@@ -0,0 +1,10 @@
+package org.cryptomator.keychain;
+
+interface KeychainAccessStrategy extends KeychainAccess {
+
+ /**
+ * @return true if this KeychainAccessStrategy works on the current machine.
+ */
+ boolean isSupported();
+
+}
diff --git a/main/keychain/src/main/java/org/cryptomator/keychain/KeychainModule.java b/main/keychain/src/main/java/org/cryptomator/keychain/KeychainModule.java
new file mode 100644
index 000000000..3f2cf6abc
--- /dev/null
+++ b/main/keychain/src/main/java/org/cryptomator/keychain/KeychainModule.java
@@ -0,0 +1,28 @@
+package org.cryptomator.keychain;
+
+import java.util.Optional;
+import java.util.Set;
+
+import org.cryptomator.jni.JniModule;
+
+import com.google.common.collect.Sets;
+
+import dagger.Module;
+import dagger.Provides;
+import dagger.multibindings.ElementsIntoSet;
+
+@Module(includes = {JniModule.class})
+public class KeychainModule {
+
+ @Provides
+ @ElementsIntoSet
+ Set