From 1cd2160cc9a02675f4105f96e9a3046f25a48a8e Mon Sep 17 00:00:00 2001 From: Kevin Chyn Date: Fri, 24 Apr 2020 12:05:27 -0700 Subject: [PATCH] Use CHALLENGE_NONE when VerifyCredential invoked with challenge=0 LSS should generate a challenge if VerifyCredential is invoked without a challenge. Otherwise, biometric lockout reset will not work properly. Bug: 153921881 Test: BiometricPromptDemo, allow device credential, enter password. Notice the added log, as well as generateChallenge, resetLockout, and revokeChallenge working now. Change-Id: I0d24afa8b77f0b92b301c1ae53c3e6e8991a1335 (cherry picked from commit 3db0369fae49b6bb351843b22dffa0b6d859a439) --- .../android/server/locksettings/LockSettingsService.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/locksettings/LockSettingsService.java b/services/core/java/com/android/server/locksettings/LockSettingsService.java index 93d45c882e1c1..ac982dd86d859 100644 --- a/services/core/java/com/android/server/locksettings/LockSettingsService.java +++ b/services/core/java/com/android/server/locksettings/LockSettingsService.java @@ -1972,7 +1972,13 @@ public class LockSettingsService extends ILockSettings.Stub { public VerifyCredentialResponse verifyCredential(LockscreenCredential credential, long challenge, int userId) { checkPasswordReadPermission(userId); - return doVerifyCredential(credential, CHALLENGE_FROM_CALLER, challenge, userId, + @ChallengeType int challengeType = CHALLENGE_FROM_CALLER; + if (challenge == 0) { + Slog.w(TAG, "VerifyCredential called with challenge=0"); + challengeType = CHALLENGE_NONE; + + } + return doVerifyCredential(credential, challengeType, challenge, userId, null /* progressCallback */); }