1# fingerprint.sysprop 2# module becomes static class (Java) / namespace (C++) for serving API 3module: "android.fingerprint.virt.FingerprintHalProperties" 4owner: Vendor 5 6# type of fingerprint sensor 7prop { 8 prop_name: "persist.vendor.fingerprint.virtual.type" 9 type: String 10 scope: Public 11 access: ReadWrite 12 enum_values: "default|rear|udfps|side" 13 api_name: "type" 14} 15 16# ids of call current enrollments 17prop { 18 prop_name: "persist.vendor.fingerprint.virtual.enrollments" 19 type: IntegerList 20 scope: Public 21 access: ReadWrite 22 api_name: "enrollments" 23} 24 25# authenticate and detectInteraction will succeed with this 26# enrollment id, when present, otherwise they will error 27prop { 28 prop_name: "vendor.fingerprint.virtual.enrollment_hit" 29 type: Integer 30 scope: Public 31 access: ReadWrite 32 api_name: "enrollment_hit" 33} 34 35# the next enrollment in the format of: 36# "<id>:<delay>,<delay>,...:<result>" 37# <delay> = <duration-[acquiredInfos]> 38# [acquiredInfos] = [acquiredInfo1, acquiredInfo2, ...] 39# (refer to README.md file for acquiredInfo values) 40# e.g. "2:100,20:true", "2:100-[5,1],20:true" 41# this property is reset after enroll completes 42prop { 43 prop_name: "vendor.fingerprint.virtual.next_enrollment" 44 type: String 45 scope: Public 46 access: ReadWrite 47 api_name: "next_enrollment" 48} 49 50# value for getAuthenticatorId or 0 51prop { 52 prop_name: "persist.vendor.fingerprint.virtual.authenticator_id" 53 type: Long 54 scope: Public 55 access: ReadWrite 56 api_name: "authenticator_id" 57} 58 59# value for generateChallenge 60prop { 61 prop_name: "vendor.fingerprint.virtual.challenge" 62 type: Long 63 scope: Public 64 access: ReadWrite 65 api_name: "challenge" 66} 67 68# force all authenticate operations to fail 69prop { 70 prop_name: "vendor.fingerprint.virtual.operation_authenticate_fails" 71 type: Boolean 72 scope: Public 73 access: ReadWrite 74 api_name: "operation_authenticate_fails" 75} 76 77# force all detectInteraction operations to error out 78# error consists of errorCode and vendorErrorCode 79# valid errorCodes are listed in README.md file 80# vendorErrorCode = (error>1000) ? error-1000 : 0 81# e.g. error(1002) --> errorCode(7) and vendorErrorCode(2) 82prop { 83 prop_name: "vendor.fingerprint.virtual.operation_detect_interaction_error" 84 type: Integer 85 scope: Public 86 access: ReadWrite 87 api_name: "operation_detect_interaction_error" 88} 89 90# force all enroll operations to result in error 91prop { 92 prop_name: "vendor.fingerprint.virtual.operation_enroll_error" 93 type: Integer 94 scope: Public 95 access: ReadWrite 96 api_name: "operation_enroll_error" 97} 98 99# add a latency to authentication operations 100# default to 400ms 101# [x] = x ms 102# [x,y] = randomly between x and y ms 103# others = invalid 104prop { 105 prop_name: "vendor.fingerprint.virtual.operation_authenticate_latency" 106 type: IntegerList 107 scope: Public 108 access: ReadWrite 109 api_name: "operation_authenticate_latency" 110} 111 112# add a latency to detectInteraction operations 113# refer to `operation_authenticate_latency` above for usage 114prop { 115 prop_name: "vendor.fingerprint.virtual.operation_detect_interaction_latency" 116 type: IntegerList 117 scope: Public 118 access: ReadWrite 119 api_name: "operation_detect_interaction_latency" 120} 121 122# add a latency to enroll operations 123# refer to `operation_authenticate_latency` above for usage 124prop { 125 prop_name: "vendor.fingerprint.virtual.operation_enroll_latency" 126 type: IntegerList 127 scope: Public 128 access: ReadWrite 129 api_name: "operation_enroll_latency" 130} 131 132# millisecond duration for authenticate operations 133# (waits for changes to enrollment_hit) 134prop { 135 prop_name: "vendor.fingerprint.virtual.operation_authenticate_duration" 136 type: Integer 137 scope: Public 138 access: ReadWrite 139 api_name: "operation_authenticate_duration" 140} 141 142# insert error for authenticate operations 143prop { 144 prop_name: "vendor.fingerprint.virtual.operation_authenticate_error" 145 type: Integer 146 scope: Public 147 access: ReadWrite 148 api_name: "operation_authenticate_error" 149} 150 151# sensor location 152# <x>:<y>:<radius> in pixel 153prop { 154 prop_name: "persist.vendor.fingerprint.virtual.sensor_location" 155 type: String 156 scope: Public 157 access: ReadWrite 158 api_name: "sensor_location" 159} 160 161# acquired info during authentication in format of sequence 162prop { 163 prop_name: "vendor.fingerprint.virtual.operation_authenticate_acquired" 164 type: String 165 scope: Public 166 access: ReadWrite 167 api_name: "operation_authenticate_acquired" 168} 169 170# millisecond duration for detect interaction operations 171# (waits for changes to enrollment_hit) 172prop { 173 prop_name: "vendor.fingerprint.virtual.operation_detect_interaction_duration" 174 type: Integer 175 scope: Public 176 access: ReadWrite 177 api_name: "operation_detect_interaction_duration" 178} 179 180# acquired info during detect interaction operation in format of sequence 181# e.g. 5,6,1 (TOO_SLOW, TOO_FAST, GOOD) 182# onAcquired() callback will be invoked in sequence 183# vendorAcquiredCode = (acquired>1000) ? acquired-1000 : 0 184prop { 185 prop_name: "vendor.fingerprint.virtual.operation_detect_interaction_acquired" 186 type: String 187 scope: Public 188 access: ReadWrite 189 api_name: "operation_detect_interaction_acquired" 190} 191 192# sensor id (default: 5) 193prop { 194 prop_name: "persist.vendor.fingerprint.virtual.sensor_id" 195 type: Integer 196 scope: Public 197 access: ReadWrite 198 api_name: "sensor_id" 199} 200 201# sensor strength (default: 2) 202# [0=CONVENECE, 1=WEAK, 2=STRONG] 203prop { 204 prop_name: "persist.vendor.fingerprint.virtual.sensor_strength" 205 type: Integer 206 scope: Public 207 access: ReadWrite 208 api_name: "sensor_strength" 209} 210 211# max enrollments per user (default: 5) 212# 213prop { 214 prop_name: "persist.vendor.fingerprint.virtual.max_enrollments" 215 type: Integer 216 scope: Public 217 access: ReadWrite 218 api_name: "max_enrollments" 219} 220 221# whether support navigation guestures (default: false) 222prop { 223 prop_name: "persist.vendor.fingerprint.virtual.navigation_guesture" 224 type: Boolean 225 scope: Public 226 access: ReadWrite 227 api_name: "navigation_guesture" 228} 229 230# whether support detect interaction (default: false) 231prop { 232 prop_name: "persist.vendor.fingerprint.virtual.detect_interaction" 233 type: Boolean 234 scope: Public 235 access: ReadWrite 236 api_name: "detect_interaction" 237} 238 239# whether support display touch by hal (default: true) 240prop { 241 prop_name: "persist.vendor.fingerprint.virtual.udfps.display_touch" 242 type: Boolean 243 scope: Public 244 access: ReadWrite 245 api_name: "display_touch" 246} 247 248# whether support illumination control by hal (default: false) 249prop { 250 prop_name: "persist.vendor.fingerprint.virtual.udfps.control_illumination" 251 type: Boolean 252 scope: Public 253 access: ReadWrite 254 api_name: "control_illumination" 255} 256 257# force to be locked out (default: false) 258prop { 259 prop_name: "persist.vendor.fingerprint.virtual.lockout" 260 type: Boolean 261 scope: Public 262 access: ReadWrite 263 api_name: "lockout" 264} 265 266# whether support lockout based on the failed auth attempts (default: false) 267prop { 268 prop_name: "persist.vendor.fingerprint.virtual.lockout_enable" 269 type: Boolean 270 scope: Public 271 access: ReadWrite 272 api_name: "lockout_enable" 273} 274 275# temporarily lockout threshold in number of consecutive failed auth attempts (default: 5) 276prop { 277 prop_name: "persist.vendor.fingerprint.virtual.lockout_timed_threshold" 278 type: Integer 279 scope: Public 280 access: ReadWrite 281 api_name: "lockout_timed_threshold" 282} 283 284# temporary lockout duration in ms (default: 10000ms) 285prop { 286 prop_name: "persist.vendor.fingerprint.virtual.lockout_timed_duration" 287 type: Integer 288 scope: Public 289 access: ReadWrite 290 api_name: "lockout_timed_duration" 291} 292 293# permanently lockout threshold in number of consecutive failed auth attempts (default: 20) 294prop { 295 prop_name: "persist.vendor.fingerprint.virtual.lockout_permanent_threshold" 296 type: Integer 297 scope: Public 298 access: ReadWrite 299 api_name: "lockout_permanent_threshold" 300} 301