blob: 4879d54768fb840b80493e7e36d9abb7d5dce26c [file] [log] [blame]
Jim Miller08fa40c2014-04-29 18:18:47 -07001/*
2 * Copyright (C) 2014 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
Jim Millerebbf2052015-03-31 17:24:34 -070016package android.hardware.fingerprint;
Jim Miller08fa40c2014-04-29 18:18:47 -070017
18import android.os.Bundle;
Phil Weaver27fcd9c2017-01-20 15:57:24 -080019import android.hardware.fingerprint.IFingerprintClientActiveCallback;
Jim Millerebbf2052015-03-31 17:24:34 -070020import android.hardware.fingerprint.IFingerprintServiceReceiver;
Jorim Jaggi3a464782015-08-28 16:59:13 -070021import android.hardware.fingerprint.IFingerprintServiceLockoutResetCallback;
Jim Millerebbf2052015-03-31 17:24:34 -070022import android.hardware.fingerprint.Fingerprint;
Jim Miller9f0753f2015-03-23 23:59:22 -070023import java.util.List;
Jim Miller08fa40c2014-04-29 18:18:47 -070024
25/**
26 * Communication channel from client to the fingerprint service.
27 * @hide
28 */
Jim Millerba67aee2015-02-20 16:21:26 -080029interface IFingerprintService {
Jim Miller9f0753f2015-03-23 23:59:22 -070030 // Authenticate the given sessionId with a fingerprint
Jim Millerdca15d22015-06-16 20:55:13 -070031 void authenticate(IBinder token, long sessionId, int userId,
Svetoslav4af76a52015-04-29 15:29:46 -070032 IFingerprintServiceReceiver receiver, int flags, String opPackageName);
Jim Millerce7eb6d2015-04-03 19:29:13 -070033
34 // Cancel authentication for the given sessionId
Svetoslav4af76a52015-04-29 15:29:46 -070035 void cancelAuthentication(IBinder token, String opPackageName);
Jim Miller9f0753f2015-03-23 23:59:22 -070036
37 // Start fingerprint enrollment
Jim Millerfe6439f2015-04-11 18:07:57 -070038 void enroll(IBinder token, in byte [] cryptoToken, int groupId, IFingerprintServiceReceiver receiver,
Jim Millercb2ce6f2016-04-13 20:28:18 -070039 int flags, String opPackageName);
Jim Millerce7eb6d2015-04-03 19:29:13 -070040
41 // Cancel enrollment in progress
42 void cancelEnrollment(IBinder token);
Jim Millerba67aee2015-02-20 16:21:26 -080043
Jim Millera75961472014-06-06 15:00:49 -070044 // Any errors resulting from this call will be returned to the listener
Jim Miller8f2aca02016-04-20 13:34:11 -070045 void remove(IBinder token, int fingerId, int groupId, int userId,
46 IFingerprintServiceReceiver receiver);
Jim Miller08fa40c2014-04-29 18:18:47 -070047
Jim Miller9f0753f2015-03-23 23:59:22 -070048 // Rename the fingerprint specified by fingerId and groupId to the given name
49 void rename(int fingerId, int groupId, String name);
Jim Miller08fa40c2014-04-29 18:18:47 -070050
Jim Miller9f0753f2015-03-23 23:59:22 -070051 // Get a list of enrolled fingerprints in the given group.
Svetoslav4af76a52015-04-29 15:29:46 -070052 List<Fingerprint> getEnrolledFingerprints(int groupId, String opPackageName);
Jim Miller08fa40c2014-04-29 18:18:47 -070053
Jim Millerba67aee2015-02-20 16:21:26 -080054 // Determine if HAL is loaded and ready
Svetoslav4af76a52015-04-29 15:29:46 -070055 boolean isHardwareDetected(long deviceId, String opPackageName);
Jim Miller99d60192015-03-11 17:41:58 -070056
Jim Millerce7eb6d2015-04-03 19:29:13 -070057 // Get a pre-enrollment authentication token
58 long preEnroll(IBinder token);
59
Sasha Levitskiye0943cf2015-07-08 13:22:20 -070060 // Finish an enrollment sequence and invalidate the authentication token
61 int postEnroll(IBinder token);
62
Jorim Jaggi2aad7ee2015-04-14 15:25:06 -070063 // Determine if a user has at least one enrolled fingerprint
Svetoslav4af76a52015-04-29 15:29:46 -070064 boolean hasEnrolledFingerprints(int groupId, String opPackageName);
Jorim Jaggi2aad7ee2015-04-14 15:25:06 -070065
Jim Miller9f0753f2015-03-23 23:59:22 -070066 // Gets the number of hardware devices
67 // int getHardwareDeviceCount();
68
69 // Gets the unique device id for hardware enumerated at i
70 // long getHardwareDevice(int i);
71
Andres Morales4d41a202015-04-16 14:12:38 -070072 // Gets the authenticator ID for fingerprint
Svetoslav4af76a52015-04-29 15:29:46 -070073 long getAuthenticatorId(String opPackageName);
Jim Millere0507bb2015-08-12 20:30:34 -070074
75 // Reset the timeout when user authenticates with strong auth (e.g. PIN, pattern or password)
76 void resetTimeout(in byte [] cryptoToken);
Jorim Jaggi3a464782015-08-28 16:59:13 -070077
78 // Add a callback which gets notified when the fingerprint lockout period expired.
79 void addLockoutResetCallback(IFingerprintServiceLockoutResetCallback callback);
Clara Bayarrid1f722d2016-01-07 14:17:39 +000080
81 // Explicitly set the active user (for enrolling work profile)
82 void setActiveUser(int uid);
Jim Miller40e46452016-12-16 18:38:53 -080083
84 // Enumerate all fingerprints
85 void enumerate(IBinder token, int userId, IFingerprintServiceReceiver receiver);
Phil Weaver27fcd9c2017-01-20 15:57:24 -080086
87 // Check if a client request is currently being handled
88 boolean isClientActive();
89
90 // Add a callback which gets notified when the service starts and stops handling client requests
91 void addClientActiveCallback(IFingerprintClientActiveCallback callback);
92
93 // Removes a callback set by addClientActiveCallback
94 void removeClientActiveCallback(IFingerprintClientActiveCallback callback);
Jim Miller08fa40c2014-04-29 18:18:47 -070095}