You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
164 lines
6.5 KiB
164 lines
6.5 KiB
/* |
|
* Copyright (C) 2017 The Android Open Source Project |
|
* |
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
* you may not use this file except in compliance with the License. |
|
* You may obtain a copy of the License at |
|
* |
|
* http://www.apache.org/licenses/LICENSE-2.0 |
|
* |
|
* Unless required by applicable law or agreed to in writing, software |
|
* distributed under the License is distributed on an "AS IS" BASIS, |
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
* See the License for the specific language governing permissions and |
|
* limitations under the License. |
|
*/ |
|
|
|
package android.hardware.biometrics.fingerprint@2.1; |
|
|
|
import IBiometricsFingerprintClientCallback; |
|
|
|
interface IBiometricsFingerprint { |
|
/** |
|
* Set notification callback: |
|
* Registers a user function that must receive notifications from the HAL |
|
* This call must block if the HAL state machine is in busy state until HAL |
|
* leaves the busy state. |
|
* |
|
* @return deviceId is a unique handle for this fingerprint device |
|
*/ |
|
@callflow(next={"setActiveGroup"}) |
|
@entry |
|
setNotify(IBiometricsFingerprintClientCallback clientCallback) |
|
generates (uint64_t deviceId); |
|
|
|
/** |
|
* Fingerprint pre-enroll enroll request: |
|
* Generates a unique token to upper layers to indicate the start of |
|
* an enrollment transaction. pre-enroll and post-enroll specify |
|
* a pin/password cleared time window where enrollment is allowed. |
|
* Pre-enroll only generates a challenge, a full hardwareAuthToken is |
|
* generated by trustzone after verifying a pin/password/swipe. This is to |
|
* ensure adding a new fingerprint template was preceded by some kind of |
|
* credential confirmation (e.g. device password). |
|
* |
|
* @return 0 if function failed, a uint64_t of challenge otherwise. |
|
*/ |
|
@callflow(next={"enroll", "postEnroll"}) |
|
preEnroll() generates (uint64_t authChallenge); |
|
|
|
/** |
|
* Fingerprint enroll request: |
|
* Switches the HAL state machine to collect and store a new fingerprint |
|
* template. Switches back as soon as enroll is complete, signalled by |
|
* (fingerprintMsg.type == FINGERPRINT_TEMPLATE_ENROLLING && |
|
* fingerprintMsg.data.enroll.samplesRemaining == 0) |
|
* or after timeoutSec seconds. |
|
* The fingerprint template must be assigned to the group gid. |
|
* |
|
* @param hat a valid Hardware Authentication Token (HAT), generated |
|
* as a result of a preEnroll() call. |
|
* @param gid a framework defined fingerprint set (group) id. |
|
* @param timeoutSec a timeout in seconds. |
|
* |
|
* @return debugErrno is a value the framework logs in case it is not 0. |
|
* |
|
* A notify() function may be called with a more detailed error structure. |
|
*/ |
|
@callflow(next={"cancel", "enroll", "postEnroll", "remove"}) |
|
enroll(uint8_t[69] hat, uint32_t gid, uint32_t timeoutSec) |
|
generates (RequestStatus debugErrno); |
|
|
|
/** |
|
* Finishes the enroll operation and invalidates the preEnroll() generated |
|
* challenge. This must be called at the end of a multi-finger enrollment |
|
* session to indicate that no more fingers may be added. |
|
* |
|
* @return debugErrno is a value the framework logs in case it is not 0. |
|
*/ |
|
@callflow(next={"authenticate", "setActiveGroup", "enumerate", "remove"}) |
|
postEnroll() generates (RequestStatus debugErrno); |
|
|
|
/** |
|
* getAuthenticatorId: |
|
* Returns a token associated with the current fingerprint set. This value |
|
* must change whenever a new fingerprint is enrolled, thus creating a new |
|
* fingerprint set. |
|
* |
|
* @return getAuthenticatorIdRet current authenticator id, 0 if function |
|
* failed. |
|
*/ |
|
@callflow(next={"authenticate"}) |
|
getAuthenticatorId() generates (uint64_t AuthenticatorId); |
|
|
|
/** |
|
* Cancel pending enroll or authenticate, sending FINGERPRINT_ERROR_CANCELED |
|
* to all running clients. Switches the HAL state machine back to the idle |
|
* state. Unlike enrollDone() doesn't invalidate the preEnroll() challenge. |
|
* |
|
* @return debugErrno is a value the framework logs in case it is not 0. |
|
*/ |
|
@callflow(next={"authenticate", "enroll", "enumerate", "remove", |
|
"setActiveGroup"}) |
|
cancel() generates (RequestStatus debugErrno); |
|
|
|
/** |
|
* Enumerate all the fingerprint templates found in the directory set by |
|
* setActiveGroup(): |
|
* For each template found a notify() must be called with: |
|
* fingerprintMsg.type == FINGERPRINT_TEMPLATE_ENUMERATED |
|
* fingerprintMsg.data.enumerated.finger indicating a template id |
|
* fingerprintMsg.data.enumerated.remainingTemplates indicating how many more |
|
* enumeration messages to expect. |
|
* |
|
* @return debugErrno is a value the framework logs in case it is not 0. |
|
*/ |
|
@callflow(next={"remove", "enroll", "authenticate", "setActiveGroup"}) |
|
enumerate() generates (RequestStatus debugErrno); |
|
|
|
/** |
|
* Fingerprint remove request: |
|
* Deletes fingerprint template(s). |
|
* Works only within the path set by setActiveGroup(). |
|
* For each template found a notify() must be called with: |
|
* fingerprintMsg.type == FINGERPRINT_TEMPLATE_REMOVED |
|
* fingerprintMsg.data.removed.finger indicating the template id deleted |
|
* fingerprintMsg.data.removed.remainingTemplates indicating how many more |
|
* templates must be deleted by this operation. |
|
* |
|
* @param gid group id must match the last group set by setActiveGroup(). |
|
* @param fid template id to delete or 0 to delete all templates within the |
|
* current group. |
|
* |
|
* @return debugErrno is a value the framework logs in case it is not 0. |
|
*/ |
|
@callflow(next={"enumerate", "authenticate", "cancel", "getAuthenticatorId", |
|
"setActiveGroup"}) |
|
remove(uint32_t gid, uint32_t fid) generates (RequestStatus debugErrno); |
|
|
|
/** |
|
* Restricts the HAL operation to a set of fingerprints belonging to a group |
|
* provided. The caller must provide a path to a storage location within the |
|
* user's data directory. |
|
* |
|
* @param gid the fingerprint group (set) id. |
|
* @param storePath filesystem path to the template storage directory. |
|
* |
|
* @return debugErrno is a value the framework logs in case it is not 0. |
|
*/ |
|
@callflow(next={"authenticate", "preEnroll", "enumerate", "remove"}) |
|
setActiveGroup(uint32_t gid, string storePath) |
|
generates (RequestStatus debugErrno); |
|
|
|
/** |
|
* Authenticates an operation identified by operationId |
|
* |
|
* @param operationId operation id. |
|
* @param gid fingerprint group id. |
|
* |
|
* @return debugErrno is a value the framework logs in case it is not 0. |
|
*/ |
|
@callflow(next={"cancel", "preEnroll", "remove"}) |
|
authenticate(uint64_t operationId, uint32_t gid) |
|
generates (RequestStatus debugErrno); |
|
};
|
|
|