When performing Key Attestation in Android, I'm getting a certificate with the following first 4 values in the 1.3.6.1.4.1.11129.2.1.17 x509v3 extension:
0:d=0 hl=4 l= 304 cons: SEQUENCE
4:d=1 hl=2 l= 1 prim: INTEGER :64
7:d=1 hl=2 l= 1 prim: ENUMERATED :02
10:d=1 hl=2 l= 1 prim: INTEGER :64
13:d=1 hl=2 l= 1 prim: ENUMERATED :02
... snip ...
These correspond to this ASN.1 schema:
KeyDescription ::= SEQUENCE {
attestationVersion INTEGER, # KM2 value is 1. KM3 value is 2. KM4 value is 3.
attestationSecurityLevel SecurityLevel,
keymasterVersion INTEGER,
keymasterSecurityLevel SecurityLevel,
... snip ...
}
Both the attestationVersion and keymasterVersion are given as 0x64 (integer value 100). I was expecting a value of 1, 2, or 3.
Can anyone explain to me what these 0x64 values represent?
======== Edit 1 =========
In case it's useful to someone, here is a full hexdump of that extension:
308201300201640A01020201640A0102041C467269204A756E2031362031343A33343A30312043445420323032330400305BBF853D0802060188C5B348B6BF85454B044930473121301F0418636F6D2E747275657069632E6C656E7364656D6F2E646576020313B32D3122042053BA31684769FF807B94B7958B6CE51DAF150B70327814EE8691FB024DFF12CC3081A4A1083106020102020103A203020103A30402020100A5053103020104AA03020101BF8377020500BF853E03020100BF85404C304A0420003F1ADE9D476E612B00F2983E6AD7DCD15E6A80CC2DBB008DA7D6839ED73A8F0101FF0A010004207481333693C30E79A58C07EF39B6C8D7CF80AA4B8CB1B41B085070013E5DF576BF854105020301FBD0BF8542050203031641BF854E0602040134B169BF854F0602040134B169
======== Edit 2 =========
I found this line in the AOSP code, indicating that 100 is KM_VERSION_KEYMINT_1.
Searching online, I can find very few references to Keymint. Does anyone know what Keymint is?
INTEGER 100.