Switch to new checkPasswordHistory method
This is part of the fix that upgrades the hashing of password history
to a more secure design.
Bug: 32826058
Test: manual
Change-Id: Ib022c8db1f7b63f75b69d0177fa5f6be528a83c5
diff --git a/src/com/android/settings/password/ChooseLockPassword.java b/src/com/android/settings/password/ChooseLockPassword.java
index 14f7d6b..e60b4e6 100644
--- a/src/com/android/settings/password/ChooseLockPassword.java
+++ b/src/com/android/settings/password/ChooseLockPassword.java
@@ -193,6 +193,7 @@
private int mPasswordMinLengthToFulfillAllPolicies = 0;
protected int mUserId;
private boolean mHideDrawer = false;
+ private byte[] mPasswordHistoryHashFactor;
/**
* Password requirements that we need to verify.
*/
@@ -667,7 +668,8 @@
}
}
// Is the password recently used?
- if (mLockPatternUtils.checkPasswordHistory(password, mUserId)) {
+ if (mLockPatternUtils.checkPasswordHistory(password, getPasswordHistoryHashFactor(),
+ mUserId)) {
errorCode |= RECENTLY_USED;
}
}
@@ -730,6 +732,18 @@
return errorCode;
}
+ /**
+ * Lazily compute and return the history hash factor of the current user (mUserId), used for
+ * password history check.
+ */
+ private byte[] getPasswordHistoryHashFactor() {
+ if (mPasswordHistoryHashFactor == null) {
+ mPasswordHistoryHashFactor = mLockPatternUtils.getPasswordHistoryHashFactor(
+ mCurrentPassword, mUserId);
+ }
+ return mPasswordHistoryHashFactor;
+ }
+
public void handleNext() {
if (mSaveAndFinishWorker != null) return;
mChosenPassword = mPasswordEntry.getText().toString();