Merge "Don't save password metrics to disk." into nyc-dev
This commit is contained in:
@@ -1981,7 +1981,8 @@ public class DevicePolicyManager {
|
||||
* Determine whether the current password the user has set is sufficient to meet the policy
|
||||
* requirements (e.g. quality, minimum length) that have been requested by the admins of this
|
||||
* user and its participating profiles. Restrictions on profiles that have a separate challenge
|
||||
* are not taken into account.
|
||||
* are not taken into account. If the user has a password, it must have been entered in order to
|
||||
* perform this check.
|
||||
* <p>
|
||||
* The calling device admin must have requested
|
||||
* {@link DeviceAdminInfo#USES_POLICY_LIMIT_PASSWORD} to be able to call this method; if it has
|
||||
@@ -1994,6 +1995,7 @@ public class DevicePolicyManager {
|
||||
* @return Returns true if the password meets the current requirements, else false.
|
||||
* @throws SecurityException if the calling application does not own an active administrator
|
||||
* that uses {@link DeviceAdminInfo#USES_POLICY_LIMIT_PASSWORD}
|
||||
* @throws IllegalStateException if the user has a password but has not entered it yet.
|
||||
*/
|
||||
public boolean isActivePasswordSufficient() {
|
||||
if (mService != null) {
|
||||
@@ -3425,6 +3427,19 @@ public class DevicePolicyManager {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
public void reportPasswordChanged(int userId) {
|
||||
if (mService != null) {
|
||||
try {
|
||||
mService.reportPasswordChanged(userId);
|
||||
} catch (RemoteException e) {
|
||||
throw e.rethrowFromSystemServer();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
|
||||
@@ -116,6 +116,7 @@ interface IDevicePolicyManager {
|
||||
|
||||
void setActivePasswordState(int quality, int length, int letters, int uppercase, int lowercase,
|
||||
int numbers, int symbols, int nonletter, int userHandle);
|
||||
void reportPasswordChanged(int userId);
|
||||
void reportFailedPasswordAttempt(int userHandle);
|
||||
void reportSuccessfulPasswordAttempt(int userHandle);
|
||||
void reportFailedFingerprintAttempt(int userHandle);
|
||||
|
||||
@@ -565,9 +565,6 @@ public class LockPatternUtils {
|
||||
setCredentialRequiredToDecrypt(false);
|
||||
}
|
||||
|
||||
getDevicePolicyManager().setActivePasswordState(
|
||||
DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED, 0, 0, 0, 0, 0, 0, 0, userHandle);
|
||||
|
||||
onAfterChangingPassword(userHandle);
|
||||
}
|
||||
|
||||
@@ -614,6 +611,7 @@ public class LockPatternUtils {
|
||||
+ MIN_LOCK_PATTERN_SIZE + " dots long.");
|
||||
}
|
||||
|
||||
setLong(PASSWORD_TYPE_KEY, DevicePolicyManager.PASSWORD_QUALITY_SOMETHING, userId);
|
||||
getLockSettings().setLockPattern(patternToString(pattern), savedPattern, userId);
|
||||
DevicePolicyManager dpm = getDevicePolicyManager();
|
||||
|
||||
@@ -630,9 +628,6 @@ public class LockPatternUtils {
|
||||
|
||||
setBoolean(PATTERN_EVER_CHOSEN_KEY, true, userId);
|
||||
|
||||
setLong(PASSWORD_TYPE_KEY, DevicePolicyManager.PASSWORD_QUALITY_SOMETHING, userId);
|
||||
dpm.setActivePasswordState(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING,
|
||||
pattern.size(), 0, 0, 0, 0, 0, 0, userId);
|
||||
onAfterChangingPassword(userId);
|
||||
} catch (RemoteException re) {
|
||||
Log.e(TAG, "Couldn't save lock pattern " + re);
|
||||
@@ -835,9 +830,9 @@ public class LockPatternUtils {
|
||||
+ "of length " + MIN_LOCK_PASSWORD_SIZE);
|
||||
}
|
||||
|
||||
final int computedQuality = computePasswordQuality(password);
|
||||
setLong(PASSWORD_TYPE_KEY, Math.max(quality, computedQuality), userHandle);
|
||||
getLockSettings().setLockPassword(password, savedPassword, userHandle);
|
||||
getLockSettings().setSeparateProfileChallengeEnabled(userHandle, true, null);
|
||||
int computedQuality = computePasswordQuality(password);
|
||||
|
||||
// Update the device encryption password.
|
||||
if (userHandle == UserHandle.USER_SYSTEM
|
||||
@@ -855,40 +850,6 @@ public class LockPatternUtils {
|
||||
}
|
||||
}
|
||||
|
||||
setLong(PASSWORD_TYPE_KEY, Math.max(quality, computedQuality), userHandle);
|
||||
if (computedQuality != DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED) {
|
||||
int letters = 0;
|
||||
int uppercase = 0;
|
||||
int lowercase = 0;
|
||||
int numbers = 0;
|
||||
int symbols = 0;
|
||||
int nonletter = 0;
|
||||
for (int i = 0; i < password.length(); i++) {
|
||||
char c = password.charAt(i);
|
||||
if (c >= 'A' && c <= 'Z') {
|
||||
letters++;
|
||||
uppercase++;
|
||||
} else if (c >= 'a' && c <= 'z') {
|
||||
letters++;
|
||||
lowercase++;
|
||||
} else if (c >= '0' && c <= '9') {
|
||||
numbers++;
|
||||
nonletter++;
|
||||
} else {
|
||||
symbols++;
|
||||
nonletter++;
|
||||
}
|
||||
}
|
||||
dpm.setActivePasswordState(Math.max(quality, computedQuality),
|
||||
password.length(), letters, uppercase, lowercase,
|
||||
numbers, symbols, nonletter, userHandle);
|
||||
} else {
|
||||
// The password is not anything.
|
||||
dpm.setActivePasswordState(
|
||||
DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED,
|
||||
0, 0, 0, 0, 0, 0, 0, userHandle);
|
||||
}
|
||||
|
||||
// Add the password to the password history. We assume all
|
||||
// password hashes have the same length for simplicity of implementation.
|
||||
String passwordHistory = getString(PASSWORD_HISTORY_KEY, userHandle);
|
||||
|
||||
Reference in New Issue
Block a user