Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d7254545 authored by AnilKumar Chimata's avatar AnilKumar Chimata Committed by dianlujitao
Browse files

frameworks: base: Port password retention feature

Port password retention feature for HW FDE.

This patch also include these changes:
   - Fix clearing of retained password
   - keyguard: Fix password doesnot sanitize after verification
   - LockSettings: fix the get password issue during boot up
   - frameworks/base: Fix pattern update issue

CRs-Fixed: 2210986
Change-Id: I2def56b14c10229b72feccd1c97b281cad65f282
parent 5ce00a98
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -91,4 +91,6 @@ interface ILockSettings {
            in byte[] recoveryKeyBlob,
            in byte[] recoveryKeyBlob,
            in List<WrappedApplicationKey> applicationKeys);
            in List<WrappedApplicationKey> applicationKeys);
    void closeSession(in String sessionId);
    void closeSession(in String sessionId);
    void sanitizePassword();
    String getPassword();
}
}
+11 −0
Original line number Original line Diff line number Diff line
@@ -810,6 +810,17 @@ public class LockPatternUtils {
        return true;
        return true;
    }
    }


    /**
     * clears stored password.
     */
    public void sanitizePassword() {
        try {
            getLockSettings().sanitizePassword();
        } catch (RemoteException re) {
            Log.e(TAG, "Couldn't sanitize password" + re);
        }
    }

    private void updateCryptoUserInfo(int userId) {
    private void updateCryptoUserInfo(int userId) {
        if (userId != UserHandle.USER_SYSTEM) {
        if (userId != UserHandle.USER_SYSTEM) {
            return;
            return;
+1 −0
Original line number Original line Diff line number Diff line
@@ -200,6 +200,7 @@ public abstract class KeyguardAbsKeyInputView extends LinearLayout
            boolean isValidPassword) {
            boolean isValidPassword) {
        boolean dismissKeyguard = KeyguardUpdateMonitor.getCurrentUser() == userId;
        boolean dismissKeyguard = KeyguardUpdateMonitor.getCurrentUser() == userId;
        if (matched) {
        if (matched) {
            mLockPatternUtils.sanitizePassword();
            mCallback.reportUnlockAttempt(userId, true, 0);
            mCallback.reportUnlockAttempt(userId, true, 0);
            if (dismissKeyguard) {
            if (dismissKeyguard) {
                mDismissing = true;
                mDismissing = true;
+1 −0
Original line number Original line Diff line number Diff line
@@ -351,6 +351,7 @@ public class KeyguardPatternView extends LinearLayout implements KeyguardSecurit
                boolean isValidPattern) {
                boolean isValidPattern) {
            boolean dismissKeyguard = KeyguardUpdateMonitor.getCurrentUser() == userId;
            boolean dismissKeyguard = KeyguardUpdateMonitor.getCurrentUser() == userId;
            if (matched) {
            if (matched) {
                mLockPatternUtils.sanitizePassword();
                mCallback.reportUnlockAttempt(userId, true, 0);
                mCallback.reportUnlockAttempt(userId, true, 0);
                if (dismissKeyguard) {
                if (dismissKeyguard) {
                    mLockPatternView.setDisplayMode(LockPatternView.DisplayMode.Correct);
                    mLockPatternView.setDisplayMode(LockPatternView.DisplayMode.Correct);
+16 −1
Original line number Original line Diff line number Diff line
@@ -138,6 +138,7 @@ import com.android.internal.util.FastXmlSerializer;
import com.android.internal.util.HexDump;
import com.android.internal.util.HexDump;
import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.Preconditions;
import com.android.internal.util.Preconditions;
import com.android.internal.widget.ILockSettings;
import com.android.internal.widget.LockPatternUtils;
import com.android.internal.widget.LockPatternUtils;
import com.android.server.storage.AppFuseBridge;
import com.android.server.storage.AppFuseBridge;
import com.android.server.wm.ActivityTaskManagerInternal;
import com.android.server.wm.ActivityTaskManagerInternal;
@@ -2512,8 +2513,22 @@ class StorageManagerService extends IStorageManager.Stub
            Slog.i(TAG, "changing encryption password...");
            Slog.i(TAG, "changing encryption password...");
        }
        }


        ILockSettings lockSettings = ILockSettings.Stub.asInterface(
                        ServiceManager.getService("lock_settings"));
        String currentPassword="default_password";
        try {
        try {
            mVold.fdeChangePassword(type, password);
            currentPassword = lockSettings.getPassword();
        } catch (Exception e) {
            Slog.wtf(TAG, "Couldn't get password" + e);
        }

        try {
            mVold.fdeChangePassword(type, currentPassword, password);
            try {
                lockSettings.sanitizePassword();
            } catch (Exception e) {
                Slog.wtf(TAG, "Couldn't sanitize password" + e);
            }
            return 0;
            return 0;
        } catch (Exception e) {
        } catch (Exception e) {
            Slog.wtf(TAG, e);
            Slog.wtf(TAG, e);
Loading