summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorKevin Chyn <kchyn@google.com>2020-10-15 18:32:02 -0700
committerKevin Chyn <kchyn@google.com>2020-10-15 19:00:51 -0700
commit1a77a3bea7745c7ca269f306df127c28ed016346 (patch)
treeed87d704c039fddf228df1e964fd6aedba171a78 /core/java/android
parent258534b4b59cfe0ce0a27fa195b0e5f87a1aa3a7 (diff)
Move generateChallenge/revokeChallenge to ISession
This also makes challenges user-specific, which is fine. Older HAL interfaces can just ignore the userId parameter. Test: Enroll, auth on existing devices Fixes: 170517180 Fixes: 171002801 Change-Id: Ie0fc030476350bc3c35fc28643108ad4d4d3f2ce
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/hardware/fingerprint/FingerprintManager.java24
-rw-r--r--core/java/android/hardware/fingerprint/IFingerprintService.aidl4
2 files changed, 18 insertions, 10 deletions
diff --git a/core/java/android/hardware/fingerprint/FingerprintManager.java b/core/java/android/hardware/fingerprint/FingerprintManager.java
index 3eab1445563a..9ffe5bc95994 100644
--- a/core/java/android/hardware/fingerprint/FingerprintManager.java
+++ b/core/java/android/hardware/fingerprint/FingerprintManager.java
@@ -588,10 +588,10 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing
* @hide
*/
@RequiresPermission(MANAGE_FINGERPRINT)
- public void generateChallenge(int sensorId, GenerateChallengeCallback callback) {
+ public void generateChallenge(int sensorId, int userId, GenerateChallengeCallback callback) {
if (mService != null) try {
mGenerateChallengeCallback = callback;
- mService.generateChallenge(mToken, sensorId, mServiceReceiver,
+ mService.generateChallenge(mToken, sensorId, userId, mServiceReceiver,
mContext.getOpPackageName());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
@@ -604,7 +604,7 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing
* @hide
*/
@RequiresPermission(MANAGE_FINGERPRINT)
- public void generateChallenge(GenerateChallengeCallback callback) {
+ public void generateChallenge(int userId, GenerateChallengeCallback callback) {
final List<FingerprintSensorPropertiesInternal> fingerprintSensorProperties =
getSensorPropertiesInternal();
if (fingerprintSensorProperties.isEmpty()) {
@@ -613,7 +613,7 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing
}
final int sensorId = fingerprintSensorProperties.get(0).sensorId;
- generateChallenge(sensorId, callback);
+ generateChallenge(sensorId, userId, callback);
}
/**
@@ -621,10 +621,10 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing
* @hide
*/
@RequiresPermission(MANAGE_FINGERPRINT)
- public void revokeChallenge() {
+ public void revokeChallenge(int userId) {
// On HALs with only single in-flight challenge such as IBiometricsFingerprint@2.1,
// this parameter is ignored.
- revokeChallenge(0L);
+ revokeChallenge(userId, 0L);
}
/**
@@ -632,9 +632,17 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing
* @hide
*/
@RequiresPermission(MANAGE_FINGERPRINT)
- public void revokeChallenge(long challenge) {
+ public void revokeChallenge(int userId, long challenge) {
if (mService != null) try {
- mService.revokeChallenge(mToken, mContext.getOpPackageName(), challenge);
+ final List<FingerprintSensorPropertiesInternal> fingerprintSensorProperties =
+ getSensorPropertiesInternal();
+ if (fingerprintSensorProperties.isEmpty()) {
+ Slog.e(TAG, "No sensors");
+ return;
+ }
+ final int sensorId = fingerprintSensorProperties.get(0).sensorId;
+ mService.revokeChallenge(mToken, sensorId, userId, mContext.getOpPackageName(),
+ challenge);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
diff --git a/core/java/android/hardware/fingerprint/IFingerprintService.aidl b/core/java/android/hardware/fingerprint/IFingerprintService.aidl
index 6b0fdd4ff80f..5e289b577aae 100644
--- a/core/java/android/hardware/fingerprint/IFingerprintService.aidl
+++ b/core/java/android/hardware/fingerprint/IFingerprintService.aidl
@@ -88,10 +88,10 @@ interface IFingerprintService {
boolean isHardwareDetected(String opPackageName);
// Get a pre-enrollment authentication token
- void generateChallenge(IBinder token, int sensorId, IFingerprintServiceReceiver receiver, String opPackageName);
+ void generateChallenge(IBinder token, int sensorId, int userId, IFingerprintServiceReceiver receiver, String opPackageName);
// Finish an enrollment sequence and invalidate the authentication token
- void revokeChallenge(IBinder token, String opPackageName, long challenge);
+ void revokeChallenge(IBinder token, int sensorId, int userId, String opPackageName, long challenge);
// Determine if a user has at least one enrolled fingerprint
boolean hasEnrolledFingerprints(int userId, String opPackageName);