Loading biometrics/fingerprint/2.1/default/README.md 0 → 100644 +6 −0 Original line number Diff line number Diff line ## Default IBiometricsFingerprint@2.1 HAL ## --- ## Overview: ## Provides a default implementation that loads pre-HIDL HALs and exposes it to the framework. No newline at end of file biometrics/fingerprint/2.2/default/Android.bp 0 → 100644 +22 −0 Original line number Diff line number Diff line cc_binary { name: "android.hardware.biometrics.fingerprint@2.2-service.example", defaults: ["hidl_defaults"], init_rc: ["android.hardware.biometrics.fingerprint@2.2-service.rc"], vintf_fragments: ["android.hardware.biometrics.fingerprint@2.2-service.xml"], vendor: true, relative_install_path: "hw", srcs: [ "BiometricsFingerprint.cpp", "service.cpp", ], shared_libs: [ "libcutils", "liblog", "libhidlbase", "libhardware", "libutils", "android.hardware.biometrics.fingerprint@2.2", ], } biometrics/fingerprint/2.2/default/BiometricsFingerprint.cpp 0 → 100644 +114 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 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. */ #define LOG_TAG "android.hardware.biometrics.fingerprint@2.2-service" #define LOG_VERBOSE "android.hardware.biometrics.fingerprint@2.2-service" #include <hardware/hw_auth_token.h> #include <android/log.h> #include <hardware/hardware.h> #include <hardware/fingerprint.h> #include "BiometricsFingerprint.h" #include <inttypes.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> namespace android { namespace hardware { namespace biometrics { namespace fingerprint { namespace V2_2 { namespace implementation { using RequestStatus = android::hardware::biometrics::fingerprint::V2_1::RequestStatus; using FingerprintError = android::hardware::biometrics::fingerprint::V2_1::FingerprintError; constexpr uint64_t kDeviceId = 1; BiometricsFingerprint::BiometricsFingerprint() { } BiometricsFingerprint::~BiometricsFingerprint() { } Return<uint64_t> BiometricsFingerprint::setNotify( const sp<IBiometricsFingerprintClientCallback>& clientCallback) { mClientCallback = clientCallback; return kDeviceId; } Return<uint64_t> BiometricsFingerprint::preEnroll() { // On a real implementation, this must be generated and stored in the TEE or its equivalent. return rand(); } Return<RequestStatus> BiometricsFingerprint::enroll(const hidl_array<uint8_t, 69>& /* hat */, uint32_t /* gid */, uint32_t /* timeoutSec */) { // On a real implementation, the HAT must be checked in the TEE or its equivalent. mClientCallback->onError(kDeviceId, FingerprintError::ERROR_UNABLE_TO_PROCESS, 0 /* vendorCode */); return RequestStatus::SYS_OK; } Return<RequestStatus> BiometricsFingerprint::postEnroll() { return RequestStatus::SYS_OK; } Return<uint64_t> BiometricsFingerprint::getAuthenticatorId() { return 1; } Return<RequestStatus> BiometricsFingerprint::cancel() { mClientCallback->onError(kDeviceId, FingerprintError::ERROR_CANCELED, 0 /* vendorCode */); return RequestStatus::SYS_OK; } Return<RequestStatus> BiometricsFingerprint::enumerate() { mClientCallback->onEnumerate(kDeviceId, 0 /* fingerId */, 0 /* groupId */, 0 /* remaining */); return RequestStatus::SYS_OK; } Return<RequestStatus> BiometricsFingerprint::remove(uint32_t gid, uint32_t fid) { mClientCallback->onRemoved(kDeviceId, fid, gid, 0 /* remaining */); return RequestStatus::SYS_OK; } Return<RequestStatus> BiometricsFingerprint::setActiveGroup(uint32_t /* gid */, const hidl_string& storePath) { // Return invalid for paths that the HAL is unable to write to. std::string path = storePath.c_str(); if (path.compare("") == 0 || path.compare("/") == 0) { return RequestStatus::SYS_EINVAL; } return RequestStatus::SYS_OK; } Return<RequestStatus> BiometricsFingerprint::authenticate(uint64_t /* operationId */, uint32_t /* gid */) { return RequestStatus::SYS_OK; } } // namespace implementation } // namespace V2_2 } // namespace fingerprint } // namespace biometrics } // namespace hardware } // namespace android biometrics/fingerprint/2.2/default/BiometricsFingerprint.h 0 → 100644 +73 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 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. */ #ifndef ANDROID_HARDWARE_BIOMETRICS_FINGERPRINT_V2_2_BIOMETRICSFINGERPRINT_H #define ANDROID_HARDWARE_BIOMETRICS_FINGERPRINT_V2_2_BIOMETRICSFINGERPRINT_H #include <log/log.h> #include <android/log.h> #include <hardware/hardware.h> #include <hardware/fingerprint.h> #include <hidl/MQDescriptor.h> #include <hidl/Status.h> #include <android/hardware/biometrics/fingerprint/2.2/IBiometricsFingerprint.h> namespace android { namespace hardware { namespace biometrics { namespace fingerprint { namespace V2_2 { namespace implementation { using ::android::hardware::biometrics::fingerprint::V2_2::IBiometricsFingerprint; using ::android::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprintClientCallback; using ::android::hardware::biometrics::fingerprint::V2_1::RequestStatus; using ::android::hardware::Return; using ::android::hardware::Void; using ::android::hardware::hidl_vec; using ::android::hardware::hidl_string; using ::android::sp; struct BiometricsFingerprint : public IBiometricsFingerprint { public: BiometricsFingerprint(); ~BiometricsFingerprint(); // Methods from ::android::hardware::biometrics::fingerprint::V2_2::IBiometricsFingerprint follow. Return<uint64_t> setNotify(const sp<IBiometricsFingerprintClientCallback>& clientCallback) override; Return<uint64_t> preEnroll() override; Return<RequestStatus> enroll(const hidl_array<uint8_t, 69>& hat, uint32_t gid, uint32_t timeoutSec) override; Return<RequestStatus> postEnroll() override; Return<uint64_t> getAuthenticatorId() override; Return<RequestStatus> cancel() override; Return<RequestStatus> enumerate() override; Return<RequestStatus> remove(uint32_t gid, uint32_t fid) override; Return<RequestStatus> setActiveGroup(uint32_t gid, const hidl_string& storePath) override; Return<RequestStatus> authenticate(uint64_t operationId, uint32_t gid) override; private: sp<IBiometricsFingerprintClientCallback> mClientCallback; }; } // namespace implementation } // namespace V2_2 } // namespace fingerprint } // namespace biometrics } // namespace hardware } // namespace android #endif // ANDROID_HARDWARE_BIOMETRICS_FINGERPRINT_V2_2_BIOMETRICSFINGERPRINT_H biometrics/fingerprint/2.2/default/android.hardware.biometrics.fingerprint@2.2-service.rc 0 → 100644 +4 −0 Original line number Diff line number Diff line service vendor.fps_hal /vendor/bin/hw/android.hardware.biometrics.fingerprint@2.2-service.example class hal user nobody group nobody Loading
biometrics/fingerprint/2.1/default/README.md 0 → 100644 +6 −0 Original line number Diff line number Diff line ## Default IBiometricsFingerprint@2.1 HAL ## --- ## Overview: ## Provides a default implementation that loads pre-HIDL HALs and exposes it to the framework. No newline at end of file
biometrics/fingerprint/2.2/default/Android.bp 0 → 100644 +22 −0 Original line number Diff line number Diff line cc_binary { name: "android.hardware.biometrics.fingerprint@2.2-service.example", defaults: ["hidl_defaults"], init_rc: ["android.hardware.biometrics.fingerprint@2.2-service.rc"], vintf_fragments: ["android.hardware.biometrics.fingerprint@2.2-service.xml"], vendor: true, relative_install_path: "hw", srcs: [ "BiometricsFingerprint.cpp", "service.cpp", ], shared_libs: [ "libcutils", "liblog", "libhidlbase", "libhardware", "libutils", "android.hardware.biometrics.fingerprint@2.2", ], }
biometrics/fingerprint/2.2/default/BiometricsFingerprint.cpp 0 → 100644 +114 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 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. */ #define LOG_TAG "android.hardware.biometrics.fingerprint@2.2-service" #define LOG_VERBOSE "android.hardware.biometrics.fingerprint@2.2-service" #include <hardware/hw_auth_token.h> #include <android/log.h> #include <hardware/hardware.h> #include <hardware/fingerprint.h> #include "BiometricsFingerprint.h" #include <inttypes.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> namespace android { namespace hardware { namespace biometrics { namespace fingerprint { namespace V2_2 { namespace implementation { using RequestStatus = android::hardware::biometrics::fingerprint::V2_1::RequestStatus; using FingerprintError = android::hardware::biometrics::fingerprint::V2_1::FingerprintError; constexpr uint64_t kDeviceId = 1; BiometricsFingerprint::BiometricsFingerprint() { } BiometricsFingerprint::~BiometricsFingerprint() { } Return<uint64_t> BiometricsFingerprint::setNotify( const sp<IBiometricsFingerprintClientCallback>& clientCallback) { mClientCallback = clientCallback; return kDeviceId; } Return<uint64_t> BiometricsFingerprint::preEnroll() { // On a real implementation, this must be generated and stored in the TEE or its equivalent. return rand(); } Return<RequestStatus> BiometricsFingerprint::enroll(const hidl_array<uint8_t, 69>& /* hat */, uint32_t /* gid */, uint32_t /* timeoutSec */) { // On a real implementation, the HAT must be checked in the TEE or its equivalent. mClientCallback->onError(kDeviceId, FingerprintError::ERROR_UNABLE_TO_PROCESS, 0 /* vendorCode */); return RequestStatus::SYS_OK; } Return<RequestStatus> BiometricsFingerprint::postEnroll() { return RequestStatus::SYS_OK; } Return<uint64_t> BiometricsFingerprint::getAuthenticatorId() { return 1; } Return<RequestStatus> BiometricsFingerprint::cancel() { mClientCallback->onError(kDeviceId, FingerprintError::ERROR_CANCELED, 0 /* vendorCode */); return RequestStatus::SYS_OK; } Return<RequestStatus> BiometricsFingerprint::enumerate() { mClientCallback->onEnumerate(kDeviceId, 0 /* fingerId */, 0 /* groupId */, 0 /* remaining */); return RequestStatus::SYS_OK; } Return<RequestStatus> BiometricsFingerprint::remove(uint32_t gid, uint32_t fid) { mClientCallback->onRemoved(kDeviceId, fid, gid, 0 /* remaining */); return RequestStatus::SYS_OK; } Return<RequestStatus> BiometricsFingerprint::setActiveGroup(uint32_t /* gid */, const hidl_string& storePath) { // Return invalid for paths that the HAL is unable to write to. std::string path = storePath.c_str(); if (path.compare("") == 0 || path.compare("/") == 0) { return RequestStatus::SYS_EINVAL; } return RequestStatus::SYS_OK; } Return<RequestStatus> BiometricsFingerprint::authenticate(uint64_t /* operationId */, uint32_t /* gid */) { return RequestStatus::SYS_OK; } } // namespace implementation } // namespace V2_2 } // namespace fingerprint } // namespace biometrics } // namespace hardware } // namespace android
biometrics/fingerprint/2.2/default/BiometricsFingerprint.h 0 → 100644 +73 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 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. */ #ifndef ANDROID_HARDWARE_BIOMETRICS_FINGERPRINT_V2_2_BIOMETRICSFINGERPRINT_H #define ANDROID_HARDWARE_BIOMETRICS_FINGERPRINT_V2_2_BIOMETRICSFINGERPRINT_H #include <log/log.h> #include <android/log.h> #include <hardware/hardware.h> #include <hardware/fingerprint.h> #include <hidl/MQDescriptor.h> #include <hidl/Status.h> #include <android/hardware/biometrics/fingerprint/2.2/IBiometricsFingerprint.h> namespace android { namespace hardware { namespace biometrics { namespace fingerprint { namespace V2_2 { namespace implementation { using ::android::hardware::biometrics::fingerprint::V2_2::IBiometricsFingerprint; using ::android::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprintClientCallback; using ::android::hardware::biometrics::fingerprint::V2_1::RequestStatus; using ::android::hardware::Return; using ::android::hardware::Void; using ::android::hardware::hidl_vec; using ::android::hardware::hidl_string; using ::android::sp; struct BiometricsFingerprint : public IBiometricsFingerprint { public: BiometricsFingerprint(); ~BiometricsFingerprint(); // Methods from ::android::hardware::biometrics::fingerprint::V2_2::IBiometricsFingerprint follow. Return<uint64_t> setNotify(const sp<IBiometricsFingerprintClientCallback>& clientCallback) override; Return<uint64_t> preEnroll() override; Return<RequestStatus> enroll(const hidl_array<uint8_t, 69>& hat, uint32_t gid, uint32_t timeoutSec) override; Return<RequestStatus> postEnroll() override; Return<uint64_t> getAuthenticatorId() override; Return<RequestStatus> cancel() override; Return<RequestStatus> enumerate() override; Return<RequestStatus> remove(uint32_t gid, uint32_t fid) override; Return<RequestStatus> setActiveGroup(uint32_t gid, const hidl_string& storePath) override; Return<RequestStatus> authenticate(uint64_t operationId, uint32_t gid) override; private: sp<IBiometricsFingerprintClientCallback> mClientCallback; }; } // namespace implementation } // namespace V2_2 } // namespace fingerprint } // namespace biometrics } // namespace hardware } // namespace android #endif // ANDROID_HARDWARE_BIOMETRICS_FINGERPRINT_V2_2_BIOMETRICSFINGERPRINT_H
biometrics/fingerprint/2.2/default/android.hardware.biometrics.fingerprint@2.2-service.rc 0 → 100644 +4 −0 Original line number Diff line number Diff line service vendor.fps_hal /vendor/bin/hw/android.hardware.biometrics.fingerprint@2.2-service.example class hal user nobody group nobody