1 <html devsite><head> 2 <title>Fingerprint HAL</title> 3 <meta name="project_path" value="/_project.yaml"/> 4 <meta name="book_path" value="/_book.yaml"/> 5 </head> 6 <body> 7 <!-- 8 Copyright 2017 The Android Open Source Project 9 10 Licensed under the Apache License, Version 2.0 (the "License"); 11 you may not use this file except in compliance with the License. 12 You may obtain a copy of the License at 13 14 http://www.apache.org/licenses/LICENSE-2.0 15 16 Unless required by applicable law or agreed to in writing, software 17 distributed under the License is distributed on an "AS IS" BASIS, 18 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 19 See the License for the specific language governing permissions and 20 limitations under the License. 21 --> 22 23 <h2 id="overview"></h2> 24 25 <p></p> 26 27 <p>Android Fingerprint (HAL) </p> 28 29 <p> Fingerprint HAL <code>fingerprint.h</code> (<code>/hardware/libhardware/include/hardware/fingerprint.h</code>) <a href="#major_functions_in_the_fingerprint_hal"></a> <a href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/fingerprint.h"><code>fingerprint.h</code></a> </p> 30 31 <h3 id="fingerprint_matching_flow"></h3> 32 33 <p><a href="index.html"></a></p> 34 35 <p> <code>authenticate</code> <code>enroll</code> </p> 36 37 <ol> 38 <li> 39 </li><li> 1 Fingerprint HAL <code>fingerprintd</code>Fingerprint 40 </li></ol> 41 42 <p></p> 43 44 <h2 id="architecture"></h2> 45 46 <p><strong>Fingerprint HAL</strong> </p> 47 48 <ul> 49 <li><strong>FingerprintManager API</strong> 50 <ul> 51 <li> FingerprintManager 52 </li><li>FingerprintManager FingerprintService 53 </li></ul> 54 </li><li><strong>FingerprintService</strong> <code>fingerprintd</code> 55 </li><li><strong>fingerprintdFingerprint </strong>FingerprintService Binder C/C++ <code>fingerprintd</code> Fingerprint HAL 56 </li><li><strong>Fingerprint HAL </strong> Fingerprint HAL 57 </li><li><strong>Keystore API Keymaster</strong> (TEE) 58 </li></ul> 59 60 <p> HAL TEE </p> 61 62 <img src="../images/fingerprint-data-flow.png" alt="" id="figure1"/> 63 64 <p class="img-caption"><strong> 1. </strong> </p> 65 66 <p>TEE TEE </p> 67 68 <p> Root </p> 69 70 <p><code>fingerprintd</code> Fingerprint HAL </p> 71 72 <img src="../images/fingerprint-daemon.png" alt=" fingerprintd " id="figure2"/> 73 <p class="img-caption"><strong> 2. </strong> Fingerprint (<code>fingerprintd</code>) Fingerprint </p> 74 75 <h2 id="fingerprint_implementation_guidelines">Fingerprint </h2> 76 77 <p></p> 78 79 <ul> 80 <li></li><li></li></ul> 81 82 <p></p> 83 84 <ol> 85 <li> (TEE) TEE SELinux (SPI) TEE SELinux 86 </li><li> TEE </li><li> 87 </li><li> AES ID 88 </li><li> <code>set_active_group()</code> TEE 89 </li></ol> 90 91 <h2 id="major_functions_in_the_fingerprint_hal">Fingerprint HAL </h2> 92 93 <p> <code>/hardware/libhardware/include/hardware/fingerprint.h</code> </p> 94 95 <ul> 96 <li><strong>enroll</strong> HAL HAL 97 </li><li><strong>pre_enroll</strong> <code>enroll</code> HMAC 98 </li><li><strong>get_authenticator_id</strong> 99 </li><li><strong>cancel</strong> HAL 100 </li><li><strong>enumerate</strong> 101 </li><li><strong>remove</strong> 102 </li><li><strong>set_active_group</strong> (GID) HAL 103 </li><li><strong>authenticate</strong> ID 104 </li><li><strong>set_notify</strong> HAL HAL HAL 105 </li></ul> 106 107 </body></html>