From e91e39b6043e728e76a6d16b31e623da65369056 Mon Sep 17 00:00:00 2001 From: Kevin Chyn Date: Tue, 9 Mar 2021 13:16:58 -0800 Subject: [PATCH] Update revokeChallenge together with frameworks/base Bug: 181977689 Test: Inspect logs Change-Id: I588ec46896d57d89489f78505a6f2c932462b2d2 --- .../settings/biometrics/BiometricEnrollBase.java | 10 ++++++++++ .../biometrics/BiometricEnrollIntroduction.java | 6 ++++++ .../biometrics/MultiBiometricEnrollHelper.java | 2 ++ .../settings/biometrics/face/FaceEnrollEducation.java | 2 ++ .../biometrics/face/FaceEnrollIntroduction.java | 2 ++ .../android/settings/biometrics/face/FaceSettings.java | 9 ++++++++- 6 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/biometrics/BiometricEnrollBase.java b/src/com/android/settings/biometrics/BiometricEnrollBase.java index 3fb89411190..74ed66c1755 100644 --- a/src/com/android/settings/biometrics/BiometricEnrollBase.java +++ b/src/com/android/settings/biometrics/BiometricEnrollBase.java @@ -48,6 +48,8 @@ public abstract class BiometricEnrollBase extends InstrumentedActivity { public static final String EXTRA_KEY_LAUNCHED_CONFIRM = "launched_confirm_lock"; public static final String EXTRA_KEY_REQUIRE_VISION = "accessibility_vision"; public static final String EXTRA_KEY_REQUIRE_DIVERSITY = "accessibility_diversity"; + public static final String EXTRA_KEY_SENSOR_ID = "sensor_id"; + public static final String EXTRA_KEY_CHALLENGE = "challenge"; /** * Used by the choose fingerprint wizard to indicate the wizard is @@ -90,6 +92,8 @@ public abstract class BiometricEnrollBase extends InstrumentedActivity { protected boolean mLaunchedConfirmLock; protected byte[] mToken; protected int mUserId; + protected int mSensorId; + protected long mChallenge; protected boolean mFromSettingsSummary; protected FooterBarMixin mFooterBarMixin; @@ -102,6 +106,8 @@ public abstract class BiometricEnrollBase extends InstrumentedActivity { if (mToken == null) { mToken = getIntent().getByteArrayExtra( ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN); + mChallenge = getIntent().getLongExtra(EXTRA_KEY_CHALLENGE, 0L); + mSensorId = getIntent().getIntExtra(EXTRA_KEY_SENSOR_ID, -1); } mFromSettingsSummary = getIntent().getBooleanExtra(EXTRA_FROM_SETTINGS_SUMMARY, false); if (savedInstanceState != null && mToken == null) { @@ -110,6 +116,8 @@ public abstract class BiometricEnrollBase extends InstrumentedActivity { ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN); mFromSettingsSummary = savedInstanceState.getBoolean(EXTRA_FROM_SETTINGS_SUMMARY, false); + mChallenge = savedInstanceState.getLong(EXTRA_KEY_CHALLENGE); + mSensorId = savedInstanceState.getInt(EXTRA_KEY_SENSOR_ID); } mUserId = getIntent().getIntExtra(Intent.EXTRA_USER_ID, UserHandle.myUserId()); } @@ -127,6 +135,8 @@ public abstract class BiometricEnrollBase extends InstrumentedActivity { outState.putBoolean(EXTRA_KEY_LAUNCHED_CONFIRM, mLaunchedConfirmLock); outState.putByteArray(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, mToken); outState.putBoolean(EXTRA_FROM_SETTINGS_SUMMARY, mFromSettingsSummary); + outState.putLong(EXTRA_KEY_CHALLENGE, mChallenge); + outState.putInt(EXTRA_KEY_SENSOR_ID, mSensorId); } @Override diff --git a/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java b/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java index 09344b0d0dd..b44c2c9da1a 100644 --- a/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java +++ b/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java @@ -243,6 +243,8 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase } BiometricUtils.copyMultiBiometricExtras(getIntent(), intent); intent.putExtra(EXTRA_FROM_SETTINGS_SUMMARY, mFromSettingsSummary); + intent.putExtra(EXTRA_KEY_CHALLENGE, mChallenge); + intent.putExtra(EXTRA_KEY_SENSOR_ID, mSensorId); startActivityForResult(intent, BIOMETRIC_FIND_SENSOR_REQUEST); } @@ -262,6 +264,8 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase overridePendingTransition(R.anim.sud_slide_next_in, R.anim.sud_slide_next_out); getNextButton().setEnabled(false); getChallenge(((sensorId, challenge) -> { + mSensorId = sensorId; + mChallenge = challenge; mToken = BiometricUtils.requestGatekeeperHat(this, data, mUserId, challenge); BiometricUtils.removeGatekeeperPasswordHandle(this, data); getNextButton().setEnabled(true); @@ -276,6 +280,8 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase overridePendingTransition(R.anim.sud_slide_next_in, R.anim.sud_slide_next_out); getNextButton().setEnabled(false); getChallenge(((sensorId, challenge) -> { + mSensorId = sensorId; + mChallenge = challenge; mToken = BiometricUtils.requestGatekeeperHat(this, data, mUserId, challenge); BiometricUtils.removeGatekeeperPasswordHandle(this, data); getNextButton().setEnabled(true); diff --git a/src/com/android/settings/biometrics/MultiBiometricEnrollHelper.java b/src/com/android/settings/biometrics/MultiBiometricEnrollHelper.java index 1ea6b08ac20..d32dc8b0a6e 100644 --- a/src/com/android/settings/biometrics/MultiBiometricEnrollHelper.java +++ b/src/com/android/settings/biometrics/MultiBiometricEnrollHelper.java @@ -72,6 +72,8 @@ public class MultiBiometricEnrollHelper { mGkPwHandle, mUserId, challenge); final Intent faceIntent = BiometricUtils.getFaceIntroIntent(mActivity, mActivity.getIntent()); + faceIntent.putExtra(BiometricEnrollBase.EXTRA_KEY_SENSOR_ID, sensorId); + faceIntent.putExtra(BiometricEnrollBase.EXTRA_KEY_CHALLENGE, challenge); if (mRequestEnrollFingerprint) { // Give FaceEnroll a pendingIntent pointing to fingerprint enrollment, so that it diff --git a/src/com/android/settings/biometrics/face/FaceEnrollEducation.java b/src/com/android/settings/biometrics/face/FaceEnrollEducation.java index 3e9fba281a9..6c5a4b473ed 100644 --- a/src/com/android/settings/biometrics/face/FaceEnrollEducation.java +++ b/src/com/android/settings/biometrics/face/FaceEnrollEducation.java @@ -183,6 +183,8 @@ public class FaceEnrollEducation extends BiometricEnrollBase { if (mUserId != UserHandle.USER_NULL) { intent.putExtra(Intent.EXTRA_USER_ID, mUserId); } + intent.putExtra(EXTRA_KEY_CHALLENGE, mChallenge); + intent.putExtra(EXTRA_KEY_SENSOR_ID, mSensorId); intent.putExtra(EXTRA_FROM_SETTINGS_SUMMARY, mFromSettingsSummary); BiometricUtils.copyMultiBiometricExtras(getIntent(), intent); final String flattenedString = getString(R.string.config_face_enroll); diff --git a/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java b/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java index 3bffbbf9cbf..9110292b2b3 100644 --- a/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java +++ b/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java @@ -112,6 +112,8 @@ public class FaceEnrollIntroduction extends BiometricEnrollIntroduction { // the challenge is ready. Let's just do this for now. mFaceManager.generateChallenge((sensorId, challenge) -> { mToken = BiometricUtils.requestGatekeeperHat(this, getIntent(), mUserId, challenge); + mSensorId = sensorId; + mChallenge = challenge; if (BiometricUtils.isMultiBiometricEnrollmentFlow(this)) { BiometricUtils.removeGatekeeperPasswordHandle(this, getIntent()); } diff --git a/src/com/android/settings/biometrics/face/FaceSettings.java b/src/com/android/settings/biometrics/face/FaceSettings.java index 775148532f2..038d448bfda 100644 --- a/src/com/android/settings/biometrics/face/FaceSettings.java +++ b/src/com/android/settings/biometrics/face/FaceSettings.java @@ -37,6 +37,7 @@ import androidx.preference.Preference; import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.Utils; +import com.android.settings.biometrics.BiometricEnrollBase; import com.android.settings.biometrics.BiometricUtils; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.overlay.FeatureFactory; @@ -67,6 +68,8 @@ public class FaceSettings extends DashboardFragment { private UserManager mUserManager; private FaceManager mFaceManager; private int mUserId; + private int mSensorId; + private long mChallenge; private byte[] mToken; private FaceSettingsAttentionPreferenceController mAttentionController; private FaceSettingsRemoveButtonPreferenceController mRemoveController; @@ -147,6 +150,8 @@ public class FaceSettings extends DashboardFragment { mUserManager = context.getSystemService(UserManager.class); mFaceManager = context.getSystemService(FaceManager.class); mToken = getIntent().getByteArrayExtra(KEY_TOKEN); + mSensorId = getIntent().getIntExtra(BiometricEnrollBase.EXTRA_KEY_SENSOR_ID, -1); + mChallenge = getIntent().getLongExtra(BiometricEnrollBase.EXTRA_KEY_CHALLENGE, 0L); mUserId = getActivity().getIntent().getIntExtra( Intent.EXTRA_USER_ID, UserHandle.myUserId()); @@ -247,6 +252,8 @@ public class FaceSettings extends DashboardFragment { mFaceManager.generateChallenge((sensorId, challenge) -> { mToken = BiometricUtils.requestGatekeeperHat(getPrefContext(), data, mUserId, challenge); + mSensorId = sensorId; + mChallenge = challenge; BiometricUtils.removeGatekeeperPasswordHandle(getPrefContext(), data); mAttentionController.setToken(mToken); mEnrollController.setToken(mToken); @@ -269,7 +276,7 @@ public class FaceSettings extends DashboardFragment { && !mConfirmingPassword) { // Revoke challenge and finish if (mToken != null) { - mFaceManager.revokeChallenge(); + mFaceManager.revokeChallenge(mSensorId, mUserId, mChallenge); mToken = null; } finish();