From 580e81b0be5997c2c67853046b4cc01e1280160f Mon Sep 17 00:00:00 2001 From: Jooyung Han Date: Wed, 10 May 2023 17:05:00 +0900 Subject: [PATCH] Add virtual fingerprint HAL APEX This moves the virtual fingerprint HAL into a vendor apex: com.android.hardware.biometrics.fingerprint.virtual. Bug: 279674662 Test: follow README.md to test the virtual FP HAL (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:7af7ad0c8770e13c3b77abe81c2ba48a2927b531) Merged-In: I4664a3805b9444c87b0ac31a84ec10fb47d9580e Change-Id: I4664a3805b9444c87b0ac31a84ec10fb47d9580e --- .../fingerprint/aidl/default/Android.bp | 14 +++- biometrics/fingerprint/aidl/default/README.md | 6 ++ .../fingerprint/aidl/default/apex/Android.bp | 73 ++++++++++++++++++ ...e.biometrics.fingerprint.virtual.avbpubkey | Bin 0 -> 1032 bytes ...ardware.biometrics.fingerprint.virtual.pem | 52 +++++++++++++ ...ardware.biometrics.fingerprint.virtual.pk8 | Bin 0 -> 2374 bytes ...re.biometrics.fingerprint.virtual.x509.pem | 35 +++++++++ .../aidl/default/apex/file_contexts | 3 + .../aidl/default/apex/manifest.json | 4 + 9 files changed, 185 insertions(+), 2 deletions(-) create mode 100644 biometrics/fingerprint/aidl/default/apex/Android.bp create mode 100644 biometrics/fingerprint/aidl/default/apex/com.android.hardware.biometrics.fingerprint.virtual.avbpubkey create mode 100644 biometrics/fingerprint/aidl/default/apex/com.android.hardware.biometrics.fingerprint.virtual.pem create mode 100644 biometrics/fingerprint/aidl/default/apex/com.android.hardware.biometrics.fingerprint.virtual.pk8 create mode 100644 biometrics/fingerprint/aidl/default/apex/com.android.hardware.biometrics.fingerprint.virtual.x509.pem create mode 100644 biometrics/fingerprint/aidl/default/apex/file_contexts create mode 100644 biometrics/fingerprint/aidl/default/apex/manifest.json diff --git a/biometrics/fingerprint/aidl/default/Android.bp b/biometrics/fingerprint/aidl/default/Android.bp index 16302eb9af..3bb3f3a944 100644 --- a/biometrics/fingerprint/aidl/default/Android.bp +++ b/biometrics/fingerprint/aidl/default/Android.bp @@ -11,8 +11,8 @@ cc_binary { name: "android.hardware.biometrics.fingerprint-service.example", vendor: true, relative_install_path: "hw", - init_rc: ["fingerprint-example.rc"], - vintf_fragments: ["fingerprint-example.xml"], + init_rc: [":fingerprint-example.rc"], + vintf_fragments: [":fingerprint-example.xml"], local_include_dirs: ["include"], srcs: [ "FakeLockoutTracker.cpp", @@ -142,3 +142,13 @@ sysprop_library { property_owner: "Vendor", vendor: true, } + +filegroup { + name: "fingerprint-example.rc", + srcs: ["fingerprint-example.rc"], +} + +filegroup { + name: "fingerprint-example.xml", + srcs: ["fingerprint-example.xml"], +} diff --git a/biometrics/fingerprint/aidl/default/README.md b/biometrics/fingerprint/aidl/default/README.md index 49b6c9dc0d..823cd18f43 100644 --- a/biometrics/fingerprint/aidl/default/README.md +++ b/biometrics/fingerprint/aidl/default/README.md @@ -14,6 +14,12 @@ following to your device's `.mk` file to include it: PRODUCT_PACKAGES_DEBUG += android.hardware.biometrics.fingerprint-service.example ``` +or add the following to include it as an apex: + +``` +PRODUCT_PACKAGES_DEBUG += com.android.hardware.biometrics.fingerprint.virtual +``` + The virtual HAL will be ignored if a real HAL is also installed on the target device. Set the `biometric_virtual_enabled` settings and reboot the device to switch to the virtual HAL. Unset it and reboot again to switch back. diff --git a/biometrics/fingerprint/aidl/default/apex/Android.bp b/biometrics/fingerprint/aidl/default/apex/Android.bp new file mode 100644 index 0000000000..ad36ae2aad --- /dev/null +++ b/biometrics/fingerprint/aidl/default/apex/Android.bp @@ -0,0 +1,73 @@ +// Copyright (C) 2023 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 { + default_applicable_licenses: ["Android-Apache-2.0"], +} + +apex_key { + name: "com.android.hardware.biometrics.fingerprint.virtual.key", + public_key: "com.android.hardware.biometrics.fingerprint.virtual.avbpubkey", + private_key: "com.android.hardware.biometrics.fingerprint.virtual.pem", +} + +android_app_certificate { + name: "com.android.hardware.biometrics.fingerprint.virtual.certificate", + certificate: "com.android.hardware.biometrics.fingerprint.virtual", +} + +apex { + name: "com.android.hardware.biometrics.fingerprint.virtual", + manifest: "manifest.json", + file_contexts: "file_contexts", + key: "com.android.hardware.biometrics.fingerprint.virtual.key", + certificate: ":com.android.hardware.biometrics.fingerprint.virtual.certificate", + updatable: false, + use_vndk_as_stable: true, + vendor: true, + + binaries: [ + "android.hardware.biometrics.fingerprint-service.example", + ], + prebuilts: [ + // init_rc + "fingerprint-example-apex.rc", + // vintf_fragment + "fingerprint-example-apex.xml", + ], + + overrides: [ + "android.hardware.biometrics.fingerprint-service.example", + ], +} + +genrule { + name: "gen-fingerprint-example-apex.rc", + srcs: [":fingerprint-example.rc"], + out: ["fingerprint-example-apex.rc"], + cmd: "sed -e 's@/vendor/bin/@/apex/com.android.hardware.biometrics.fingerprint.virtual/bin/@' $(in) > $(out)", +} + +prebuilt_etc { + name: "fingerprint-example-apex.rc", + src: ":gen-fingerprint-example-apex.rc", + installable: false, +} + +prebuilt_etc { + name: "fingerprint-example-apex.xml", + src: ":fingerprint-example.xml", + sub_dir: "vintf", + installable: false, +} diff --git a/biometrics/fingerprint/aidl/default/apex/com.android.hardware.biometrics.fingerprint.virtual.avbpubkey b/biometrics/fingerprint/aidl/default/apex/com.android.hardware.biometrics.fingerprint.virtual.avbpubkey new file mode 100644 index 0000000000000000000000000000000000000000..9f2334a9a2a2575d1d39a97a969a6d55010649ca GIT binary patch literal 1032 zcmV+j1o!&@01yDlu*l=^qoA?O3?^TWf;U+F&b=ystFqRxY%42YTPHKu%;B-nVm@srBUC)$pHnaq*PqhP5U{cE0fAy_yy+XN5wZXCi zpTfdR7h>y)@l5R7$H=q)qZngJ(VlnWU$5z%OnKcKH}o z4U1$%L8rV;cmRjnT>)>z4gf}?FC|vEzM^WC$m_Juk)CpsxL$9Z!o?RUIKVg+4Ix>I z7XfQ6dT&4tYuSLOv;Vekx z1p@byAjfs|e=J{H2!s7VLE!sYmN}5l*B>QZE0C@Veu8*?ZMWCv4y6Oa5Op``&N9#o zd6jNm5AXBHf7<6BH!4yc|J4#l=UZfgpic7{`wyT9I{v!m5q$K10B<*kV!VM{vNN=A=Q+Mz}7O{nl6d*;bT4T zfHtKLQA0Hqy6u=NPceNFh_#p)8yf#Z5#p;_ki+E@aDi9CnkfY}2*Iwwia;-#qm_MD z!76V~D4rxV-IKewM_S_=U7jz-%=~7E{K!_gduDz{2eSQ!hlHDqeWIJTScR=yVWrI# z0m)JE+1Z`_ps`h}C0{QTwFl9+`ja!?Ny_+yx^oIguuUXmbIMgJKoU{>V8SQgrt%RD zL)2`8bTE3wN)v+|0b-0W6=|Ap6`ys~f{IXyu0_`O($Wp)>Bep~m^XGLEtF-%A3|YO zmCaCZ-rd=(pG_gDtg;t@l$wB2KWH1p8{2Zt$mges9_2T9&c# z-x+{?ImY775W69A|2p;_UZ&z*ZpK;xWa3Q8zehnrF z7mNbv*R@Voaq)U2q`%MEDAwOUHL+XkvHHp;=kdXq#(S_|c~|82qqccSrtXZ4k30lu C-}Q$8 literal 0 HcmV?d00001 diff --git a/biometrics/fingerprint/aidl/default/apex/com.android.hardware.biometrics.fingerprint.virtual.pem b/biometrics/fingerprint/aidl/default/apex/com.android.hardware.biometrics.fingerprint.virtual.pem new file mode 100644 index 0000000000..14eb288d39 --- /dev/null +++ b/biometrics/fingerprint/aidl/default/apex/com.android.hardware.biometrics.fingerprint.virtual.pem @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +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 +qHAY4JU3ldxQzDUZCz5VCz372pgXkQ== +-----END PRIVATE KEY----- diff --git a/biometrics/fingerprint/aidl/default/apex/com.android.hardware.biometrics.fingerprint.virtual.pk8 b/biometrics/fingerprint/aidl/default/apex/com.android.hardware.biometrics.fingerprint.virtual.pk8 new file mode 100644 index 0000000000000000000000000000000000000000..ab5982030e466f2b32c7553b489407da3224eec3 GIT binary patch literal 2374 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