Cache context for generateChallenge response.

Fix: 232678514
Test: manual
Change-Id: I7deac5f296260bf667b15300e600195c42c0cbc1
This commit is contained in:
Joe Bolinger
2022-08-18 00:46:36 +00:00
parent 662e5722b3
commit e167f9ed0a

View File

@@ -127,13 +127,14 @@ public abstract class BiometricsSettingsBase extends DashboardFragment {
@Override
public boolean onPreferenceTreeClick(Preference preference) {
final String key = preference.getKey();
final Context context = requireActivity().getApplicationContext();
// Generate challenge (and request LSS to create a HAT) each time the preference is clicked,
// since FingerprintSettings and FaceSettings revoke the challenge when finishing.
if (getFacePreferenceKey().equals(key)) {
mDoNotFinishActivity = true;
mFaceManager.generateChallenge(mUserId, (sensorId, userId, challenge) -> {
final byte[] token = BiometricUtils.requestGatekeeperHat(getActivity(), mGkPwHandle,
final byte[] token = BiometricUtils.requestGatekeeperHat(context, mGkPwHandle,
mUserId, challenge);
final Bundle extras = preference.getExtras();
extras.putByteArray(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, token);
@@ -146,7 +147,7 @@ public abstract class BiometricsSettingsBase extends DashboardFragment {
} else if (getFingerprintPreferenceKey().equals(key)) {
mDoNotFinishActivity = true;
mFingerprintManager.generateChallenge(mUserId, (sensorId, userId, challenge) -> {
final byte[] token = BiometricUtils.requestGatekeeperHat(getActivity(), mGkPwHandle,
final byte[] token = BiometricUtils.requestGatekeeperHat(context, mGkPwHandle,
mUserId, challenge);
final Bundle extras = preference.getExtras();
extras.putByteArray(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, token);