From 4e32c079f650b3de24613eda13511fa054a45da5 Mon Sep 17 00:00:00 2001 From: Cathy Chen Date: Fri, 10 Mar 2023 04:04:53 +0000 Subject: [PATCH] Revert "Refactor remote lockscreen verification API." Revert submission 21914417-lskf-api-review1 Reason for revert: build break Reverted changes: /q/submissionid:21914417-lskf-api-review1 Bug: 272574624 Change-Id: Ic94a45013c5886c411189716a8abcef645911516 --- core/api/system-current.txt | 39 ++++++++--------- core/java/android/app/KeyguardManager.java | 21 +++++---- .../app/RemoteLockscreenValidationResult.java | 8 +--- ... => StartLockscreenValidationRequest.aidl} | 2 +- ... => StartLockscreenValidationRequest.java} | 43 +++++++++---------- .../internal/widget/ILockSettings.aidl | 4 +- .../internal/widget/LockPatternUtils.java | 4 +- .../locksettings/LockSettingsService.java | 4 +- .../RecoverableKeyStoreManager.java | 12 +++--- .../RecoverableKeyStoreManagerTest.java | 35 ++++++++------- 10 files changed, 84 insertions(+), 88 deletions(-) rename core/java/android/app/{RemoteLockscreenValidationSession.aidl => StartLockscreenValidationRequest.aidl} (93%) rename core/java/android/app/{RemoteLockscreenValidationSession.java => StartLockscreenValidationRequest.java} (69%) diff --git a/core/api/system-current.txt b/core/api/system-current.txt index 823013a313bab..04fcdc4048db9 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -935,7 +935,7 @@ package android.app { public class KeyguardManager { method @RequiresPermission(android.Manifest.permission.MANAGE_WEAK_ESCROW_TOKEN) public long addWeakEscrowToken(@NonNull byte[], @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull android.app.KeyguardManager.WeakEscrowTokenActivatedListener); - method @NonNull @RequiresPermission(android.Manifest.permission.CHECK_REMOTE_LOCKSCREEN) public android.content.Intent createConfirmDeviceCredentialForRemoteValidationIntent(@NonNull android.app.RemoteLockscreenValidationSession, @NonNull android.content.ComponentName, @Nullable CharSequence, @Nullable CharSequence, @Nullable CharSequence, @Nullable CharSequence); + method @NonNull @RequiresPermission(android.Manifest.permission.CHECK_REMOTE_LOCKSCREEN) public android.content.Intent createConfirmDeviceCredentialForRemoteValidationIntent(@NonNull android.app.StartLockscreenValidationRequest, @NonNull android.content.ComponentName, @Nullable CharSequence, @Nullable CharSequence, @Nullable CharSequence, @Nullable CharSequence); method public android.content.Intent createConfirmFactoryResetCredentialIntent(CharSequence, CharSequence, CharSequence); method @RequiresPermission("android.permission.SET_INITIAL_LOCK") public int getMinLockLength(boolean, int); method @RequiresPermission(android.Manifest.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS) public boolean getPrivateNotificationsAllowed(); @@ -947,7 +947,7 @@ package android.app { method @RequiresPermission(android.Manifest.permission.SHOW_KEYGUARD_MESSAGE) public void requestDismissKeyguard(@NonNull android.app.Activity, @Nullable CharSequence, @Nullable android.app.KeyguardManager.KeyguardDismissCallback); method @RequiresPermission("android.permission.SET_INITIAL_LOCK") public boolean setLock(int, @NonNull byte[], int); method @RequiresPermission(android.Manifest.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS) public void setPrivateNotificationsAllowed(boolean); - method @NonNull @RequiresPermission(android.Manifest.permission.CHECK_REMOTE_LOCKSCREEN) public android.app.RemoteLockscreenValidationSession startRemoteLockscreenValidation(); + method @NonNull @RequiresPermission(android.Manifest.permission.CHECK_REMOTE_LOCKSCREEN) public android.app.StartLockscreenValidationRequest startRemoteLockscreenValidation(); method @RequiresPermission(android.Manifest.permission.MANAGE_WEAK_ESCROW_TOKEN) public boolean unregisterWeakEscrowTokenRemovedListener(@NonNull android.app.KeyguardManager.WeakEscrowTokenRemovedListener); method @NonNull @RequiresPermission(android.Manifest.permission.CHECK_REMOTE_LOCKSCREEN) public android.app.RemoteLockscreenValidationResult validateRemoteLockscreen(@NonNull byte[]); field public static final int PASSWORD = 0; // 0x0 @@ -1036,7 +1036,6 @@ package android.app { field public static final int RESULT_GUESS_VALID = 1; // 0x1 field public static final int RESULT_LOCKOUT = 3; // 0x3 field public static final int RESULT_NO_REMAINING_ATTEMPTS = 4; // 0x4 - field public static final int RESULT_SESSION_EXPIRED = 5; // 0x5 } public static final class RemoteLockscreenValidationResult.Builder { @@ -1046,23 +1045,6 @@ package android.app { method @NonNull public android.app.RemoteLockscreenValidationResult.Builder setTimeoutMillis(long); } - public final class RemoteLockscreenValidationSession implements android.os.Parcelable { - method public int describeContents(); - method public int getLockType(); - method public int getRemainingAttempts(); - method @NonNull public byte[] getSourcePublicKey(); - method public void writeToParcel(@NonNull android.os.Parcel, int); - field @NonNull public static final android.os.Parcelable.Creator CREATOR; - } - - public static final class RemoteLockscreenValidationSession.Builder { - ctor public RemoteLockscreenValidationSession.Builder(); - method @NonNull public android.app.RemoteLockscreenValidationSession build(); - method @NonNull public android.app.RemoteLockscreenValidationSession.Builder setLockType(int); - method @NonNull public android.app.RemoteLockscreenValidationSession.Builder setRemainingAttempts(int); - method @NonNull public android.app.RemoteLockscreenValidationSession.Builder setSourcePublicKey(@NonNull byte[]); - } - public final class RuntimeAppOpAccessMessage implements android.os.Parcelable { ctor public RuntimeAppOpAccessMessage(@IntRange(from=0L) int, @IntRange(from=0L) int, @NonNull String, @Nullable String, @NonNull String, int); method public int describeContents(); @@ -1080,6 +1062,23 @@ package android.app { method public void launchAssist(@Nullable android.os.Bundle); } + public final class StartLockscreenValidationRequest implements android.os.Parcelable { + method public int describeContents(); + method public int getLockscreenUiType(); + method public int getRemainingAttempts(); + method @NonNull public byte[] getSourcePublicKey(); + method public void writeToParcel(@NonNull android.os.Parcel, int); + field @NonNull public static final android.os.Parcelable.Creator CREATOR; + } + + public static final class StartLockscreenValidationRequest.Builder { + ctor public StartLockscreenValidationRequest.Builder(); + method @NonNull public android.app.StartLockscreenValidationRequest build(); + method @NonNull public android.app.StartLockscreenValidationRequest.Builder setLockscreenUiType(int); + method @NonNull public android.app.StartLockscreenValidationRequest.Builder setRemainingAttempts(int); + method @NonNull public android.app.StartLockscreenValidationRequest.Builder setSourcePublicKey(@NonNull byte[]); + } + public class StatusBarManager { method @NonNull @RequiresPermission(android.Manifest.permission.STATUS_BAR) public android.app.StatusBarManager.DisableInfo getDisableInfo(); method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public int getNavBarMode(); diff --git a/core/java/android/app/KeyguardManager.java b/core/java/android/app/KeyguardManager.java index 0ef8e922bf061..be0d1c9ddb16e 100644 --- a/core/java/android/app/KeyguardManager.java +++ b/core/java/android/app/KeyguardManager.java @@ -146,13 +146,13 @@ public class KeyguardManager { public static final String EXTRA_CHECKBOX_LABEL = "android.app.extra.CHECKBOX_LABEL"; /** - * A {@link RemoteLockscreenValidationSession} extra to be sent along with + * A {@link StartLockscreenValidationRequest} extra to be sent along with * {@link #ACTION_CONFIRM_REMOTE_DEVICE_CREDENTIAL} containing the data needed to prompt for * a remote device's lock screen. * @hide */ - public static final String EXTRA_REMOTE_LOCKSCREEN_VALIDATION_SESSION = - "android.app.extra.REMOTE_LOCKSCREEN_VALIDATION_SESSION"; + public static final String EXTRA_START_LOCKSCREEN_VALIDATION_REQUEST = + "android.app.extra.START_LOCKSCREEN_VALIDATION_REQUEST"; /** * Result code returned by the activity started by @@ -359,7 +359,8 @@ public class KeyguardManager { /** * Get an Intent to launch an activity to prompt the user to confirm the * credentials (pin, pattern or password) of a remote device. - * @param session contains information necessary to start remote device credential validation. + * @param startLockscreenValidationRequest contains information necessary to start remote device + * credential validation. * @param remoteLockscreenValidationServiceComponent * the {@link ComponentName} of the implementation of * {@link android.service.remotelockscreenvalidation.RemoteLockscreenValidationService} @@ -375,14 +376,15 @@ public class KeyguardManager { @RequiresPermission(Manifest.permission.CHECK_REMOTE_LOCKSCREEN) @NonNull public Intent createConfirmDeviceCredentialForRemoteValidationIntent( - @NonNull RemoteLockscreenValidationSession session, + @NonNull StartLockscreenValidationRequest startLockscreenValidationRequest, @NonNull ComponentName remoteLockscreenValidationServiceComponent, @Nullable CharSequence title, @Nullable CharSequence description, @Nullable CharSequence checkboxLabel, @Nullable CharSequence alternateButtonLabel) { Intent intent = new Intent(ACTION_CONFIRM_REMOTE_DEVICE_CREDENTIAL) - .putExtra(EXTRA_REMOTE_LOCKSCREEN_VALIDATION_SESSION, session) + .putExtra( + EXTRA_START_LOCKSCREEN_VALIDATION_REQUEST, startLockscreenValidationRequest) .putExtra(Intent.EXTRA_COMPONENT_NAME, remoteLockscreenValidationServiceComponent) .putExtra(EXTRA_TITLE, title) .putExtra(EXTRA_DESCRIPTION, description) @@ -1155,7 +1157,7 @@ public class KeyguardManager { @SystemApi @RequiresPermission(Manifest.permission.CHECK_REMOTE_LOCKSCREEN) @NonNull - public RemoteLockscreenValidationSession startRemoteLockscreenValidation() { + public StartLockscreenValidationRequest startRemoteLockscreenValidation() { return mLockPatternUtils.startRemoteLockscreenValidation(); } @@ -1163,10 +1165,11 @@ public class KeyguardManager { * Verifies credentials guess from a remote device. * *

Secret must be encrypted using {@code SecureBox} library - * with public key from {@code RemoteLockscreenValidationSession} + * with public key from {@code StartLockscreenValidationRequest} * and header set to {@code "encrypted_remote_credentials"} in UTF-8 encoding. * - * @throws IllegalStateException if there was a decryption error. + * @throws IllegalStateException if there is no active lock screen validation session or + * there was a decryption error. * * @hide */ diff --git a/core/java/android/app/RemoteLockscreenValidationResult.java b/core/java/android/app/RemoteLockscreenValidationResult.java index bbb35675874b2..0245f8c254ad4 100644 --- a/core/java/android/app/RemoteLockscreenValidationResult.java +++ b/core/java/android/app/RemoteLockscreenValidationResult.java @@ -55,16 +55,10 @@ public final class RemoteLockscreenValidationResult implements Parcelable { */ public static final int RESULT_NO_REMAINING_ATTEMPTS = 4; - /** - * New lockscreen validation session is required to verify guess. - */ - public static final int RESULT_SESSION_EXPIRED = 5; - @IntDef({RESULT_GUESS_VALID, RESULT_GUESS_INVALID, RESULT_LOCKOUT, - RESULT_NO_REMAINING_ATTEMPTS, - RESULT_SESSION_EXPIRED}) + RESULT_NO_REMAINING_ATTEMPTS}) @Retention(RetentionPolicy.SOURCE) @interface ResultCode {} diff --git a/core/java/android/app/RemoteLockscreenValidationSession.aidl b/core/java/android/app/StartLockscreenValidationRequest.aidl similarity index 93% rename from core/java/android/app/RemoteLockscreenValidationSession.aidl rename to core/java/android/app/StartLockscreenValidationRequest.aidl index edc8d56a1a161..367dfeeb0089e 100644 --- a/core/java/android/app/RemoteLockscreenValidationSession.aidl +++ b/core/java/android/app/StartLockscreenValidationRequest.aidl @@ -17,4 +17,4 @@ package android.app; /** {@hide} */ -parcelable RemoteLockscreenValidationSession; +parcelable StartLockscreenValidationRequest; diff --git a/core/java/android/app/RemoteLockscreenValidationSession.java b/core/java/android/app/StartLockscreenValidationRequest.java similarity index 69% rename from core/java/android/app/RemoteLockscreenValidationSession.java rename to core/java/android/app/StartLockscreenValidationRequest.java index c6592e3ca7e98..e81819566bd1e 100644 --- a/core/java/android/app/RemoteLockscreenValidationSession.java +++ b/core/java/android/app/StartLockscreenValidationRequest.java @@ -30,45 +30,44 @@ import java.util.Objects; * @hide */ @SystemApi -public final class RemoteLockscreenValidationSession implements Parcelable { +public final class StartLockscreenValidationRequest implements Parcelable { @LockTypes - private int mLockType; + private int mLockscreenUiType; private byte[] mSourcePublicKey; private int mRemainingAttempts; - public static final @NonNull Parcelable.Creator CREATOR = new - Parcelable.Creator() { + public static final @NonNull Parcelable.Creator CREATOR = new + Parcelable.Creator() { @Override - public RemoteLockscreenValidationSession createFromParcel(Parcel source) { - return new RemoteLockscreenValidationSession(source); + public StartLockscreenValidationRequest createFromParcel(Parcel source) { + return new StartLockscreenValidationRequest(source); } @Override - public RemoteLockscreenValidationSession[] newArray(int size) { - return new RemoteLockscreenValidationSession[size]; + public StartLockscreenValidationRequest[] newArray(int size) { + return new StartLockscreenValidationRequest[size]; } }; /** - * Builder for {@code RemoteLockscreenValidationSession} + * Builder for {@code StartLockscreenValidationRequest} */ public static final class Builder { - private RemoteLockscreenValidationSession mInstance = - new RemoteLockscreenValidationSession(); + private StartLockscreenValidationRequest mInstance = new StartLockscreenValidationRequest(); /** * Sets UI type. * Default value is {@code LockTypes.PASSWORD} * - * @param lockType The UI format + * @param lockscreenUiType The UI format * @return This builder. */ - public @NonNull Builder setLockType(@LockTypes int lockType) { - mInstance.mLockType = lockType; + public @NonNull Builder setLockscreenUiType(@LockTypes int lockscreenUiType) { + mInstance.mLockscreenUiType = lockscreenUiType; return this; } @@ -93,11 +92,11 @@ public final class RemoteLockscreenValidationSession implements Parcelable { } /** - * Creates {@code RemoteLockscreenValidationSession} + * Creates {@code StartLockscreenValidationRequest} * * @throws NullPointerException if required fields are not set. */ - public @NonNull RemoteLockscreenValidationSession build() { + public @NonNull StartLockscreenValidationRequest build() { Objects.requireNonNull(mInstance.mSourcePublicKey); return mInstance; } @@ -106,8 +105,8 @@ public final class RemoteLockscreenValidationSession implements Parcelable { /** * Specifies lock screen credential type. */ - public @LockTypes int getLockType() { - return mLockType; + public @LockTypes int getLockscreenUiType() { + return mLockscreenUiType; } /** @@ -128,16 +127,16 @@ public final class RemoteLockscreenValidationSession implements Parcelable { @Override public void writeToParcel(@NonNull Parcel out, int flags) { - out.writeInt(mLockType); + out.writeInt(mLockscreenUiType); out.writeByteArray(mSourcePublicKey); out.writeInt(mRemainingAttempts); } - private RemoteLockscreenValidationSession() { + private StartLockscreenValidationRequest() { } - private RemoteLockscreenValidationSession(Parcel in) { - mLockType = in.readInt(); + private StartLockscreenValidationRequest(Parcel in) { + mLockscreenUiType = in.readInt(); mSourcePublicKey = in.createByteArray(); mRemainingAttempts = in.readInt(); } diff --git a/core/java/com/android/internal/widget/ILockSettings.aidl b/core/java/com/android/internal/widget/ILockSettings.aidl index a78145407b9f1..a646df35b714b 100644 --- a/core/java/com/android/internal/widget/ILockSettings.aidl +++ b/core/java/com/android/internal/widget/ILockSettings.aidl @@ -18,7 +18,7 @@ package com.android.internal.widget; import android.app.PendingIntent; import android.app.RemoteLockscreenValidationResult; -import android.app.RemoteLockscreenValidationSession; +import android.app.StartLockscreenValidationRequest; import android.app.trust.IStrongAuthTracker; import android.os.Bundle; import android.security.keystore.recovery.WrappedApplicationKey; @@ -95,7 +95,7 @@ interface ILockSettings { in byte[] recoveryKeyBlob, in List applicationKeys); void closeSession(in String sessionId); - RemoteLockscreenValidationSession startRemoteLockscreenValidation(); + StartLockscreenValidationRequest startRemoteLockscreenValidation(); RemoteLockscreenValidationResult validateRemoteLockscreen(in byte[] encryptedCredential); boolean hasSecureLockScreen(); boolean tryUnlockWithCachedUnifiedChallenge(int userId); diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java index b96903ef08032..6fc6dc134c22d 100644 --- a/core/java/com/android/internal/widget/LockPatternUtils.java +++ b/core/java/com/android/internal/widget/LockPatternUtils.java @@ -29,7 +29,7 @@ import android.annotation.Nullable; import android.annotation.UserIdInt; import android.app.PropertyInvalidatedCache; import android.app.RemoteLockscreenValidationResult; -import android.app.RemoteLockscreenValidationSession; +import android.app.StartLockscreenValidationRequest; import android.app.admin.DevicePolicyManager; import android.app.admin.PasswordMetrics; import android.app.trust.IStrongAuthTracker; @@ -1868,7 +1868,7 @@ public class LockPatternUtils { * Starts a session to verify lockscreen credentials provided by a remote device. */ @NonNull - public RemoteLockscreenValidationSession startRemoteLockscreenValidation() { + public StartLockscreenValidationRequest startRemoteLockscreenValidation() { try { return getLockSettings().startRemoteLockscreenValidation(); } catch (RemoteException e) { diff --git a/services/core/java/com/android/server/locksettings/LockSettingsService.java b/services/core/java/com/android/server/locksettings/LockSettingsService.java index 492460e37551d..3c0fc289451b4 100644 --- a/services/core/java/com/android/server/locksettings/LockSettingsService.java +++ b/services/core/java/com/android/server/locksettings/LockSettingsService.java @@ -56,7 +56,7 @@ import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.app.RemoteLockscreenValidationResult; -import android.app.RemoteLockscreenValidationSession; +import android.app.StartLockscreenValidationRequest; import android.app.admin.DevicePolicyManager; import android.app.admin.DevicePolicyManagerInternal; import android.app.admin.DeviceStateCache; @@ -2503,7 +2503,7 @@ public class LockSettingsService extends ILockSettings.Stub { * Starts a session to verify lock screen credentials provided by a remote device. */ @NonNull - public RemoteLockscreenValidationSession startRemoteLockscreenValidation() { + public StartLockscreenValidationRequest startRemoteLockscreenValidation() { return mRecoverableKeyStoreManager.startRemoteLockscreenValidation(this); } diff --git a/services/core/java/com/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager.java b/services/core/java/com/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager.java index f0737566fd669..c08958b031576 100644 --- a/services/core/java/com/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager.java +++ b/services/core/java/com/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager.java @@ -31,7 +31,7 @@ import android.annotation.Nullable; import android.app.KeyguardManager; import android.app.PendingIntent; import android.app.RemoteLockscreenValidationResult; -import android.app.RemoteLockscreenValidationSession; +import android.app.StartLockscreenValidationRequest; import android.content.Context; import android.os.Binder; import android.os.RemoteException; @@ -999,7 +999,7 @@ public class RecoverableKeyStoreManager { /** * Starts a session to verify lock screen credentials provided by a remote device. */ - public RemoteLockscreenValidationSession startRemoteLockscreenValidation( + public StartLockscreenValidationRequest startRemoteLockscreenValidation( LockSettingsService lockSettingsService) { if (mRemoteLockscreenValidationSessionStorage == null) { throw new UnsupportedOperationException("Under development"); @@ -1021,8 +1021,8 @@ public class RecoverableKeyStoreManager { int badGuesses = mDatabase.getBadRemoteGuessCounter(userId); int remainingAttempts = Math.max(INVALID_REMOTE_GUESS_LIMIT - badGuesses, 0); // TODO(b/254335492): Schedule task to remove inactive session - return new RemoteLockscreenValidationSession.Builder() - .setLockType(keyguardCredentialsType) + return new StartLockscreenValidationRequest.Builder() + .setLockscreenUiType(keyguardCredentialsType) .setRemainingAttempts(remainingAttempts) .setSourcePublicKey(encodedPublicKey) .build(); @@ -1046,9 +1046,7 @@ public class RecoverableKeyStoreManager { .build(); } if (session == null) { - return new RemoteLockscreenValidationResult.Builder() - .setResultCode(RemoteLockscreenValidationResult.RESULT_SESSION_EXPIRED) - .build(); + throw new IllegalStateException("There is no active lock screen check session"); } byte[] decryptedCredentials; try { diff --git a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManagerTest.java b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManagerTest.java index 8b178dd9b3e14..2affe92ea31e3 100644 --- a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManagerTest.java +++ b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManagerTest.java @@ -41,7 +41,7 @@ import android.Manifest; import android.app.KeyguardManager; import android.app.PendingIntent; import android.app.RemoteLockscreenValidationResult; -import android.app.RemoteLockscreenValidationSession; +import android.app.StartLockscreenValidationRequest; import android.content.Context; import android.content.Intent; import android.os.Binder; @@ -1326,10 +1326,11 @@ public class RecoverableKeyStoreManagerTest { when(mLockSettingsService.getCredentialType(anyInt())).thenReturn( LockPatternUtils.CREDENTIAL_TYPE_PIN); - RemoteLockscreenValidationSession request = + StartLockscreenValidationRequest request = mRecoverableKeyStoreManager.startRemoteLockscreenValidation(mLockSettingsService); - assertThat(request.getLockType()).isEqualTo(KeyguardManager.PIN); + int credetialsType = request.getLockscreenUiType(); + assertThat(credetialsType).isEqualTo(KeyguardManager.PIN); assertThat(request.getRemainingAttempts()).isEqualTo(5); verify(mLockSettingsService).getCredentialType(anyInt()); } @@ -1339,10 +1340,11 @@ public class RecoverableKeyStoreManagerTest { LockPatternUtils.CREDENTIAL_TYPE_PATTERN); mRecoverableKeyStoreDb.setBadRemoteGuessCounter(mUserId, 3); - RemoteLockscreenValidationSession request = + StartLockscreenValidationRequest request = mRecoverableKeyStoreManager.startRemoteLockscreenValidation(mLockSettingsService); - assertThat(request.getLockType()).isEqualTo(KeyguardManager.PATTERN); + int credetialsType = request.getLockscreenUiType(); + assertThat(credetialsType).isEqualTo(KeyguardManager.PATTERN); assertThat(request.getRemainingAttempts()).isEqualTo(2); } @Test @@ -1351,23 +1353,24 @@ public class RecoverableKeyStoreManagerTest { LockPatternUtils.CREDENTIAL_TYPE_PASSWORD); mRecoverableKeyStoreDb.setBadRemoteGuessCounter(mUserId, 7); - RemoteLockscreenValidationSession request = + StartLockscreenValidationRequest request = mRecoverableKeyStoreManager.startRemoteLockscreenValidation(mLockSettingsService); + int credetialsType = request.getLockscreenUiType(); assertThat(request.getRemainingAttempts()).isEqualTo(0); - assertThat(request.getLockType()).isEqualTo(KeyguardManager.PASSWORD); + assertThat(credetialsType).isEqualTo(KeyguardManager.PASSWORD); } @Test public void validateRemoteLockscreen_noActiveSession() throws Exception { when(mLockSettingsService.getCredentialType(anyInt())).thenReturn( - LockPatternUtils.CREDENTIAL_TYPE_PASSWORD); - - RemoteLockscreenValidationResult result = - mRecoverableKeyStoreManager.validateRemoteLockscreen(INVALID_GUESS, - mLockSettingsService); - - assertThat(result.getResultCode()).isEqualTo( - RemoteLockscreenValidationResult.RESULT_SESSION_EXPIRED); + LockPatternUtils.CREDENTIAL_TYPE_NONE); + try { + mRecoverableKeyStoreManager.validateRemoteLockscreen(INVALID_GUESS, + mLockSettingsService); + fail("should have thrown"); + } catch (IllegalStateException e) { + assertThat(e.getMessage()).contains("session"); + } } @Test public void validateRemoteLockscreen_decryptionError() throws Exception { @@ -1453,7 +1456,7 @@ public class RecoverableKeyStoreManagerTest { } private byte[] encryptCredentialsForNewSession(byte[] credentials) throws Exception { - RemoteLockscreenValidationSession request = + StartLockscreenValidationRequest request = mRecoverableKeyStoreManager.startRemoteLockscreenValidation(mLockSettingsService); PublicKey publicKey = SecureBox.decodePublicKey(request.getSourcePublicKey()); return SecureBox.encrypt(