diff --git a/app/src/main/java/com/kunzisoft/keepass/credentialprovider/passkey/PasskeyProviderService.kt b/app/src/main/java/com/kunzisoft/keepass/credentialprovider/passkey/PasskeyProviderService.kt
index ab1ac8273..2af9d0115 100644
--- a/app/src/main/java/com/kunzisoft/keepass/credentialprovider/passkey/PasskeyProviderService.kt
+++ b/app/src/main/java/com/kunzisoft/keepass/credentialprovider/passkey/PasskeyProviderService.kt
@@ -53,6 +53,7 @@ import com.kunzisoft.keepass.database.DatabaseTaskProvider
import com.kunzisoft.keepass.database.exception.RegisterInReadOnlyDatabaseException
import com.kunzisoft.keepass.database.helper.SearchHelper
import com.kunzisoft.keepass.model.SearchInfo
+import com.kunzisoft.keepass.settings.PreferencesUtil.isPasskeyAutoSelectEnable
import com.kunzisoft.keepass.view.toastError
import java.io.IOException
import java.time.Instant
@@ -63,6 +64,7 @@ class PasskeyProviderService : CredentialProviderService() {
private var mDatabaseTaskProvider: DatabaseTaskProvider? = null
private var mDatabase: ContextualDatabase? = null
private lateinit var defaultIcon: Icon
+ private var isAutoSelectAllowed: Boolean = false
override fun onCreate() {
super.onCreate()
@@ -79,6 +81,8 @@ class PasskeyProviderService : CredentialProviderService() {
).apply {
setTintBlendMode(BlendMode.DST)
}
+
+ isAutoSelectAllowed = isPasskeyAutoSelectEnable(this)
}
override fun onDestroy() {
@@ -160,7 +164,7 @@ class PasskeyProviderService : CredentialProviderService() {
pendingIntent = usagePendingIntent,
beginGetPublicKeyCredentialOption = option,
displayName = passkeyEntry.getVisualTitle(),
- isAutoSelectAllowed = true
+ isAutoSelectAllowed = isAutoSelectAllowed
)
)
}
@@ -183,7 +187,7 @@ class PasskeyProviderService : CredentialProviderService() {
pendingIntent = pendingIntent,
beginGetPublicKeyCredentialOption = option,
lastUsedTime = Instant.now(),
- isAutoSelectAllowed = false
+ isAutoSelectAllowed = isAutoSelectAllowed
)
)
}
@@ -205,7 +209,7 @@ class PasskeyProviderService : CredentialProviderService() {
pendingIntent = pendingIntent,
beginGetPublicKeyCredentialOption = option,
lastUsedTime = Instant.now(),
- isAutoSelectAllowed = true
+ isAutoSelectAllowed = isAutoSelectAllowed
)
)
}
diff --git a/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt b/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt
index e592021db..762b51196 100644
--- a/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt
+++ b/app/src/main/java/com/kunzisoft/keepass/settings/PreferencesUtil.kt
@@ -692,6 +692,12 @@ object PreferencesUtil {
context.resources.getBoolean(R.bool.passkeys_backup_eligibility_default))
}
+ fun isPasskeyAutoSelectEnable(context: Context): Boolean {
+ val prefs = PreferenceManager.getDefaultSharedPreferences(context)
+ return prefs.getBoolean(context.getString(R.string.passkeys_auto_select_key),
+ context.resources.getBoolean(R.bool.passkeys_auto_select_default))
+ }
+
fun isPasskeyBackupStateEnable(context: Context): Boolean {
if (!isPasskeyBackupEligibilityEnable(context))
return false
diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml
index ac6a15604..bed60f49d 100644
--- a/app/src/main/res/values/donottranslate.xml
+++ b/app/src/main/res/values/donottranslate.xml
@@ -135,6 +135,8 @@
passkeys_explanation_key
settings_passkeys_key
passkeys_privileged_apps_key
+ passkeys_auto_select_key
+ false
passkeys_backup_eligibility_key
true
passkeys_backup_state_key
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 03758f18a..430dc2c97 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -430,6 +430,8 @@
Signature missing
WARNING: The passkey was created from another client or the signature has been deleted. Ensure the app you want to authenticate is part of the same service and is legitimate to avoid security issues.
%1$s is unrecognised and attempts to authenticate with an existing passkey.\n\nAdd app signature to passkey entry?
+ Auto select
+ Auto select if only one entry and the database is open, only if the requesting app is compatible
Backup Eligibility
Determine at creation time whether the public key credential source is allowed to be backed up
Backup State
diff --git a/app/src/main/res/xml/preferences_passkeys.xml b/app/src/main/res/xml/preferences_passkeys.xml
index 502403320..2bf319d8d 100644
--- a/app/src/main/res/xml/preferences_passkeys.xml
+++ b/app/src/main/res/xml/preferences_passkeys.xml
@@ -24,6 +24,11 @@
android:key="@string/passkeys_privileged_apps_key"
android:title="@string/passkeys_privileged_apps_title"
android:summary="@string/passkeys_privileged_apps_summary"/>
+