Add credential verification command to locksetting.
This is useful when we need to unlock the user in a test.
Currently credential verification is done for any command
(e.g. "clear") when "--old" parameter is provided, so this
CL doesn't add anything new really, just makes it official.
Test: adb shell locksettings set-pin 1111
Test: adb shell locksettings verify --old 1111
Bug: 36608972
Change-Id: I3fdd6a309479739567622285945d17bb3acf972e
diff --git a/cmds/locksettings/src/com/android/commands/locksettings/LockSettingsCmd.java b/cmds/locksettings/src/com/android/commands/locksettings/LockSettingsCmd.java
index 1e426d6..b9fedd3 100644
--- a/cmds/locksettings/src/com/android/commands/locksettings/LockSettingsCmd.java
+++ b/cmds/locksettings/src/com/android/commands/locksettings/LockSettingsCmd.java
@@ -33,6 +33,10 @@
" locksettings set-pin [--old OLD_CREDENTIAL] NEW_PIN\n" +
" locksettings set-password [--old OLD_CREDENTIAL] NEW_PASSWORD\n" +
" locksettings clear [--old OLD_CREDENTIAL]\n" +
+ " locksettings verify [--old OLD_CREDENTIAL]\n" +
+ "\n" +
+ "flags: \n" +
+ " --user USER_ID: specify the user, default value is current user\n" +
"\n" +
"locksettings set-pattern: sets a pattern\n" +
" A pattern is specified by a non-separated list of numbers that index the cell\n" +
@@ -44,7 +48,9 @@
"\n" +
"locksettings set-password: sets a password\n" +
"\n" +
- "locksettings clear: clears the unlock credential\n";
+ "locksettings clear: clears the unlock credential\n" +
+ "\n" +
+ "locksettings verify: verifies the credential and unlocks the user\n";
public static void main(String[] args) {
(new LockSettingsCmd()).run(args);
diff --git a/services/core/java/com/android/server/locksettings/LockSettingsShellCommand.java b/services/core/java/com/android/server/locksettings/LockSettingsShellCommand.java
index d730c56..67ead6f 100644
--- a/services/core/java/com/android/server/locksettings/LockSettingsShellCommand.java
+++ b/services/core/java/com/android/server/locksettings/LockSettingsShellCommand.java
@@ -36,6 +36,7 @@
private static final String COMMAND_CLEAR = "clear";
private static final String COMMAND_SP = "sp";
private static final String COMMAND_SET_DISABLED = "set-disabled";
+ private static final String COMMAND_VERIFY = "verify";
private int mCurrentUserId;
private final LockPatternUtils mLockPatternUtils;
@@ -76,6 +77,9 @@
case COMMAND_SET_DISABLED:
runSetDisabled();
break;
+ case COMMAND_VERIFY:
+ runVerify();
+ break;
default:
getErrPrintWriter().println("Unknown command: " + cmd);
break;
@@ -88,6 +92,11 @@
}
}
+ private void runVerify() {
+ // The command is only run if the credential is correct.
+ getOutPrintWriter().println("Lock credential verified successfully");
+ }
+
@Override
public void onHelp() {
}