diff options
| author | Kevin Chyn <kchyn@google.com> | 2020-10-15 18:32:02 -0700 |
|---|---|---|
| committer | Kevin Chyn <kchyn@google.com> | 2020-10-15 19:00:51 -0700 |
| commit | 1a77a3bea7745c7ca269f306df127c28ed016346 (patch) | |
| tree | ed87d704c039fddf228df1e964fd6aedba171a78 /core/java/android | |
| parent | 258534b4b59cfe0ce0a27fa195b0e5f87a1aa3a7 (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.java | 24 | ||||
| -rw-r--r-- | core/java/android/hardware/fingerprint/IFingerprintService.aidl | 4 |
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); |
