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

Commit 4d36be3f authored by Rubin Xu's avatar Rubin Xu
Browse files

Make synthetic password enabled by default

Also provide a shell command to disable it, for testing purpose.

Bug: 37464893
Test: manual
Change-Id: Ibe1276a0e52abff840d3094a822519dd3fc46672
parent 74fa79e6
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -1672,6 +1672,10 @@ public class LockPatternUtils {
        setLong(SYNTHETIC_PASSWORD_ENABLED_KEY, 1L, UserHandle.USER_SYSTEM);
    }

    public void disableSyntheticPassword() {
        setLong(SYNTHETIC_PASSWORD_ENABLED_KEY, 0L, UserHandle.USER_SYSTEM);
    }

    public boolean isSyntheticPasswordEnabled() {
        return getLong(SYNTHETIC_PASSWORD_ENABLED_KEY, 0, UserHandle.USER_SYSTEM) != 0;
    }
+5 −2
Original line number Diff line number Diff line
@@ -134,6 +134,7 @@ public class LockSettingsService extends ILockSettings.Stub {

    private static final int PROFILE_KEY_IV_SIZE = 12;
    private static final String SEPARATE_PROFILE_CHALLENGE_KEY = "lockscreen.profilechallenge";
    private static final int SYNTHETIC_PASSWORD_ENABLED_BY_DEFAULT = 1;

    // Order of holding lock: mSeparateChallengeLock -> mSpManager -> this
    private final Object mSeparateChallengeLock = new Object();
@@ -1895,14 +1896,16 @@ public class LockSettingsService extends ILockSettings.Stub {
    private boolean isSyntheticPasswordBasedCredentialLocked(int userId) throws RemoteException {
        long handle = getSyntheticPasswordHandleLocked(userId);
        // This is a global setting
        long enabled = getLong(SYNTHETIC_PASSWORD_ENABLED_KEY, 0, UserHandle.USER_SYSTEM);
        long enabled = getLong(SYNTHETIC_PASSWORD_ENABLED_KEY,
                SYNTHETIC_PASSWORD_ENABLED_BY_DEFAULT, UserHandle.USER_SYSTEM);
      return enabled != 0 && handle != SyntheticPasswordManager.DEFAULT_HANDLE;
    }

    private boolean shouldMigrateToSyntheticPasswordLocked(int userId) throws RemoteException {
        long handle = getSyntheticPasswordHandleLocked(userId);
        // This is a global setting
        long enabled = getLong(SYNTHETIC_PASSWORD_ENABLED_KEY, 0, UserHandle.USER_SYSTEM);
        long enabled = getLong(SYNTHETIC_PASSWORD_ENABLED_KEY,
                SYNTHETIC_PASSWORD_ENABLED_BY_DEFAULT, UserHandle.USER_SYSTEM);
        return enabled != 0 && handle == SyntheticPasswordManager.DEFAULT_HANDLE;
    }

+10 −5
Original line number Diff line number Diff line
@@ -71,7 +71,7 @@ class LockSettingsShellCommand extends ShellCommand {
                    runClear();
                    break;
                case COMMAND_SP:
                    runEnableSp();
                    runChangeSp();
                    break;
                case COMMAND_SET_DISABLED:
                    runSetDisabled();
@@ -107,10 +107,15 @@ class LockSettingsShellCommand extends ShellCommand {
        mNew = getNextArg();
    }

    private void runEnableSp() {
    private void runChangeSp() {
        if (mNew != null ) {
            if ("1".equals(mNew)) {
                mLockPatternUtils.enableSyntheticPassword();
                getOutPrintWriter().println("Synthetic password enabled");
            } else if ("0".equals(mNew)) {
                mLockPatternUtils.disableSyntheticPassword();
                getOutPrintWriter().println("Synthetic password disabled");
            }
        }
        getOutPrintWriter().println(String.format("SP Enabled = %b",
                mLockPatternUtils.isSyntheticPasswordEnabled()));