diff --git a/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java b/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java index c34b2843706..334d2db0042 100644 --- a/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java +++ b/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java @@ -126,7 +126,7 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase public abstract void onClick(LinkSpan span); protected interface GenerateChallengeCallback { - void onChallengeGenerated(int sensorId, long challenge); + void onChallengeGenerated(int sensorId, int userId, long challenge); } @Override @@ -261,7 +261,7 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase updatePasswordQuality(); overridePendingTransition(R.anim.sud_slide_next_in, R.anim.sud_slide_next_out); getNextButton().setEnabled(false); - getChallenge(((sensorId, challenge) -> { + getChallenge(((sensorId, userId, challenge) -> { mSensorId = sensorId; mChallenge = challenge; mToken = BiometricUtils.requestGatekeeperHat(this, data, mUserId, challenge); @@ -277,7 +277,7 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase if (resultCode == RESULT_OK && data != null) { overridePendingTransition(R.anim.sud_slide_next_in, R.anim.sud_slide_next_out); getNextButton().setEnabled(false); - getChallenge(((sensorId, challenge) -> { + getChallenge(((sensorId, userId, challenge) -> { mSensorId = sensorId; mChallenge = challenge; mToken = BiometricUtils.requestGatekeeperHat(this, data, mUserId, challenge); diff --git a/src/com/android/settings/biometrics/MultiBiometricEnrollHelper.java b/src/com/android/settings/biometrics/MultiBiometricEnrollHelper.java index 018c81539fc..74d7c535e05 100644 --- a/src/com/android/settings/biometrics/MultiBiometricEnrollHelper.java +++ b/src/com/android/settings/biometrics/MultiBiometricEnrollHelper.java @@ -67,7 +67,7 @@ public class MultiBiometricEnrollHelper { private void launchFaceEnroll() { final FaceManager faceManager = mActivity.getSystemService(FaceManager.class); - faceManager.generateChallenge((sensorId, challenge) -> { + faceManager.generateChallenge(mUserId, (sensorId, userId, challenge) -> { final byte[] hardwareAuthToken = BiometricUtils.requestGatekeeperHat(mActivity, mGkPwHandle, mUserId, challenge); final Intent faceIntent = BiometricUtils.getFaceIntroIntent(mActivity, @@ -96,7 +96,7 @@ public class MultiBiometricEnrollHelper { private void launchFingerprintEnroll() { final FingerprintManager fingerprintManager = mActivity .getSystemService(FingerprintManager.class); - fingerprintManager.generateChallenge(mUserId, ((sensorId, challenge) -> { + fingerprintManager.generateChallenge(mUserId, ((sensorId, userId, challenge) -> { final byte[] hardwareAuthToken = BiometricUtils.requestGatekeeperHat(mActivity, mGkPwHandle, mUserId, challenge); final Intent intent = BiometricUtils.getFingerprintIntroIntent(mActivity, diff --git a/src/com/android/settings/biometrics/combination/BiometricsSettingsBase.java b/src/com/android/settings/biometrics/combination/BiometricsSettingsBase.java index b5f6ef328a6..328ecbcb3c4 100644 --- a/src/com/android/settings/biometrics/combination/BiometricsSettingsBase.java +++ b/src/com/android/settings/biometrics/combination/BiometricsSettingsBase.java @@ -115,7 +115,7 @@ public abstract class BiometricsSettingsBase extends DashboardFragment { // since FingerprintSettings and FaceSettings revoke the challenge when finishing. if (getFacePreferenceKey().equals(key)) { mDoNotFinishActivity = true; - mFaceManager.generateChallenge((sensorId, challenge) -> { + mFaceManager.generateChallenge(mUserId, (sensorId, userId, challenge) -> { final byte[] token = BiometricUtils.requestGatekeeperHat(getActivity(), mGkPwHandle, mUserId, challenge); final Bundle extras = preference.getExtras(); @@ -125,7 +125,7 @@ public abstract class BiometricsSettingsBase extends DashboardFragment { }); } else if (getFingerprintPreferenceKey().equals(key)) { mDoNotFinishActivity = true; - mFingerprintManager.generateChallenge(mUserId, (sensorId, challenge) -> { + mFingerprintManager.generateChallenge(mUserId, (sensorId, userId, challenge) -> { final byte[] token = BiometricUtils.requestGatekeeperHat(getActivity(), mGkPwHandle, mUserId, challenge); final Bundle extras = preference.getExtras(); diff --git a/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java b/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java index 4129fa58a43..c81c275f903 100644 --- a/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java +++ b/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java @@ -110,7 +110,7 @@ public class FaceEnrollIntroduction extends BiometricEnrollIntroduction { mFooterBarMixin.getPrimaryButton().setEnabled(false); // We either block on generateChallenge, or need to gray out the "next" button until // the challenge is ready. Let's just do this for now. - mFaceManager.generateChallenge((sensorId, challenge) -> { + mFaceManager.generateChallenge(mUserId, (sensorId, userId, challenge) -> { mToken = BiometricUtils.requestGatekeeperHat(this, getIntent(), mUserId, challenge); mSensorId = sensorId; mChallenge = challenge; @@ -196,10 +196,10 @@ public class FaceEnrollIntroduction extends BiometricEnrollIntroduction { protected void getChallenge(GenerateChallengeCallback callback) { mFaceManager = Utils.getFaceManagerOrNull(this); if (mFaceManager == null) { - callback.onChallengeGenerated(0, 0L); + callback.onChallengeGenerated(0, 0, 0L); return; } - mFaceManager.generateChallenge(callback::onChallengeGenerated); + mFaceManager.generateChallenge(mUserId, callback::onChallengeGenerated); } @Override diff --git a/src/com/android/settings/biometrics/face/FaceSettings.java b/src/com/android/settings/biometrics/face/FaceSettings.java index 038d448bfda..1a4dc41f77d 100644 --- a/src/com/android/settings/biometrics/face/FaceSettings.java +++ b/src/com/android/settings/biometrics/face/FaceSettings.java @@ -249,7 +249,7 @@ public class FaceSettings extends DashboardFragment { if (requestCode == CONFIRM_REQUEST) { if (resultCode == RESULT_FINISHED || resultCode == RESULT_OK) { // The pin/pattern/password was set. - mFaceManager.generateChallenge((sensorId, challenge) -> { + mFaceManager.generateChallenge(mUserId, (sensorId, userId, challenge) -> { mToken = BiometricUtils.requestGatekeeperHat(getPrefContext(), data, mUserId, challenge); mSensorId = sensorId; diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java index db03a3d1efc..2cb5ff88691 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java @@ -81,7 +81,7 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase implements // adb shell am start -a android.app.action.SET_NEW_PASSWORD if (mToken == null && BiometricUtils.containsGatekeeperPasswordHandle(getIntent())) { final FingerprintManager fpm = getSystemService(FingerprintManager.class); - fpm.generateChallenge(mUserId, (sensorId, challenge) -> { + fpm.generateChallenge(mUserId, (sensorId, userId, challenge) -> { mChallenge = challenge; mSensorId = sensorId; mToken = BiometricUtils.requestGatekeeperHat(this, getIntent(), mUserId, challenge); diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java index 162208697b1..738d32492a7 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java @@ -157,7 +157,7 @@ public class FingerprintEnrollIntroduction extends BiometricEnrollIntroduction { protected void getChallenge(GenerateChallengeCallback callback) { mFingerprintManager = Utils.getFingerprintManagerOrNull(this); if (mFingerprintManager == null) { - callback.onChallengeGenerated(0, 0L); + callback.onChallengeGenerated(0, 0, 0L); return; } mFingerprintManager.generateChallenge(mUserId, callback::onChallengeGenerated); diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java index dbac4150380..87a29b22094 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java @@ -601,12 +601,15 @@ public class FingerprintSettings extends SubSettings { mLaunchedConfirm = false; if (resultCode == RESULT_FINISHED || resultCode == RESULT_OK) { if (data != null && BiometricUtils.containsGatekeeperPasswordHandle(data)) { - mFingerprintManager.generateChallenge(mUserId, (sensorId, challenge) -> { - mToken = BiometricUtils.requestGatekeeperHat(getActivity(), data, - mUserId, challenge); - mChallenge = challenge; - BiometricUtils.removeGatekeeperPasswordHandle(getActivity(), data); - updateAddPreference(); + mFingerprintManager.generateChallenge(mUserId, + (sensorId, userId, challenge) -> { + mToken = BiometricUtils.requestGatekeeperHat(getActivity(), + data, + mUserId, challenge); + mChallenge = challenge; + BiometricUtils.removeGatekeeperPasswordHandle(getActivity(), + data); + updateAddPreference(); }); } else { Log.d(TAG, "Data null or GK PW missing");