summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/api/system-current.txt39
-rw-r--r--core/java/android/app/KeyguardManager.java21
-rw-r--r--core/java/android/app/RemoteLockscreenValidationResult.java8
-rw-r--r--core/java/android/app/RemoteLockscreenValidationSession.aidl (renamed from core/java/android/app/StartLockscreenValidationRequest.aidl)2
-rw-r--r--core/java/android/app/RemoteLockscreenValidationSession.java (renamed from core/java/android/app/StartLockscreenValidationRequest.java)43
-rw-r--r--core/java/com/android/internal/widget/ILockSettings.aidl4
-rw-r--r--core/java/com/android/internal/widget/LockPatternUtils.java4
-rw-r--r--services/core/java/com/android/server/locksettings/LockSettingsService.java4
-rw-r--r--services/core/java/com/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager.java12
-rw-r--r--services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManagerTest.java35
10 files changed, 88 insertions, 84 deletions
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index 51b8cb49432a..765a17f7691a 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -925,7 +925,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.StartLockscreenValidationRequest, @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.RemoteLockscreenValidationSession, @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();
@@ -937,7 +937,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.StartLockscreenValidationRequest startRemoteLockscreenValidation();
+ method @NonNull @RequiresPermission(android.Manifest.permission.CHECK_REMOTE_LOCKSCREEN) public android.app.RemoteLockscreenValidationSession 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
@@ -1026,6 +1026,7 @@ 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 {
@@ -1035,6 +1036,23 @@ 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<android.app.RemoteLockscreenValidationSession> 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();
@@ -1052,23 +1070,6 @@ 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<android.app.StartLockscreenValidationRequest> 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 be0d1c9ddb16..0ef8e922bf06 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 StartLockscreenValidationRequest} extra to be sent along with
+ * A {@link RemoteLockscreenValidationSession} 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_START_LOCKSCREEN_VALIDATION_REQUEST =
- "android.app.extra.START_LOCKSCREEN_VALIDATION_REQUEST";
+ public static final String EXTRA_REMOTE_LOCKSCREEN_VALIDATION_SESSION =
+ "android.app.extra.REMOTE_LOCKSCREEN_VALIDATION_SESSION";
/**
* Result code returned by the activity started by
@@ -359,8 +359,7 @@ 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 startLockscreenValidationRequest contains information necessary to start remote device
- * credential validation.
+ * @param session contains information necessary to start remote device credential validation.
* @param remoteLockscreenValidationServiceComponent
* the {@link ComponentName} of the implementation of
* {@link android.service.remotelockscreenvalidation.RemoteLockscreenValidationService}
@@ -376,15 +375,14 @@ public class KeyguardManager {
@RequiresPermission(Manifest.permission.CHECK_REMOTE_LOCKSCREEN)
@NonNull
public Intent createConfirmDeviceCredentialForRemoteValidationIntent(
- @NonNull StartLockscreenValidationRequest startLockscreenValidationRequest,
+ @NonNull RemoteLockscreenValidationSession session,
@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_START_LOCKSCREEN_VALIDATION_REQUEST, startLockscreenValidationRequest)
+ .putExtra(EXTRA_REMOTE_LOCKSCREEN_VALIDATION_SESSION, session)
.putExtra(Intent.EXTRA_COMPONENT_NAME, remoteLockscreenValidationServiceComponent)
.putExtra(EXTRA_TITLE, title)
.putExtra(EXTRA_DESCRIPTION, description)
@@ -1157,7 +1155,7 @@ public class KeyguardManager {
@SystemApi
@RequiresPermission(Manifest.permission.CHECK_REMOTE_LOCKSCREEN)
@NonNull
- public StartLockscreenValidationRequest startRemoteLockscreenValidation() {
+ public RemoteLockscreenValidationSession startRemoteLockscreenValidation() {
return mLockPatternUtils.startRemoteLockscreenValidation();
}
@@ -1165,11 +1163,10 @@ public class KeyguardManager {
* Verifies credentials guess from a remote device.
*
* <p>Secret must be encrypted using {@code SecureBox} library
- * with public key from {@code StartLockscreenValidationRequest}
+ * with public key from {@code RemoteLockscreenValidationSession}
* and header set to {@code "encrypted_remote_credentials"} in UTF-8 encoding.
*
- * @throws IllegalStateException if there is no active lock screen validation session or
- * there was a decryption error.
+ * @throws IllegalStateException if there was a decryption error.
*
* @hide
*/
diff --git a/core/java/android/app/RemoteLockscreenValidationResult.java b/core/java/android/app/RemoteLockscreenValidationResult.java
index 0245f8c254ad..bbb35675874b 100644
--- a/core/java/android/app/RemoteLockscreenValidationResult.java
+++ b/core/java/android/app/RemoteLockscreenValidationResult.java
@@ -55,10 +55,16 @@ 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_NO_REMAINING_ATTEMPTS,
+ RESULT_SESSION_EXPIRED})
@Retention(RetentionPolicy.SOURCE)
@interface ResultCode {}
diff --git a/core/java/android/app/StartLockscreenValidationRequest.aidl b/core/java/android/app/RemoteLockscreenValidationSession.aidl
index 367dfeeb0089..edc8d56a1a16 100644
--- a/core/java/android/app/StartLockscreenValidationRequest.aidl
+++ b/core/java/android/app/RemoteLockscreenValidationSession.aidl
@@ -17,4 +17,4 @@
package android.app;
/** {@hide} */
-parcelable StartLockscreenValidationRequest;
+parcelable RemoteLockscreenValidationSession;
diff --git a/core/java/android/app/StartLockscreenValidationRequest.java b/core/java/android/app/RemoteLockscreenValidationSession.java
index e81819566bd1..c6592e3ca7e9 100644
--- a/core/java/android/app/StartLockscreenValidationRequest.java
+++ b/core/java/android/app/RemoteLockscreenValidationSession.java
@@ -30,44 +30,45 @@ import java.util.Objects;
* @hide
*/
@SystemApi
-public final class StartLockscreenValidationRequest implements Parcelable {
+public final class RemoteLockscreenValidationSession implements Parcelable {
@LockTypes
- private int mLockscreenUiType;
+ private int mLockType;
private byte[] mSourcePublicKey;
private int mRemainingAttempts;
- public static final @NonNull Parcelable.Creator<StartLockscreenValidationRequest> CREATOR = new
- Parcelable.Creator<StartLockscreenValidationRequest>() {
+ public static final @NonNull Parcelable.Creator<RemoteLockscreenValidationSession> CREATOR = new
+ Parcelable.Creator<RemoteLockscreenValidationSession>() {
@Override
- public StartLockscreenValidationRequest createFromParcel(Parcel source) {
- return new StartLockscreenValidationRequest(source);
+ public RemoteLockscreenValidationSession createFromParcel(Parcel source) {
+ return new RemoteLockscreenValidationSession(source);
}
@Override
- public StartLockscreenValidationRequest[] newArray(int size) {
- return new StartLockscreenValidationRequest[size];
+ public RemoteLockscreenValidationSession[] newArray(int size) {
+ return new RemoteLockscreenValidationSession[size];
}
};
/**
- * Builder for {@code StartLockscreenValidationRequest}
+ * Builder for {@code RemoteLockscreenValidationSession}
*/
public static final class Builder {
- private StartLockscreenValidationRequest mInstance = new StartLockscreenValidationRequest();
+ private RemoteLockscreenValidationSession mInstance =
+ new RemoteLockscreenValidationSession();
/**
* Sets UI type.
* Default value is {@code LockTypes.PASSWORD}
*
- * @param lockscreenUiType The UI format
+ * @param lockType The UI format
* @return This builder.
*/
- public @NonNull Builder setLockscreenUiType(@LockTypes int lockscreenUiType) {
- mInstance.mLockscreenUiType = lockscreenUiType;
+ public @NonNull Builder setLockType(@LockTypes int lockType) {
+ mInstance.mLockType = lockType;
return this;
}
@@ -92,11 +93,11 @@ public final class StartLockscreenValidationRequest implements Parcelable {
}
/**
- * Creates {@code StartLockscreenValidationRequest}
+ * Creates {@code RemoteLockscreenValidationSession}
*
* @throws NullPointerException if required fields are not set.
*/
- public @NonNull StartLockscreenValidationRequest build() {
+ public @NonNull RemoteLockscreenValidationSession build() {
Objects.requireNonNull(mInstance.mSourcePublicKey);
return mInstance;
}
@@ -105,8 +106,8 @@ public final class StartLockscreenValidationRequest implements Parcelable {
/**
* Specifies lock screen credential type.
*/
- public @LockTypes int getLockscreenUiType() {
- return mLockscreenUiType;
+ public @LockTypes int getLockType() {
+ return mLockType;
}
/**
@@ -127,16 +128,16 @@ public final class StartLockscreenValidationRequest implements Parcelable {
@Override
public void writeToParcel(@NonNull Parcel out, int flags) {
- out.writeInt(mLockscreenUiType);
+ out.writeInt(mLockType);
out.writeByteArray(mSourcePublicKey);
out.writeInt(mRemainingAttempts);
}
- private StartLockscreenValidationRequest() {
+ private RemoteLockscreenValidationSession() {
}
- private StartLockscreenValidationRequest(Parcel in) {
- mLockscreenUiType = in.readInt();
+ private RemoteLockscreenValidationSession(Parcel in) {
+ mLockType = 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 a646df35b714..a78145407b9f 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.StartLockscreenValidationRequest;
+import android.app.RemoteLockscreenValidationSession;
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<WrappedApplicationKey> applicationKeys);
void closeSession(in String sessionId);
- StartLockscreenValidationRequest startRemoteLockscreenValidation();
+ RemoteLockscreenValidationSession 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 b86020eb90ea..4d9141052c49 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.StartLockscreenValidationRequest;
+import android.app.RemoteLockscreenValidationSession;
import android.app.admin.DevicePolicyManager;
import android.app.admin.PasswordMetrics;
import android.app.trust.IStrongAuthTracker;
@@ -1875,7 +1875,7 @@ public class LockPatternUtils {
* Starts a session to verify lockscreen credentials provided by a remote device.
*/
@NonNull
- public StartLockscreenValidationRequest startRemoteLockscreenValidation() {
+ public RemoteLockscreenValidationSession 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 cc41207eaee1..afae08dc9937 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.StartLockscreenValidationRequest;
+import android.app.RemoteLockscreenValidationSession;
import android.app.admin.DevicePolicyManager;
import android.app.admin.DevicePolicyManagerInternal;
import android.app.admin.DeviceStateCache;
@@ -2514,7 +2514,7 @@ public class LockSettingsService extends ILockSettings.Stub {
* Starts a session to verify lock screen credentials provided by a remote device.
*/
@NonNull
- public StartLockscreenValidationRequest startRemoteLockscreenValidation() {
+ public RemoteLockscreenValidationSession 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 c08958b03157..f0737566fd66 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.StartLockscreenValidationRequest;
+import android.app.RemoteLockscreenValidationSession;
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 StartLockscreenValidationRequest startRemoteLockscreenValidation(
+ public RemoteLockscreenValidationSession 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 StartLockscreenValidationRequest.Builder()
- .setLockscreenUiType(keyguardCredentialsType)
+ return new RemoteLockscreenValidationSession.Builder()
+ .setLockType(keyguardCredentialsType)
.setRemainingAttempts(remainingAttempts)
.setSourcePublicKey(encodedPublicKey)
.build();
@@ -1046,7 +1046,9 @@ public class RecoverableKeyStoreManager {
.build();
}
if (session == null) {
- throw new IllegalStateException("There is no active lock screen check session");
+ return new RemoteLockscreenValidationResult.Builder()
+ .setResultCode(RemoteLockscreenValidationResult.RESULT_SESSION_EXPIRED)
+ .build();
}
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 2affe92ea31e..8b178dd9b3e1 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.StartLockscreenValidationRequest;
+import android.app.RemoteLockscreenValidationSession;
import android.content.Context;
import android.content.Intent;
import android.os.Binder;
@@ -1326,11 +1326,10 @@ public class RecoverableKeyStoreManagerTest {
when(mLockSettingsService.getCredentialType(anyInt())).thenReturn(
LockPatternUtils.CREDENTIAL_TYPE_PIN);
- StartLockscreenValidationRequest request =
+ RemoteLockscreenValidationSession request =
mRecoverableKeyStoreManager.startRemoteLockscreenValidation(mLockSettingsService);
- int credetialsType = request.getLockscreenUiType();
- assertThat(credetialsType).isEqualTo(KeyguardManager.PIN);
+ assertThat(request.getLockType()).isEqualTo(KeyguardManager.PIN);
assertThat(request.getRemainingAttempts()).isEqualTo(5);
verify(mLockSettingsService).getCredentialType(anyInt());
}
@@ -1340,11 +1339,10 @@ public class RecoverableKeyStoreManagerTest {
LockPatternUtils.CREDENTIAL_TYPE_PATTERN);
mRecoverableKeyStoreDb.setBadRemoteGuessCounter(mUserId, 3);
- StartLockscreenValidationRequest request =
+ RemoteLockscreenValidationSession request =
mRecoverableKeyStoreManager.startRemoteLockscreenValidation(mLockSettingsService);
- int credetialsType = request.getLockscreenUiType();
- assertThat(credetialsType).isEqualTo(KeyguardManager.PATTERN);
+ assertThat(request.getLockType()).isEqualTo(KeyguardManager.PATTERN);
assertThat(request.getRemainingAttempts()).isEqualTo(2);
}
@Test
@@ -1353,24 +1351,23 @@ public class RecoverableKeyStoreManagerTest {
LockPatternUtils.CREDENTIAL_TYPE_PASSWORD);
mRecoverableKeyStoreDb.setBadRemoteGuessCounter(mUserId, 7);
- StartLockscreenValidationRequest request =
+ RemoteLockscreenValidationSession request =
mRecoverableKeyStoreManager.startRemoteLockscreenValidation(mLockSettingsService);
- int credetialsType = request.getLockscreenUiType();
assertThat(request.getRemainingAttempts()).isEqualTo(0);
- assertThat(credetialsType).isEqualTo(KeyguardManager.PASSWORD);
+ assertThat(request.getLockType()).isEqualTo(KeyguardManager.PASSWORD);
}
@Test
public void validateRemoteLockscreen_noActiveSession() throws Exception {
when(mLockSettingsService.getCredentialType(anyInt())).thenReturn(
- LockPatternUtils.CREDENTIAL_TYPE_NONE);
- try {
- mRecoverableKeyStoreManager.validateRemoteLockscreen(INVALID_GUESS,
- mLockSettingsService);
- fail("should have thrown");
- } catch (IllegalStateException e) {
- assertThat(e.getMessage()).contains("session");
- }
+ LockPatternUtils.CREDENTIAL_TYPE_PASSWORD);
+
+ RemoteLockscreenValidationResult result =
+ mRecoverableKeyStoreManager.validateRemoteLockscreen(INVALID_GUESS,
+ mLockSettingsService);
+
+ assertThat(result.getResultCode()).isEqualTo(
+ RemoteLockscreenValidationResult.RESULT_SESSION_EXPIRED);
}
@Test
public void validateRemoteLockscreen_decryptionError() throws Exception {
@@ -1456,7 +1453,7 @@ public class RecoverableKeyStoreManagerTest {
}
private byte[] encryptCredentialsForNewSession(byte[] credentials) throws Exception {
- StartLockscreenValidationRequest request =
+ RemoteLockscreenValidationSession request =
mRecoverableKeyStoreManager.startRemoteLockscreenValidation(mLockSettingsService);
PublicKey publicKey = SecureBox.decodePublicKey(request.getSourcePublicKey());
return SecureBox.encrypt(