diff options
| author | 2020-01-24 17:30:14 +0000 | |
|---|---|---|
| committer | 2020-01-24 17:30:14 +0000 | |
| commit | e645d5c8509f2667e6759e42332cc518f990f0b4 (patch) | |
| tree | 562853e8d4617fef43490d8f0db82c3ac5ca3550 | |
| parent | b52e9ce8545e4132c4fdf872d66d2b02883dad35 (diff) | |
| parent | 3940a21321f2d16e8b008c85e720bfe1915a38eb (diff) | |
Force all devices to migrate to synthetic password am: 0b93d2b102 am: 3940a21321
Change-Id: I8a379813465f415721d99e496d54081644867b01
| -rw-r--r-- | services/core/java/com/android/server/locksettings/LockSettingsService.java | 17 | ||||
| -rw-r--r-- | services/tests/servicestests/src/com/android/server/locksettings/SyntheticPasswordTests.java | 105 |
2 files changed, 2 insertions, 120 deletions
diff --git a/services/core/java/com/android/server/locksettings/LockSettingsService.java b/services/core/java/com/android/server/locksettings/LockSettingsService.java index 9510db09aa25..3e039878e9ef 100644 --- a/services/core/java/com/android/server/locksettings/LockSettingsService.java +++ b/services/core/java/com/android/server/locksettings/LockSettingsService.java @@ -25,7 +25,6 @@ import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_NONE; import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_PASSWORD; import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_PATTERN; import static com.android.internal.widget.LockPatternUtils.EscrowTokenStateChangeCallback; -import static com.android.internal.widget.LockPatternUtils.SYNTHETIC_PASSWORD_ENABLED_KEY; import static com.android.internal.widget.LockPatternUtils.SYNTHETIC_PASSWORD_HANDLE_KEY; import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_LOCKOUT; import static com.android.internal.widget.LockPatternUtils.USER_FRP; @@ -2532,23 +2531,12 @@ public class LockSettingsService extends ILockSettings.Stub { return type == PersistentData.TYPE_SP || type == PersistentData.TYPE_SP_WEAVER; } long handle = getSyntheticPasswordHandleLocked(userId); - // This is a global setting - long enabled = getLong(SYNTHETIC_PASSWORD_ENABLED_KEY, - SYNTHETIC_PASSWORD_ENABLED_BY_DEFAULT, UserHandle.USER_SYSTEM); - return enabled != 0 && handle != SyntheticPasswordManager.DEFAULT_HANDLE; + return handle != SyntheticPasswordManager.DEFAULT_HANDLE; } @VisibleForTesting protected boolean shouldMigrateToSyntheticPasswordLocked(int userId) { - long handle = getSyntheticPasswordHandleLocked(userId); - // This is a global setting - long enabled = getLong(SYNTHETIC_PASSWORD_ENABLED_KEY, - SYNTHETIC_PASSWORD_ENABLED_BY_DEFAULT, UserHandle.USER_SYSTEM); - return enabled != 0 && handle == SyntheticPasswordManager.DEFAULT_HANDLE; - } - - private void enableSyntheticPasswordLocked() { - setLong(SYNTHETIC_PASSWORD_ENABLED_KEY, 1, UserHandle.USER_SYSTEM); + return true; } private VerifyCredentialResponse spBasedDoVerifyCredential(byte[] userCredential, @@ -2829,7 +2817,6 @@ public class LockSettingsService extends ILockSettings.Stub { throws RemoteException { if (DEBUG) Slog.d(TAG, "addEscrowToken: user=" + userId); synchronized (mSpManager) { - enableSyntheticPasswordLocked(); // Migrate to synthetic password based credentials if the user has no password, // the token can then be activated immediately. AuthenticationToken auth = null; diff --git a/services/tests/servicestests/src/com/android/server/locksettings/SyntheticPasswordTests.java b/services/tests/servicestests/src/com/android/server/locksettings/SyntheticPasswordTests.java index d9b13209d28c..33f7924b11c9 100644 --- a/services/tests/servicestests/src/com/android/server/locksettings/SyntheticPasswordTests.java +++ b/services/tests/servicestests/src/com/android/server/locksettings/SyntheticPasswordTests.java @@ -103,31 +103,6 @@ public class SyntheticPasswordTests extends BaseLockSettingsServiceTests { return mService.getLong(SYNTHETIC_PASSWORD_HANDLE_KEY, 0, userId) != 0; } - @Test - public void testPasswordMigration() throws RemoteException { - final byte[] password = "testPasswordMigration-password".getBytes(); - - disableSyntheticPassword(); - mService.setLockCredential(password, LockPatternUtils.CREDENTIAL_TYPE_PASSWORD, null, - PASSWORD_QUALITY_ALPHABETIC, PRIMARY_USER_ID, false); - long sid = mGateKeeperService.getSecureUserId(PRIMARY_USER_ID); - final byte[] primaryStorageKey = mStorageManager.getUserUnlockToken(PRIMARY_USER_ID); - enableSyntheticPassword(); - // Performs migration - assertEquals(VerifyCredentialResponse.RESPONSE_OK, mService.verifyCredential( - password, LockPatternUtils.CREDENTIAL_TYPE_PASSWORD, 0, PRIMARY_USER_ID) - .getResponseCode()); - assertEquals(sid, mGateKeeperService.getSecureUserId(PRIMARY_USER_ID)); - assertTrue(hasSyntheticPassword(PRIMARY_USER_ID)); - - // SP-based verification - assertEquals(VerifyCredentialResponse.RESPONSE_OK, mService.verifyCredential(password, - LockPatternUtils.CREDENTIAL_TYPE_PASSWORD, 0, PRIMARY_USER_ID) - .getResponseCode()); - assertArrayNotEquals(primaryStorageKey, - mStorageManager.getUserUnlockToken(PRIMARY_USER_ID)); - } - protected void initializeCredentialUnderSP(byte[] password, int userId) throws RemoteException { enableSyntheticPassword(); int quality = password != null ? PASSWORD_QUALITY_ALPHABETIC @@ -270,86 +245,6 @@ public class SyntheticPasswordTests extends BaseLockSettingsServiceTests { } @Test - public void testManagedProfileUnifiedChallengeMigration() throws RemoteException { - final byte[] UnifiedPassword = "testManagedProfileUnifiedChallengeMigration-pwd".getBytes(); - disableSyntheticPassword(); - mService.setLockCredential(UnifiedPassword, LockPatternUtils.CREDENTIAL_TYPE_PASSWORD, null, - PASSWORD_QUALITY_ALPHABETIC, PRIMARY_USER_ID, false); - mService.setSeparateProfileChallengeEnabled(MANAGED_PROFILE_USER_ID, false, null); - final long primarySid = mGateKeeperService.getSecureUserId(PRIMARY_USER_ID); - final long profileSid = mGateKeeperService.getSecureUserId(MANAGED_PROFILE_USER_ID); - final byte[] primaryStorageKey = mStorageManager.getUserUnlockToken(PRIMARY_USER_ID); - final byte[] profileStorageKey = mStorageManager.getUserUnlockToken(MANAGED_PROFILE_USER_ID); - assertTrue(primarySid != 0); - assertTrue(profileSid != 0); - assertTrue(profileSid != primarySid); - - // do migration - enableSyntheticPassword(); - assertEquals(VerifyCredentialResponse.RESPONSE_OK, mService.verifyCredential( - UnifiedPassword, LockPatternUtils.CREDENTIAL_TYPE_PASSWORD, 0, PRIMARY_USER_ID) - .getResponseCode()); - - // verify - assertEquals(VerifyCredentialResponse.RESPONSE_OK, mService.verifyCredential( - UnifiedPassword, LockPatternUtils.CREDENTIAL_TYPE_PASSWORD, 0, PRIMARY_USER_ID) - .getResponseCode()); - assertEquals(primarySid, mGateKeeperService.getSecureUserId(PRIMARY_USER_ID)); - assertEquals(profileSid, mGateKeeperService.getSecureUserId(MANAGED_PROFILE_USER_ID)); - assertArrayNotEquals(primaryStorageKey, - mStorageManager.getUserUnlockToken(PRIMARY_USER_ID)); - assertArrayNotEquals(profileStorageKey, - mStorageManager.getUserUnlockToken(MANAGED_PROFILE_USER_ID)); - assertTrue(hasSyntheticPassword(PRIMARY_USER_ID)); - assertTrue(hasSyntheticPassword(MANAGED_PROFILE_USER_ID)); - } - - @Test - public void testManagedProfileSeparateChallengeMigration() throws RemoteException { - final byte[] primaryPassword = - "testManagedProfileSeparateChallengeMigration-primary".getBytes(); - final byte[] profilePassword = - "testManagedProfileSeparateChallengeMigration-profile".getBytes(); - disableSyntheticPassword(); - mService.setLockCredential(primaryPassword, LockPatternUtils.CREDENTIAL_TYPE_PASSWORD, null, - PASSWORD_QUALITY_ALPHABETIC, PRIMARY_USER_ID, false); - mService.setLockCredential(profilePassword, LockPatternUtils.CREDENTIAL_TYPE_PASSWORD, null, - PASSWORD_QUALITY_ALPHABETIC, MANAGED_PROFILE_USER_ID, false); - final long primarySid = mGateKeeperService.getSecureUserId(PRIMARY_USER_ID); - final long profileSid = mGateKeeperService.getSecureUserId(MANAGED_PROFILE_USER_ID); - final byte[] primaryStorageKey = mStorageManager.getUserUnlockToken(PRIMARY_USER_ID); - final byte[] profileStorageKey = mStorageManager.getUserUnlockToken(MANAGED_PROFILE_USER_ID); - assertTrue(primarySid != 0); - assertTrue(profileSid != 0); - assertTrue(profileSid != primarySid); - - // do migration - enableSyntheticPassword(); - assertEquals(VerifyCredentialResponse.RESPONSE_OK, mService.verifyCredential( - primaryPassword, LockPatternUtils.CREDENTIAL_TYPE_PASSWORD, 0, PRIMARY_USER_ID) - .getResponseCode()); - assertEquals(VerifyCredentialResponse.RESPONSE_OK, mService.verifyCredential( - profilePassword, LockPatternUtils.CREDENTIAL_TYPE_PASSWORD, - 0, MANAGED_PROFILE_USER_ID).getResponseCode()); - - // verify - assertEquals(VerifyCredentialResponse.RESPONSE_OK, mService.verifyCredential( - primaryPassword, LockPatternUtils.CREDENTIAL_TYPE_PASSWORD, 0, PRIMARY_USER_ID) - .getResponseCode()); - assertEquals(VerifyCredentialResponse.RESPONSE_OK, mService.verifyCredential( - profilePassword, LockPatternUtils.CREDENTIAL_TYPE_PASSWORD, - 0, MANAGED_PROFILE_USER_ID).getResponseCode()); - assertEquals(primarySid, mGateKeeperService.getSecureUserId(PRIMARY_USER_ID)); - assertEquals(profileSid, mGateKeeperService.getSecureUserId(MANAGED_PROFILE_USER_ID)); - assertArrayNotEquals(primaryStorageKey, - mStorageManager.getUserUnlockToken(PRIMARY_USER_ID)); - assertArrayNotEquals(profileStorageKey, - mStorageManager.getUserUnlockToken(MANAGED_PROFILE_USER_ID)); - assertTrue(hasSyntheticPassword(PRIMARY_USER_ID)); - assertTrue(hasSyntheticPassword(MANAGED_PROFILE_USER_ID)); - } - - @Test public void testTokenBasedResetPassword() throws RemoteException { final byte[] password = "password".getBytes(); final byte[] pattern = "123654".getBytes(); |