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();