summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/ChooseLockPassword.java
diff options
context:
space:
mode:
authorNicolas Prevot <nprevot@google.com>2014-01-25 01:02:04 +0000
committerJim Miller <jaggies@google.com>2014-07-09 17:38:49 -0700
commit8fd852e7c2f488650095024aca9c51f8c7ddc3b3 (patch)
treecc2de98aad6dddbe9591acf513f014022c70fcef /src/com/android/settings/ChooseLockPassword.java
parente2403822ec3ba058950280209b1bd106b9d45b82 (diff)
downloadpackages_apps_Settings-8fd852e7c2f488650095024aca9c51f8c7ddc3b3.zip
packages_apps_Settings-8fd852e7c2f488650095024aca9c51f8c7ddc3b3.tar.gz
packages_apps_Settings-8fd852e7c2f488650095024aca9c51f8c7ddc3b3.tar.bz2
Add new "pin complex" type to supported keyguard PINs
This adds a feature to allow DevicePolicyAdmins to prevent using simple PINs, which are defined as those containing more than 3 repeated values. Examples include '1234', '2468', '1111', '9876', etc. Bug 12081139 Change-Id: I68d8fe2459837cb5e083724e1740e65f0519f7e1
Diffstat (limited to 'src/com/android/settings/ChooseLockPassword.java')
-rw-r--r--src/com/android/settings/ChooseLockPassword.java17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/com/android/settings/ChooseLockPassword.java b/src/com/android/settings/ChooseLockPassword.java
index 90cd251..6dfb0f7 100644
--- a/src/com/android/settings/ChooseLockPassword.java
+++ b/src/com/android/settings/ChooseLockPassword.java
@@ -329,10 +329,18 @@ public class ChooseLockPassword extends SettingsActivity {
}
}
if (DevicePolicyManager.PASSWORD_QUALITY_NUMERIC == mRequestedQuality
- && (letters > 0 || symbols > 0)) {
- // This shouldn't be possible unless user finds some way to bring up
- // soft keyboard
- return getString(R.string.lockpassword_pin_contains_non_digits);
+ || DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX == mRequestedQuality) {
+ if (letters > 0 || symbols > 0) {
+ // This shouldn't be possible unless user finds some way to bring up
+ // soft keyboard
+ return getString(R.string.lockpassword_pin_contains_non_digits);
+ }
+ // Check for repeated characters or sequences (e.g. '1234', '0000', '2468')
+ final int sequence = LockPatternUtils.maxLengthSequence(password);
+ if (DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX == mRequestedQuality
+ && sequence > LockPatternUtils.MAX_ALLOWED_SEQUENCE) {
+ return getString(R.string.lockpassword_pin_no_sequential_digits);
+ }
} else if (DevicePolicyManager.PASSWORD_QUALITY_COMPLEX == mRequestedQuality) {
if (letters < mPasswordMinLetters) {
return String.format(getResources().getQuantityString(
@@ -375,6 +383,7 @@ public class ChooseLockPassword extends SettingsActivity {
return getString(mIsAlphaMode ? R.string.lockpassword_password_recently_used
: R.string.lockpassword_pin_recently_used);
}
+
return null;
}