108fa40c5cb5229b7969b2a5146855a337870f45aJim Miller/*
208fa40c5cb5229b7969b2a5146855a337870f45aJim Miller * Copyright (C) 2014 The Android Open Source Project
308fa40c5cb5229b7969b2a5146855a337870f45aJim Miller *
408fa40c5cb5229b7969b2a5146855a337870f45aJim Miller * Licensed under the Apache License, Version 2.0 (the "License");
508fa40c5cb5229b7969b2a5146855a337870f45aJim Miller * you may not use this file except in compliance with the License.
608fa40c5cb5229b7969b2a5146855a337870f45aJim Miller * You may obtain a copy of the License at
708fa40c5cb5229b7969b2a5146855a337870f45aJim Miller *
808fa40c5cb5229b7969b2a5146855a337870f45aJim Miller *      http://www.apache.org/licenses/LICENSE-2.0
908fa40c5cb5229b7969b2a5146855a337870f45aJim Miller *
1008fa40c5cb5229b7969b2a5146855a337870f45aJim Miller * Unless required by applicable law or agreed to in writing, software
1108fa40c5cb5229b7969b2a5146855a337870f45aJim Miller * distributed under the License is distributed on an "AS IS" BASIS,
1208fa40c5cb5229b7969b2a5146855a337870f45aJim Miller * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1308fa40c5cb5229b7969b2a5146855a337870f45aJim Miller * See the License for the specific language governing permissions and
1408fa40c5cb5229b7969b2a5146855a337870f45aJim Miller * limitations under the License.
1508fa40c5cb5229b7969b2a5146855a337870f45aJim Miller */
16ebbf205bc6e8292f74d8fc4652c70274a445f907Jim Millerpackage android.hardware.fingerprint;
1708fa40c5cb5229b7969b2a5146855a337870f45aJim Miller
1808fa40c5cb5229b7969b2a5146855a337870f45aJim Millerimport android.os.Bundle;
19ebbf205bc6e8292f74d8fc4652c70274a445f907Jim Millerimport android.hardware.fingerprint.IFingerprintServiceReceiver;
203a464785088e7fd206666f640912729533948ce8Jorim Jaggiimport android.hardware.fingerprint.IFingerprintServiceLockoutResetCallback;
21ebbf205bc6e8292f74d8fc4652c70274a445f907Jim Millerimport android.hardware.fingerprint.Fingerprint;
229f0753f5a378fc80da86305b33244acc6fc53f01Jim Millerimport java.util.List;
2308fa40c5cb5229b7969b2a5146855a337870f45aJim Miller
2408fa40c5cb5229b7969b2a5146855a337870f45aJim Miller/**
2508fa40c5cb5229b7969b2a5146855a337870f45aJim Miller * Communication channel from client to the fingerprint service.
2608fa40c5cb5229b7969b2a5146855a337870f45aJim Miller * @hide
2708fa40c5cb5229b7969b2a5146855a337870f45aJim Miller */
28ba67aee02cf864793129976cd8a8a46e60c60577Jim Millerinterface IFingerprintService {
299f0753f5a378fc80da86305b33244acc6fc53f01Jim Miller    // Authenticate the given sessionId with a fingerprint
30dca15d22e8f37d4bc2dfb6db4522ea166149525bJim Miller    void authenticate(IBinder token, long sessionId, int userId,
314af76a51d5082c740609563e07cf35f30bc2224eSvetoslav            IFingerprintServiceReceiver receiver, int flags, String opPackageName);
32ce7eb6daf06a88129da365eb2112537ce0bb1b75Jim Miller
33ce7eb6daf06a88129da365eb2112537ce0bb1b75Jim Miller    // Cancel authentication for the given sessionId
344af76a51d5082c740609563e07cf35f30bc2224eSvetoslav    void cancelAuthentication(IBinder token, String opPackageName);
35ba67aee02cf864793129976cd8a8a46e60c60577Jim Miller
369f0753f5a378fc80da86305b33244acc6fc53f01Jim Miller    // Start fingerprint enrollment
37fe6439f02db3a541d77a7afb27e3bca1ae7493edJim Miller    void enroll(IBinder token, in byte [] cryptoToken, int groupId, IFingerprintServiceReceiver receiver,
38cb2ce6f1f0deef80943ece093ae40bacc1f57c44Jim Miller            int flags, String opPackageName);
39ce7eb6daf06a88129da365eb2112537ce0bb1b75Jim Miller
40ce7eb6daf06a88129da365eb2112537ce0bb1b75Jim Miller    // Cancel enrollment in progress
41ce7eb6daf06a88129da365eb2112537ce0bb1b75Jim Miller    void cancelEnrollment(IBinder token);
4208fa40c5cb5229b7969b2a5146855a337870f45aJim Miller
43a7596147b43940cad3f76c53ed154ef088b9269bJim Miller    // Any errors resulting from this call will be returned to the listener
448f2aca0ee4ff0eff6226df05d1531d2f2fa2f3c1Jim Miller    void remove(IBinder token, int fingerId, int groupId, int userId,
458f2aca0ee4ff0eff6226df05d1531d2f2fa2f3c1Jim Miller            IFingerprintServiceReceiver receiver);
469f0753f5a378fc80da86305b33244acc6fc53f01Jim Miller
479f0753f5a378fc80da86305b33244acc6fc53f01Jim Miller    // Rename the fingerprint specified by fingerId and groupId to the given name
489f0753f5a378fc80da86305b33244acc6fc53f01Jim Miller    void rename(int fingerId, int groupId, String name);
4908fa40c5cb5229b7969b2a5146855a337870f45aJim Miller
509f0753f5a378fc80da86305b33244acc6fc53f01Jim Miller    // Get a list of enrolled fingerprints in the given group.
514af76a51d5082c740609563e07cf35f30bc2224eSvetoslav    List<Fingerprint> getEnrolledFingerprints(int groupId, String opPackageName);
5208fa40c5cb5229b7969b2a5146855a337870f45aJim Miller
53ba67aee02cf864793129976cd8a8a46e60c60577Jim Miller    // Determine if HAL is loaded and ready
544af76a51d5082c740609563e07cf35f30bc2224eSvetoslav    boolean isHardwareDetected(long deviceId, String opPackageName);
559f0753f5a378fc80da86305b33244acc6fc53f01Jim Miller
56ce7eb6daf06a88129da365eb2112537ce0bb1b75Jim Miller    // Get a pre-enrollment authentication token
57ce7eb6daf06a88129da365eb2112537ce0bb1b75Jim Miller    long preEnroll(IBinder token);
58ce7eb6daf06a88129da365eb2112537ce0bb1b75Jim Miller
59e0943cf5665b3d7b0870debda771032f77db094cSasha Levitskiy    // Finish an enrollment sequence and invalidate the authentication token
60e0943cf5665b3d7b0870debda771032f77db094cSasha Levitskiy    int postEnroll(IBinder token);
61e0943cf5665b3d7b0870debda771032f77db094cSasha Levitskiy
622aad7ee245857a46aae305fefc4e3c1bcdd4a586Jorim Jaggi    // Determine if a user has at least one enrolled fingerprint
634af76a51d5082c740609563e07cf35f30bc2224eSvetoslav    boolean hasEnrolledFingerprints(int groupId, String opPackageName);
642aad7ee245857a46aae305fefc4e3c1bcdd4a586Jorim Jaggi
659f0753f5a378fc80da86305b33244acc6fc53f01Jim Miller    // Gets the number of hardware devices
669f0753f5a378fc80da86305b33244acc6fc53f01Jim Miller    // int getHardwareDeviceCount();
679f0753f5a378fc80da86305b33244acc6fc53f01Jim Miller
689f0753f5a378fc80da86305b33244acc6fc53f01Jim Miller    // Gets the unique device id for hardware enumerated at i
699f0753f5a378fc80da86305b33244acc6fc53f01Jim Miller    // long getHardwareDevice(int i);
7099d6019bead4705b7e126e65b856d538417d4934Jim Miller
714d41a203a08c55b3f3190519535ccee6557ea4feAndres Morales    // Gets the authenticator ID for fingerprint
724af76a51d5082c740609563e07cf35f30bc2224eSvetoslav    long getAuthenticatorId(String opPackageName);
73e0507bbbf95ae6d958c900f32122baf078d47d71Jim Miller
74e0507bbbf95ae6d958c900f32122baf078d47d71Jim Miller    // Reset the timeout when user authenticates with strong auth (e.g. PIN, pattern or password)
75e0507bbbf95ae6d958c900f32122baf078d47d71Jim Miller    void resetTimeout(in byte [] cryptoToken);
763a464785088e7fd206666f640912729533948ce8Jorim Jaggi
773a464785088e7fd206666f640912729533948ce8Jorim Jaggi    // Add a callback which gets notified when the fingerprint lockout period expired.
783a464785088e7fd206666f640912729533948ce8Jorim Jaggi    void addLockoutResetCallback(IFingerprintServiceLockoutResetCallback callback);
79d1f722d906f66ef05cd329feb9edbed178314d46Clara Bayarri
80d1f722d906f66ef05cd329feb9edbed178314d46Clara Bayarri    // Explicitly set the active user (for enrolling work profile)
81d1f722d906f66ef05cd329feb9edbed178314d46Clara Bayarri    void setActiveUser(int uid);
8208fa40c5cb5229b7969b2a5146855a337870f45aJim Miller}
83