diff options
author | Andres Morales <anmorales@google.com> | 2015-04-12 15:38:25 -0700 |
---|---|---|
committer | Andres Morales <anmorales@google.com> | 2015-04-14 15:32:07 -0700 |
commit | 6609b0c22ae89a24d1b07dc3c4143452616d4450 (patch) | |
tree | 876a19ee47e1e71e91738117f91f04b7d169315a /src/com/android/settings/ConfirmLockPattern.java | |
parent | c1235be6f00520ee18b76d5619a40ea1a99087bb (diff) | |
download | packages_apps_Settings-6609b0c22ae89a24d1b07dc3c4143452616d4450.zip packages_apps_Settings-6609b0c22ae89a24d1b07dc3c4143452616d4450.tar.gz packages_apps_Settings-6609b0c22ae89a24d1b07dc3c4143452616d4450.tar.bz2 |
pipe auth token through confirm and set password
ConfirmDeviceCredentialsActivity and ChooseLockGeneric now understand
CLSH.EXTRA_KEY_HAS_CHALLENGE and CLSH.EXTRA_KEY_CHALLENGE in their
launching intents. If present, they return a hw_auth_token_t verifying
the challenge passed in as a field in keyed by
CLSH.EXTRA_KEY_CHALLENGE_TOKEN in their result intents.
Change-Id: I0b4e02b6a798a9e57d02522880a180dffadfcde1
Diffstat (limited to 'src/com/android/settings/ConfirmLockPattern.java')
-rw-r--r-- | src/com/android/settings/ConfirmLockPattern.java | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/src/com/android/settings/ConfirmLockPattern.java b/src/com/android/settings/ConfirmLockPattern.java index 8c4fabc..9db1719 100644 --- a/src/com/android/settings/ConfirmLockPattern.java +++ b/src/com/android/settings/ConfirmLockPattern.java @@ -273,8 +273,35 @@ public class ConfirmLockPattern extends ConfirmDeviceCredentialBaseActivity { } public void onPatternDetected(List<LockPatternView.Cell> pattern) { - if (mLockPatternUtils.checkPattern(pattern)) { + final boolean verifyChallenge = getActivity().getIntent().getBooleanExtra( + ChooseLockSettingsHelper.EXTRA_KEY_HAS_CHALLENGE, false); + boolean matched = false; + Intent intent = new Intent(); + if (verifyChallenge) { + if (getActivity() instanceof ConfirmLockPattern.InternalActivity) { + long challenge = getActivity().getIntent().getLongExtra( + ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE, 0); + byte[] token = mLockPatternUtils.verifyPattern(pattern, challenge); + if (token != null) { + matched = true; + intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, token); + } + } + } else if (mLockPatternUtils.checkPattern(pattern)) { + matched = true; + if (getActivity() instanceof ConfirmLockPattern.InternalActivity) { + intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_TYPE, + StorageManager.CRYPT_TYPE_PATTERN); + intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD, + LockPatternUtils.patternToString(pattern)); + } + + } + + if (matched) { authenticationSucceeded(LockPatternUtils.patternToString(pattern)); + getActivity().setResult(Activity.RESULT_OK, intent); + getActivity().finish(); } else { if (pattern.size() >= LockPatternUtils.MIN_PATTERN_REGISTER_FAIL && ++mNumWrongConfirmAttempts |