summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/com/android/internal/widget/ILockSettings.aidl2
-rw-r--r--core/java/com/android/internal/widget/LockPatternUtils.java81
-rw-r--r--services/core/java/com/android/server/locksettings/LockSettingsService.java77
-rw-r--r--services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTests.java79
4 files changed, 140 insertions, 99 deletions
diff --git a/core/java/com/android/internal/widget/ILockSettings.aidl b/core/java/com/android/internal/widget/ILockSettings.aidl
index b36c3fa79251..b626fc6e0608 100644
--- a/core/java/com/android/internal/widget/ILockSettings.aidl
+++ b/core/java/com/android/internal/widget/ILockSettings.aidl
@@ -42,7 +42,7 @@ interface ILockSettings {
long getLong(in String key, in long defaultValue, in int userId);
@UnsupportedAppUsage
String getString(in String key, in String defaultValue, in int userId);
- void setLockCredential(in byte[] credential, int type, in byte[] savedCredential, int requestedQuality, int userId, boolean allowUntrustedChange);
+ boolean setLockCredential(in byte[] credential, int type, in byte[] savedCredential, int requestedQuality, int userId, boolean allowUntrustedChange);
void resetKeyStore(int userId);
VerifyCredentialResponse checkCredential(in byte[] credential, int type, int userId,
in ICheckCredentialProgressCallback progressCallback);
diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java
index 32867a8949e6..070121cd1feb 100644
--- a/core/java/com/android/internal/widget/LockPatternUtils.java
+++ b/core/java/com/android/internal/widget/LockPatternUtils.java
@@ -680,6 +680,15 @@ public class LockPatternUtils {
/**
* Clear any lock pattern or password.
+
+ * <p> This method will fail (returning {@code false}) if the previously
+ * saved password provided is incorrect, or if the lockscreen verification
+ * is still being throttled.
+ *
+ * @param savedCredential The previously saved credential
+ * @param userHandle the user whose pattern is to be saved.
+ * @return whether this was successful or not.
+ * @throws RuntimeException if password change encountered an unrecoverable error.
*/
public boolean clearLock(byte[] savedCredential, int userHandle) {
return clearLock(savedCredential, userHandle, false);
@@ -687,19 +696,27 @@ public class LockPatternUtils {
/**
* Clear any lock pattern or password, with the option to ignore incorrect existing credential.
+ * <p> This method will fail (returning {@code false}) if the previously
+ * saved password provided is incorrect, or if the lockscreen verification
+ * is still being throttled.
+ *
+ * @param savedCredential The previously saved credential
+ * @param userHandle the user whose pattern is to be saved.
+ * @return whether this was successful or not.
+ * @throws RuntimeException if password change encountered an unrecoverable error.
*/
public boolean clearLock(byte[] savedCredential, int userHandle, boolean allowUntrustedChange) {
final int currentQuality = getKeyguardStoredPasswordQuality(userHandle);
setKeyguardStoredPasswordQuality(PASSWORD_QUALITY_UNSPECIFIED, userHandle);
- try{
- getLockSettings().setLockCredential(null, CREDENTIAL_TYPE_NONE,
- savedCredential, PASSWORD_QUALITY_UNSPECIFIED, userHandle,
- allowUntrustedChange);
- } catch (Exception e) {
- Log.e(TAG, "Failed to clear lock", e);
+ try {
+ if (!getLockSettings().setLockCredential(null, CREDENTIAL_TYPE_NONE, savedCredential,
+ PASSWORD_QUALITY_UNSPECIFIED, userHandle, allowUntrustedChange)) {
+ return false;
+ }
+ } catch (RemoteException | RuntimeException e) {
setKeyguardStoredPasswordQuality(currentQuality, userHandle);
- return false;
+ throw new RuntimeException("Failed to clear lock", e);
}
if (userHandle == UserHandle.USER_SYSTEM) {
@@ -747,11 +764,15 @@ public class LockPatternUtils {
/**
* Save a lock pattern.
+ *
+ * <p> This method will fail (returning {@code false}) if the previously saved pattern provided
+ * is incorrect, or if the lockscreen verification is still being throttled.
+ *
* @param pattern The new pattern to save.
* @param savedPattern The previously saved pattern, converted to byte[] format
* @param userId the user whose pattern is to be saved.
- *
* @return whether this was successful or not.
+ * @throws RuntimeException if password change encountered an unrecoverable error.
*/
public boolean saveLockPattern(List<LockPatternView.Cell> pattern, byte[] savedPattern,
int userId) {
@@ -760,13 +781,17 @@ public class LockPatternUtils {
/**
* Save a lock pattern.
+ *
+ * <p> This method will fail (returning {@code false}) if the previously saved pattern provided
+ * is incorrect, or if the lockscreen verification is still being throttled.
+ *
* @param pattern The new pattern to save.
* @param savedPattern The previously saved pattern, converted to byte[] format
* @param userId the user whose pattern is to be saved.
* @param allowUntrustedChange whether we want to allow saving a new password if the existing
* password being provided is incorrect.
- *
* @return whether this was successful or not.
+ * @throws RuntimeException if password change encountered an unrecoverable error.
*/
public boolean saveLockPattern(List<LockPatternView.Cell> pattern, byte[] savedPattern,
int userId, boolean allowUntrustedChange) {
@@ -783,12 +808,13 @@ public class LockPatternUtils {
final int currentQuality = getKeyguardStoredPasswordQuality(userId);
setKeyguardStoredPasswordQuality(PASSWORD_QUALITY_SOMETHING, userId);
try {
- getLockSettings().setLockCredential(bytePattern, CREDENTIAL_TYPE_PATTERN, savedPattern,
- PASSWORD_QUALITY_SOMETHING, userId, allowUntrustedChange);
- } catch (Exception e) {
- Log.e(TAG, "Couldn't save lock pattern", e);
+ if (!getLockSettings().setLockCredential(bytePattern, CREDENTIAL_TYPE_PATTERN,
+ savedPattern, PASSWORD_QUALITY_SOMETHING, userId, allowUntrustedChange)) {
+ return false;
+ }
+ } catch (RemoteException | RuntimeException e) {
setKeyguardStoredPasswordQuality(currentQuality, userId);
- return false;
+ throw new RuntimeException("Couldn't save lock pattern", e);
}
// Update the device encryption password.
if (userId == UserHandle.USER_SYSTEM
@@ -906,14 +932,18 @@ public class LockPatternUtils {
* Save a lock password. Does not ensure that the password is as good
* as the requested mode, but will adjust the mode to be as good as the
* password.
+ *
+ * <p> This method will fail (returning {@code false}) if the previously
+ * saved password provided is incorrect, or if the lockscreen verification
+ * is still being throttled.
+ *
* @param password The password to save
* @param savedPassword The previously saved lock password, or null if none
* @param requestedQuality {@see DevicePolicyManager#getPasswordQuality(
* android.content.ComponentName)}
* @param userHandle The userId of the user to change the password for
- *
* @return whether this was successful or not.
- *
+ * @throws RuntimeException if password change encountered an unrecoverable error.
* @deprecated Pass password as a byte array
*/
@Deprecated
@@ -928,13 +958,18 @@ public class LockPatternUtils {
* Save a lock password. Does not ensure that the password is as good
* as the requested mode, but will adjust the mode to be as good as the
* password.
+ *
+ * <p> This method will fail (returning {@code false}) if the previously
+ * saved password provided is incorrect, or if the lockscreen verification
+ * is still being throttled.
+ *
* @param password The password to save
* @param savedPassword The previously saved lock password, or null if none
* @param requestedQuality {@see DevicePolicyManager#getPasswordQuality(
* android.content.ComponentName)}
* @param userHandle The userId of the user to change the password for
- *
* @return whether this was successful or not.
+ * @throws RuntimeException if password change encountered an unrecoverable error.
*/
public boolean saveLockPassword(byte[] password, byte[] savedPassword, int requestedQuality,
int userHandle) {
@@ -946,6 +981,11 @@ public class LockPatternUtils {
* Save a lock password. Does not ensure that the password is as good
* as the requested mode, but will adjust the mode to be as good as the
* password.
+ *
+ * <p> This method will fail (returning {@code false}) if the previously
+ * saved password provided is incorrect, or if the lockscreen verification
+ * is still being throttled.
+ *
* @param password The password to save
* @param savedPassword The previously saved lock password, or null if none
* @param requestedQuality {@see DevicePolicyManager#getPasswordQuality(
@@ -953,9 +993,9 @@ public class LockPatternUtils {
* @param userHandle The userId of the user to change the password for
* @param allowUntrustedChange whether we want to allow saving a new password if the existing
* password being provided is incorrect.
- *
* @return whether this method saved the new password successfully or not. This flow will fail
* and return false if the given credential is wrong and allowUntrustedChange is false.
+ * @throws RuntimeException if password change encountered an unrecoverable error.
*/
public boolean saveLockPassword(byte[] password, byte[] savedPassword,
int requestedQuality, int userHandle, boolean allowUntrustedChange) {
@@ -981,10 +1021,9 @@ public class LockPatternUtils {
try {
getLockSettings().setLockCredential(password, CREDENTIAL_TYPE_PASSWORD, savedPassword,
requestedQuality, userHandle, allowUntrustedChange);
- } catch (Exception e) {
- Log.e(TAG, "Unable to save lock password", e);
+ } catch (RemoteException | RuntimeException e) {
setKeyguardStoredPasswordQuality(currentQuality, userHandle);
- return false;
+ throw new RuntimeException("Unable to save lock password", e);
}
updateEncryptionPasswordIfNeeded(password, passwordQuality, userHandle);
diff --git a/services/core/java/com/android/server/locksettings/LockSettingsService.java b/services/core/java/com/android/server/locksettings/LockSettingsService.java
index ccc0d4b8334c..b7eca29ac04c 100644
--- a/services/core/java/com/android/server/locksettings/LockSettingsService.java
+++ b/services/core/java/com/android/server/locksettings/LockSettingsService.java
@@ -1461,7 +1461,7 @@ public class LockSettingsService extends ILockSettings.Stub {
// This method should be called by LockPatternUtil only, all internal methods in this class
// should call setLockCredentialInternal.
@Override
- public void setLockCredential(byte[] credential, int type,
+ public boolean setLockCredential(byte[] credential, int type,
byte[] savedCredential, int requestedQuality, int userId,
boolean allowUntrustedChange) {
@@ -1471,8 +1471,10 @@ public class LockSettingsService extends ILockSettings.Stub {
}
checkWritePermission(userId);
synchronized (mSeparateChallengeLock) {
- setLockCredentialInternal(credential, type, savedCredential, requestedQuality, userId,
- allowUntrustedChange, /* isLockTiedToParent= */ false);
+ if (!setLockCredentialInternal(credential, type, savedCredential, requestedQuality,
+ userId, allowUntrustedChange, /* isLockTiedToParent= */ false)) {
+ return false;
+ }
setSeparateProfileChallengeEnabledLocked(userId, true, null);
notifyPasswordChanged(userId);
}
@@ -1481,13 +1483,14 @@ public class LockSettingsService extends ILockSettings.Stub {
setDeviceUnlockedForUser(userId);
}
notifySeparateProfileChallengeChanged(userId);
+ return true;
}
/**
* @param isLockTiedToParent is {@code true} if {@code userId} is a profile and its new
* credentials are being tied to its parent's credentials.
*/
- private void setLockCredentialInternal(byte[] credential, @CredentialType int credentialType,
+ private boolean setLockCredentialInternal(byte[] credential, @CredentialType int credentialType,
byte[] savedCredential, int requestedQuality, int userId, boolean allowUntrustedChange,
boolean isLockTiedToParent) {
// Normalize savedCredential and credential such that empty string is always represented
@@ -1500,9 +1503,9 @@ public class LockSettingsService extends ILockSettings.Stub {
}
synchronized (mSpManager) {
if (isSyntheticPasswordBasedCredentialLocked(userId)) {
- spBasedSetLockCredentialInternalLocked(credential, credentialType, savedCredential,
- requestedQuality, userId, allowUntrustedChange, isLockTiedToParent);
- return;
+ return spBasedSetLockCredentialInternalLocked(credential, credentialType,
+ savedCredential, requestedQuality, userId, allowUntrustedChange,
+ isLockTiedToParent);
}
}
@@ -1519,7 +1522,7 @@ public class LockSettingsService extends ILockSettings.Stub {
setUserPasswordMetrics(CREDENTIAL_TYPE_NONE, null, userId);
sendCredentialsOnChangeIfRequired(
credentialType, credential, userId, isLockTiedToParent);
- return;
+ return true;
}
if (credential == null) {
throw new IllegalArgumentException("Null credential with mismatched credential type");
@@ -1552,37 +1555,38 @@ public class LockSettingsService extends ILockSettings.Stub {
if (shouldMigrateToSyntheticPasswordLocked(userId)) {
initializeSyntheticPasswordLocked(currentHandle.hash, savedCredential,
currentHandle.type, requestedQuality, userId);
- spBasedSetLockCredentialInternalLocked(credential, credentialType, savedCredential,
- requestedQuality, userId, allowUntrustedChange, isLockTiedToParent);
- return;
+ return spBasedSetLockCredentialInternalLocked(credential, credentialType,
+ savedCredential, requestedQuality, userId, allowUntrustedChange,
+ isLockTiedToParent);
}
}
if (DEBUG) Slog.d(TAG, "setLockCredentialInternal: user=" + userId);
byte[] enrolledHandle = enrollCredential(currentHandle.hash, savedCredential, credential,
userId);
- if (enrolledHandle != null) {
- CredentialHash willStore = CredentialHash.create(enrolledHandle, credentialType);
- mStorage.writeCredentialHash(willStore, userId);
- // push new secret and auth token to vold
- GateKeeperResponse gkResponse;
- try {
- gkResponse = getGateKeeperService().verifyChallenge(userId, 0, willStore.hash,
- credential);
- } catch (RemoteException e) {
- throw new IllegalStateException("Failed to verify current credential", e);
- }
- setUserKeyProtection(userId, credential, convertResponse(gkResponse));
- fixateNewestUserKeyAuth(userId);
- // Refresh the auth token
- doVerifyCredential(credential, credentialType, CHALLENGE_FROM_CALLER, 0, userId,
- null /* progressCallback */);
- synchronizeUnifiedWorkChallengeForProfiles(userId, null);
- sendCredentialsOnChangeIfRequired(
- credentialType, credential, userId, isLockTiedToParent);
- } else {
- throw new IllegalStateException(String.format("Failed to enroll %s",
+ if (enrolledHandle == null) {
+ Slog.w(TAG, String.format("Failed to enroll %s: incorrect credential",
credentialType == CREDENTIAL_TYPE_PASSWORD ? "password" : "pattern"));
+ return false;
+ }
+ CredentialHash willStore = CredentialHash.create(enrolledHandle, credentialType);
+ mStorage.writeCredentialHash(willStore, userId);
+ // push new secret and auth token to vold
+ GateKeeperResponse gkResponse;
+ try {
+ gkResponse = getGateKeeperService().verifyChallenge(userId, 0, willStore.hash,
+ credential);
+ } catch (RemoteException e) {
+ throw new IllegalStateException("Failed to verify current credential", e);
}
+ setUserKeyProtection(userId, credential, convertResponse(gkResponse));
+ fixateNewestUserKeyAuth(userId);
+ // Refresh the auth token
+ doVerifyCredential(credential, credentialType, CHALLENGE_FROM_CALLER, 0, userId,
+ null /* progressCallback */);
+ synchronizeUnifiedWorkChallengeForProfiles(userId, null);
+ sendCredentialsOnChangeIfRequired(
+ credentialType, credential, userId, isLockTiedToParent);
+ return true;
}
private VerifyCredentialResponse convertResponse(GateKeeperResponse gateKeeperResponse) {
@@ -2711,7 +2715,7 @@ public class LockSettingsService extends ILockSettings.Stub {
}
@GuardedBy("mSpManager")
- private void spBasedSetLockCredentialInternalLocked(byte[] credential, int credentialType,
+ private boolean spBasedSetLockCredentialInternalLocked(byte[] credential, int credentialType,
byte[] savedCredential, int requestedQuality, int userId,
boolean allowUntrustedChange, boolean isLockTiedToParent) {
if (DEBUG) Slog.d(TAG, "spBasedSetLockCredentialInternalLocked: user=" + userId);
@@ -2736,8 +2740,9 @@ public class LockSettingsService extends ILockSettings.Stub {
// If existing credential is provided, the existing credential must match.
if (savedCredential != null && auth == null) {
- throw new IllegalStateException(String.format("Failed to enroll %s",
+ Slog.w(TAG, String.format("Failed to enroll %s: incorrect credential",
credentialType == CREDENTIAL_TYPE_PASSWORD ? "password" : "pattern"));
+ return false;
}
boolean untrustedReset = false;
if (auth != null) {
@@ -2757,7 +2762,8 @@ public class LockSettingsService extends ILockSettings.Stub {
}
untrustedReset = true;
} else /* responseCode == VerifyCredentialResponse.RESPONSE_RETRY */ {
- throw new IllegalStateException("Rate limit exceeded, so password was not changed.");
+ Slog.w(TAG, "Rate limit exceeded, so password was not changed.");
+ return false;
}
if (auth != null) {
@@ -2779,6 +2785,7 @@ public class LockSettingsService extends ILockSettings.Stub {
// synthetic password. That would invalidate existing escrow tokens though.
}
sendCredentialsOnChangeIfRequired(credentialType, credential, userId, isLockTiedToParent);
+ return true;
}
/**
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTests.java b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTests.java
index 67d6eda1b3ee..7354ad4b9ac3 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTests.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTests.java
@@ -92,24 +92,18 @@ public class LockSettingsServiceTests extends BaseLockSettingsServiceTests {
public void testChangePasswordFailPrimaryUser() throws RemoteException {
final long sid = 1234;
- final String FAILED_MESSAGE = "Failed to enroll password";
initializeStorageWithCredential(PRIMARY_USER_ID, "password", CREDENTIAL_TYPE_PASSWORD, sid);
- try {
- mService.setLockCredential("newpwd".getBytes(), CREDENTIAL_TYPE_PASSWORD,
- "badpwd".getBytes(), PASSWORD_QUALITY_ALPHABETIC, PRIMARY_USER_ID, false);
- fail("Did not fail when enrolling using incorrect credential");
- } catch (IllegalStateException expected) {
- assertTrue(expected.getMessage().equals(FAILED_MESSAGE));
- }
+ assertFalse(mService.setLockCredential("newpwd".getBytes(), CREDENTIAL_TYPE_PASSWORD,
+ "badpwd".getBytes(), PASSWORD_QUALITY_ALPHABETIC, PRIMARY_USER_ID, false));
assertVerifyCredentials(PRIMARY_USER_ID, "password", CREDENTIAL_TYPE_PASSWORD, sid);
}
public void testClearPasswordPrimaryUser() throws RemoteException {
final String PASSWORD = "password";
initializeStorageWithCredential(PRIMARY_USER_ID, PASSWORD, CREDENTIAL_TYPE_PASSWORD, 1234);
- mService.setLockCredential(null, CREDENTIAL_TYPE_NONE, PASSWORD.getBytes(),
- PASSWORD_QUALITY_UNSPECIFIED, PRIMARY_USER_ID, false);
+ assertTrue(mService.setLockCredential(null, CREDENTIAL_TYPE_NONE, PASSWORD.getBytes(),
+ PASSWORD_QUALITY_UNSPECIFIED, PRIMARY_USER_ID, false));
assertFalse(mService.havePassword(PRIMARY_USER_ID));
assertFalse(mService.havePattern(PRIMARY_USER_ID));
assertEquals(0, mGateKeeperService.getSecureUserId(PRIMARY_USER_ID));
@@ -118,9 +112,9 @@ public class LockSettingsServiceTests extends BaseLockSettingsServiceTests {
public void testManagedProfileUnifiedChallenge() throws RemoteException {
final String firstUnifiedPassword = "testManagedProfileUnifiedChallenge-pwd-1";
final String secondUnifiedPassword = "testManagedProfileUnifiedChallenge-pwd-2";
- mService.setLockCredential(firstUnifiedPassword.getBytes(),
+ assertTrue(mService.setLockCredential(firstUnifiedPassword.getBytes(),
LockPatternUtils.CREDENTIAL_TYPE_PASSWORD,
- null, PASSWORD_QUALITY_COMPLEX, PRIMARY_USER_ID, false);
+ null, PASSWORD_QUALITY_COMPLEX, 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);
@@ -154,17 +148,17 @@ public class LockSettingsServiceTests extends BaseLockSettingsServiceTests {
*/
mStorageManager.setIgnoreBadUnlock(true);
// Change primary password and verify that profile SID remains
- mService.setLockCredential(secondUnifiedPassword.getBytes(),
+ assertTrue(mService.setLockCredential(secondUnifiedPassword.getBytes(),
LockPatternUtils.CREDENTIAL_TYPE_PASSWORD, firstUnifiedPassword.getBytes(),
- PASSWORD_QUALITY_ALPHABETIC, PRIMARY_USER_ID, false);
+ PASSWORD_QUALITY_ALPHABETIC, PRIMARY_USER_ID, false));
mStorageManager.setIgnoreBadUnlock(false);
assertEquals(profileSid, mGateKeeperService.getSecureUserId(MANAGED_PROFILE_USER_ID));
assertNull(mGateKeeperService.getAuthToken(TURNED_OFF_PROFILE_USER_ID));
// Clear unified challenge
- mService.setLockCredential(null, LockPatternUtils.CREDENTIAL_TYPE_NONE,
+ assertTrue(mService.setLockCredential(null, LockPatternUtils.CREDENTIAL_TYPE_NONE,
secondUnifiedPassword.getBytes(), PASSWORD_QUALITY_UNSPECIFIED, PRIMARY_USER_ID,
- false);
+ false));
assertEquals(0, mGateKeeperService.getSecureUserId(PRIMARY_USER_ID));
assertEquals(0, mGateKeeperService.getSecureUserId(MANAGED_PROFILE_USER_ID));
assertEquals(0, mGateKeeperService.getSecureUserId(TURNED_OFF_PROFILE_USER_ID));
@@ -173,17 +167,17 @@ public class LockSettingsServiceTests extends BaseLockSettingsServiceTests {
public void testManagedProfileSeparateChallenge() throws RemoteException {
final String primaryPassword = "testManagedProfileSeparateChallenge-primary";
final String profilePassword = "testManagedProfileSeparateChallenge-profile";
- mService.setLockCredential(primaryPassword.getBytes(),
+ assertTrue(mService.setLockCredential(primaryPassword.getBytes(),
LockPatternUtils.CREDENTIAL_TYPE_PASSWORD, null,
- PASSWORD_QUALITY_COMPLEX, PRIMARY_USER_ID, false);
+ PASSWORD_QUALITY_COMPLEX, PRIMARY_USER_ID, false));
/* Currently in LockSettingsService.setLockCredential, unlockUser() is called with the new
* credential as part of verifyCredential() before the new credential is committed in
* StorageManager. So we relax the check in our mock StorageManager to allow that.
*/
mStorageManager.setIgnoreBadUnlock(true);
- mService.setLockCredential(profilePassword.getBytes(),
+ assertTrue(mService.setLockCredential(profilePassword.getBytes(),
LockPatternUtils.CREDENTIAL_TYPE_PASSWORD, null,
- PASSWORD_QUALITY_COMPLEX, MANAGED_PROFILE_USER_ID, false);
+ PASSWORD_QUALITY_COMPLEX, MANAGED_PROFILE_USER_ID, false));
mStorageManager.setIgnoreBadUnlock(false);
final long primarySid = mGateKeeperService.getSecureUserId(PRIMARY_USER_ID);
@@ -209,8 +203,9 @@ public class LockSettingsServiceTests extends BaseLockSettingsServiceTests {
// Change primary credential and make sure we don't affect profile
mStorageManager.setIgnoreBadUnlock(true);
- mService.setLockCredential("pwd".getBytes(), LockPatternUtils.CREDENTIAL_TYPE_PASSWORD,
- primaryPassword.getBytes(), PASSWORD_QUALITY_ALPHABETIC, PRIMARY_USER_ID, false);
+ assertTrue(mService.setLockCredential("pwd".getBytes(),
+ LockPatternUtils.CREDENTIAL_TYPE_PASSWORD,
+ primaryPassword.getBytes(), PASSWORD_QUALITY_ALPHABETIC, PRIMARY_USER_ID, false));
mStorageManager.setIgnoreBadUnlock(false);
assertEquals(VerifyCredentialResponse.RESPONSE_OK, mService.verifyCredential(
profilePassword.getBytes(), LockPatternUtils.CREDENTIAL_TYPE_PASSWORD, 0,
@@ -221,13 +216,13 @@ public class LockSettingsServiceTests extends BaseLockSettingsServiceTests {
public void testSetLockCredential_forPrimaryUser_sendsCredentials() throws Exception {
final byte[] password = "password".getBytes();
- mService.setLockCredential(
+ assertTrue(mService.setLockCredential(
password,
CREDENTIAL_TYPE_PASSWORD,
null,
PASSWORD_QUALITY_ALPHABETIC,
PRIMARY_USER_ID,
- false);
+ false));
verify(mRecoverableKeyStoreManager)
.lockScreenSecretChanged(CREDENTIAL_TYPE_PASSWORD, password, PRIMARY_USER_ID);
@@ -237,13 +232,13 @@ public class LockSettingsServiceTests extends BaseLockSettingsServiceTests {
throws Exception {
final byte[] pattern = "12345".getBytes();
- mService.setLockCredential(
+ assertTrue(mService.setLockCredential(
pattern,
CREDENTIAL_TYPE_PATTERN,
null,
PASSWORD_QUALITY_SOMETHING,
MANAGED_PROFILE_USER_ID,
- false);
+ false));
verify(mRecoverableKeyStoreManager)
.lockScreenSecretChanged(CREDENTIAL_TYPE_PATTERN, pattern, MANAGED_PROFILE_USER_ID);
@@ -259,13 +254,13 @@ public class LockSettingsServiceTests extends BaseLockSettingsServiceTests {
CREDENTIAL_TYPE_PATTERN,
PASSWORD_QUALITY_SOMETHING);
- mService.setLockCredential(
+ assertTrue(mService.setLockCredential(
newCredential,
CREDENTIAL_TYPE_PASSWORD,
oldCredential.getBytes(),
PASSWORD_QUALITY_ALPHABETIC,
MANAGED_PROFILE_USER_ID,
- false);
+ false));
verify(mRecoverableKeyStoreManager)
.lockScreenSecretChanged(
@@ -276,13 +271,13 @@ public class LockSettingsServiceTests extends BaseLockSettingsServiceTests {
throws Exception {
mService.setSeparateProfileChallengeEnabled(MANAGED_PROFILE_USER_ID, false, null);
- mService.setLockCredential(
+ assertTrue(mService.setLockCredential(
"12345".getBytes(),
CREDENTIAL_TYPE_PATTERN,
null,
PASSWORD_QUALITY_SOMETHING,
PRIMARY_USER_ID,
- false);
+ false));
verify(mRecoverableKeyStoreManager, never())
.lockScreenSecretChanged(
@@ -298,13 +293,13 @@ public class LockSettingsServiceTests extends BaseLockSettingsServiceTests {
PRIMARY_USER_ID, oldCredential, CREDENTIAL_TYPE_PASSWORD, 1234);
mService.setSeparateProfileChallengeEnabled(MANAGED_PROFILE_USER_ID, false, null);
- mService.setLockCredential(
+ assertTrue(mService.setLockCredential(
newCredential,
CREDENTIAL_TYPE_PASSWORD,
oldCredential.getBytes(),
PASSWORD_QUALITY_ALPHABETIC,
PRIMARY_USER_ID,
- false);
+ false));
verify(mRecoverableKeyStoreManager)
.lockScreenSecretChanged(CREDENTIAL_TYPE_PASSWORD, newCredential, PRIMARY_USER_ID);
@@ -321,13 +316,13 @@ public class LockSettingsServiceTests extends BaseLockSettingsServiceTests {
PRIMARY_USER_ID, oldCredential, CREDENTIAL_TYPE_PASSWORD, 1234);
mService.setSeparateProfileChallengeEnabled(MANAGED_PROFILE_USER_ID, false, null);
- mService.setLockCredential(
+ assertTrue(mService.setLockCredential(
null,
CREDENTIAL_TYPE_NONE,
oldCredential.getBytes(),
PASSWORD_QUALITY_UNSPECIFIED,
PRIMARY_USER_ID,
- false);
+ false));
verify(mRecoverableKeyStoreManager)
.lockScreenSecretChanged(CREDENTIAL_TYPE_NONE, null, PRIMARY_USER_ID);
@@ -343,13 +338,13 @@ public class LockSettingsServiceTests extends BaseLockSettingsServiceTests {
PRIMARY_USER_ID, parentPassword, CREDENTIAL_TYPE_PASSWORD, 1234);
mService.setSeparateProfileChallengeEnabled(MANAGED_PROFILE_USER_ID, false, null);
- mService.setLockCredential(
+ assertTrue(mService.setLockCredential(
profilePassword,
CREDENTIAL_TYPE_PASSWORD,
null,
PASSWORD_QUALITY_ALPHABETIC,
MANAGED_PROFILE_USER_ID,
- false);
+ false));
verify(mRecoverableKeyStoreManager)
.lockScreenSecretChanged(
@@ -395,13 +390,13 @@ public class LockSettingsServiceTests extends BaseLockSettingsServiceTests {
public void testVerifyCredential_forProfileWithSeparateChallenge_sendsCredentials()
throws Exception {
final byte[] pattern = "12345".getBytes();
- mService.setLockCredential(
+ assertTrue(mService.setLockCredential(
pattern,
CREDENTIAL_TYPE_PATTERN,
null,
PASSWORD_QUALITY_SOMETHING,
MANAGED_PROFILE_USER_ID,
- false);
+ false));
reset(mRecoverableKeyStoreManager);
mService.verifyCredential(pattern, CREDENTIAL_TYPE_PATTERN, 1, MANAGED_PROFILE_USER_ID);
@@ -436,8 +431,8 @@ public class LockSettingsServiceTests extends BaseLockSettingsServiceTests {
private void testCreateCredential(int userId, String credential, int type, int quality)
throws RemoteException {
- mService.setLockCredential(credential.getBytes(), type, null, quality,
- userId, false);
+ assertTrue(mService.setLockCredential(credential.getBytes(), type, null, quality,
+ userId, false));
assertVerifyCredentials(userId, credential, type, -1);
}
@@ -461,8 +456,8 @@ public class LockSettingsServiceTests extends BaseLockSettingsServiceTests {
String oldCredential, int oldType, int quality) throws RemoteException {
final long sid = 1234;
initializeStorageWithCredential(userId, oldCredential, oldType, sid);
- mService.setLockCredential(newCredential.getBytes(), newType, oldCredential.getBytes(),
- quality, userId, false);
+ assertTrue(mService.setLockCredential(newCredential.getBytes(), newType,
+ oldCredential.getBytes(), quality, userId, false));
assertVerifyCredentials(userId, newCredential, newType, sid);
}