summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/com/android/settings/password/ChooseLockPassword.java16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/com/android/settings/password/ChooseLockPassword.java b/src/com/android/settings/password/ChooseLockPassword.java
index 14f7d6bd6c..e60b4e6d0e 100644
--- a/src/com/android/settings/password/ChooseLockPassword.java
+++ b/src/com/android/settings/password/ChooseLockPassword.java
@@ -193,6 +193,7 @@ public class ChooseLockPassword extends SettingsActivity {
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 @@ public class ChooseLockPassword extends SettingsActivity {
}
}
// Is the password recently used?
- if (mLockPatternUtils.checkPasswordHistory(password, mUserId)) {
+ if (mLockPatternUtils.checkPasswordHistory(password, getPasswordHistoryHashFactor(),
+ mUserId)) {
errorCode |= RECENTLY_USED;
}
}
@@ -730,6 +732,18 @@ public class ChooseLockPassword extends SettingsActivity {
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();