diff options
-rw-r--r-- | src/com/android/settings/password/ChooseLockPassword.java | 16 |
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(); |