From 531ebcae85f4f363f7cdcf5f6f520c14045f8aaa Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Tue, 31 May 2022 11:44:42 +0200 Subject: [PATCH] Fix device credential unlocking #1344 --- CHANGELOG | 1 + .../biometric/AdvancedUnlockManager.kt | 19 ++++++------------- .../metadata/android/en-US/changelogs/114.txt | 1 + .../metadata/android/fr-FR/changelogs/114.txt | 1 + 4 files changed, 9 insertions(+), 13 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 0f5a6d011..5566a26f2 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,4 +1,5 @@ KeePassDX(3.4.5) + * Fix device credential unlocking #1344 * Keep screen on by default when viewing an entry KeePassDX(3.4.4) diff --git a/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockManager.kt b/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockManager.kt index fdb16f8d1..764396dde 100644 --- a/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockManager.kt +++ b/app/src/main/java/com/kunzisoft/keepass/biometric/AdvancedUnlockManager.kt @@ -403,13 +403,11 @@ class AdvancedUnlockManager(private var retrieveContext: () -> FragmentActivity) } } - @RequiresApi(api = Build.VERSION_CODES.M) fun isDeviceSecure(context: Context): Boolean { - val keyguardManager = ContextCompat.getSystemService(context, KeyguardManager::class.java) - return keyguardManager?.isDeviceSecure ?: false + return ContextCompat.getSystemService(context, KeyguardManager::class.java) + ?.isDeviceSecure ?: false } - @RequiresApi(api = Build.VERSION_CODES.M) fun biometricUnlockSupported(context: Context): Boolean { val biometricCanAuthenticate = try { BiometricManager.from(context).canAuthenticate(BIOMETRIC_STRONG) @@ -430,28 +428,23 @@ class AdvancedUnlockManager(private var retrieveContext: () -> FragmentActivity) ) } - @RequiresApi(api = Build.VERSION_CODES.M) fun deviceCredentialUnlockSupported(context: Context): Boolean { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { val biometricCanAuthenticate = BiometricManager.from(context).canAuthenticate(DEVICE_CREDENTIAL) - return (biometricCanAuthenticate == BiometricManager.BIOMETRIC_SUCCESS + (biometricCanAuthenticate == BiometricManager.BIOMETRIC_SUCCESS || biometricCanAuthenticate == BiometricManager.BIOMETRIC_STATUS_UNKNOWN || biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE || biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED || biometricCanAuthenticate == BiometricManager.BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED ) - } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - ContextCompat.getSystemService(context, KeyguardManager::class.java)?.apply { - return isDeviceSecure - } + } else { + true } - return false } /** * Remove entry key in keystore */ - @RequiresApi(api = Build.VERSION_CODES.M) fun deleteEntryKeyInKeystoreForBiometric(fragmentActivity: FragmentActivity, advancedCallback: AdvancedUnlockErrorCallback) { AdvancedUnlockManager{ fragmentActivity }.apply { diff --git a/fastlane/metadata/android/en-US/changelogs/114.txt b/fastlane/metadata/android/en-US/changelogs/114.txt index 2ba386422..92ce4431e 100644 --- a/fastlane/metadata/android/en-US/changelogs/114.txt +++ b/fastlane/metadata/android/en-US/changelogs/114.txt @@ -1 +1,2 @@ + * Fix device credential unlocking #1344 * Keep screen on by default when viewing an entry diff --git a/fastlane/metadata/android/fr-FR/changelogs/114.txt b/fastlane/metadata/android/fr-FR/changelogs/114.txt index f46526cec..6732878f1 100644 --- a/fastlane/metadata/android/fr-FR/changelogs/114.txt +++ b/fastlane/metadata/android/fr-FR/changelogs/114.txt @@ -1 +1,2 @@ + * Correction du déblocage par identifiants de l'appareil #1344 * Garder l'écran allumé par défaut lors d'une visualisation d'entrée