40d3a9bd8c
Bug: 36453077 Test: mma Change-Id: I0b1f77dfae5d2258969e33d85ecf45401ffbdfaa
164 lines
6.5 KiB
Text
164 lines
6.5 KiB
Text
/*
|
|
* 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);
|
|
};
|