diff options
| author | 2019-12-26 19:01:06 +0000 | |
|---|---|---|
| committer | 2019-12-26 19:01:06 +0000 | |
| commit | afc0a810e9cc99e5ecf80991af59852f6136e80c (patch) | |
| tree | d21184838a61d63ff7226b255c5c47b31d3474e5 | |
| parent | 60e15a453a060ae64e84a87c3ace09a4f83a77cf (diff) | |
| parent | bcbc5f5a2d8c0d8c93a787984108bd2fba3f6565 (diff) | |
Merge "Force all devices to migrate to synthetic password"
| -rw-r--r-- | services/core/java/com/android/server/locksettings/LockSettingsService.java | 18 | ||||
| -rw-r--r-- | services/tests/servicestests/src/com/android/server/locksettings/SyntheticPasswordTests.java | 99 |
2 files changed, 2 insertions, 115 deletions
diff --git a/services/core/java/com/android/server/locksettings/LockSettingsService.java b/services/core/java/com/android/server/locksettings/LockSettingsService.java index 51fcbb0c8d99..bcc4c1fd902c 100644 --- a/services/core/java/com/android/server/locksettings/LockSettingsService.java +++ b/services/core/java/com/android/server/locksettings/LockSettingsService.java @@ -27,8 +27,6 @@ import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_PASSW import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_PATTERN; import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_PIN; import static com.android.internal.widget.LockPatternUtils.EscrowTokenStateChangeCallback; -import static com.android.internal.widget.LockPatternUtils.SYNTHETIC_PASSWORD_ENABLED_BY_DEFAULT; -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; @@ -2582,23 +2580,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(LockscreenCredential userCredential, @@ -2937,7 +2924,6 @@ public class LockSettingsService extends ILockSettings.Stub { private long addEscrowToken(byte[] token, int userId, EscrowTokenStateChangeCallback callback) { 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 d6ef2d459769..74570671226a 100644 --- a/services/tests/servicestests/src/com/android/server/locksettings/SyntheticPasswordTests.java +++ b/services/tests/servicestests/src/com/android/server/locksettings/SyntheticPasswordTests.java @@ -101,30 +101,6 @@ public class SyntheticPasswordTests extends BaseLockSettingsServiceTests { return mService.getLong(SYNTHETIC_PASSWORD_HANDLE_KEY, 0, userId) != 0; } - @Test - public void testPasswordMigration() throws RemoteException { - final LockscreenCredential password = newPassword("testPasswordMigration-password"); - - disableSyntheticPassword(); - assertTrue(mService.setLockCredential(password, nonePassword(), PRIMARY_USER_ID)); - 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, 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, 0, PRIMARY_USER_ID) - .getResponseCode()); - assertArrayNotEquals(primaryStorageKey, - mStorageManager.getUserUnlockToken(PRIMARY_USER_ID)); - } - protected void initializeCredentialUnderSP(LockscreenCredential password, int userId) throws RemoteException { enableSyntheticPassword(); @@ -253,81 +229,6 @@ public class SyntheticPasswordTests extends BaseLockSettingsServiceTests { } @Test - public void testManagedProfileUnifiedChallengeMigration() throws RemoteException { - LockscreenCredential UnifiedPassword = newPassword("unified-pwd"); - disableSyntheticPassword(); - mService.setLockCredential(UnifiedPassword, nonePassword(), PRIMARY_USER_ID); - 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); - byte[] primaryStorageKey = mStorageManager.getUserUnlockToken(PRIMARY_USER_ID); - 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, 0, PRIMARY_USER_ID) - .getResponseCode()); - - // verify - assertEquals(VerifyCredentialResponse.RESPONSE_OK, mService.verifyCredential( - UnifiedPassword, 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 { - LockscreenCredential primaryPassword = newPassword("primary"); - LockscreenCredential profilePassword = newPassword("profile"); - disableSyntheticPassword(); - mService.setLockCredential(primaryPassword, nonePassword(), PRIMARY_USER_ID); - mService.setLockCredential(profilePassword, nonePassword(), MANAGED_PROFILE_USER_ID); - final long primarySid = mGateKeeperService.getSecureUserId(PRIMARY_USER_ID); - final long profileSid = mGateKeeperService.getSecureUserId(MANAGED_PROFILE_USER_ID); - byte[] primaryStorageKey = mStorageManager.getUserUnlockToken(PRIMARY_USER_ID); - 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, 0, PRIMARY_USER_ID) - .getResponseCode()); - assertEquals(VerifyCredentialResponse.RESPONSE_OK, mService.verifyCredential( - profilePassword, 0, MANAGED_PROFILE_USER_ID) - .getResponseCode()); - - // verify - assertEquals(VerifyCredentialResponse.RESPONSE_OK, mService.verifyCredential( - primaryPassword, 0, PRIMARY_USER_ID) - .getResponseCode()); - assertEquals(VerifyCredentialResponse.RESPONSE_OK, mService.verifyCredential( - profilePassword, 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 { LockscreenCredential password = newPassword("password"); LockscreenCredential pattern = newPattern("123654"); |