From 596127d10141819641fd2472e6f48b87a2c79585 Mon Sep 17 00:00:00 2001 From: Ralph Plawetzki Date: Sat, 18 Jul 2026 18:49:32 +0200 Subject: [PATCH 1/2] Handle prompt on unlocking the keyring --- .../linux/keychain/SecretServiceKeychainAccess.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/cryptomator/linux/keychain/SecretServiceKeychainAccess.java b/src/main/java/org/cryptomator/linux/keychain/SecretServiceKeychainAccess.java index 6bd1034..e12a935 100644 --- a/src/main/java/org/cryptomator/linux/keychain/SecretServiceKeychainAccess.java +++ b/src/main/java/org/cryptomator/linux/keychain/SecretServiceKeychainAccess.java @@ -10,6 +10,7 @@ import org.purejava.secret.api.EncryptedSession; import org.purejava.secret.api.Item; import org.purejava.secret.api.Static; +import org.purejava.secret.api.Util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -53,7 +54,10 @@ public void storePassphrase(String key, String displayName, CharSequence passphr if (call.value().isEmpty()) { List lockable = new ArrayList<>(); lockable.add(new DBusPath(collection.getDBusPath())); - session.getService().unlock(lockable); + var needLock = session.getService().unlock(lockable).value().b; + if (!"/".equals(needLock.getPath())) { + Util.promptAndGetResultAsArrayList(needLock); + } var itemProps = Item.createProperties(LABEL_FOR_SECRET_IN_KEYRING, withKeyAndName(key, displayName)); var secret = session.encrypt(passphrase); var created = collection.createItem(itemProps, secret, false); From 76a022285d4b7627ff9ca059c9070c1e038247e3 Mon Sep 17 00:00:00 2001 From: Ralph Plawetzki Date: Sun, 19 Jul 2026 06:42:41 +0200 Subject: [PATCH 2/2] Check unlock() before calling value() Co-authored-by: coderabbitai --- .../linux/keychain/SecretServiceKeychainAccess.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/cryptomator/linux/keychain/SecretServiceKeychainAccess.java b/src/main/java/org/cryptomator/linux/keychain/SecretServiceKeychainAccess.java index e12a935..84938f4 100644 --- a/src/main/java/org/cryptomator/linux/keychain/SecretServiceKeychainAccess.java +++ b/src/main/java/org/cryptomator/linux/keychain/SecretServiceKeychainAccess.java @@ -54,9 +54,9 @@ public void storePassphrase(String key, String displayName, CharSequence passphr if (call.value().isEmpty()) { List lockable = new ArrayList<>(); lockable.add(new DBusPath(collection.getDBusPath())); - var needLock = session.getService().unlock(lockable).value().b; - if (!"/".equals(needLock.getPath())) { - Util.promptAndGetResultAsArrayList(needLock); + var promptNeededToUnlock = session.getService().unlock(lockable); + if (promptNeededToUnlock.isSuccess() && !"/".equals(promptNeededToUnlock.value().b.getPath())) { + Util.promptAndGetResultAsArrayList(promptNeededToUnlock.value().b); } var itemProps = Item.createProperties(LABEL_FOR_SECRET_IN_KEYRING, withKeyAndName(key, displayName)); var secret = session.encrypt(passphrase);