java: CertHack: Dont append moduleHash for < Android 12

- To avoid "Unknown tag 724" error on older platfoms like Android 10/11
- Conditionally downgrade keymaster versions to 3.0 on these platforms

Signed-off-by: Dakkshesh <beakthoven@gmail.com>
This commit is contained in:
Dakkshesh
2025-08-11 20:33:37 +05:30
parent eaa017be86
commit a33069b481
@@ -721,8 +721,11 @@ object CertificateHacker {
DERTaggedObject(true, 706, osPatchLevel),
DERTaggedObject(true, 718, vendorPatchLevel),
DERTaggedObject(true, 719, bootPatchLevel),
DERTaggedObject(true, 724, moduleHash)
)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
teeEnforcedObjects.add(DERTaggedObject(true, 724, moduleHash))
}
params.brand?.let { teeEnforcedObjects.add(DERTaggedObject(true, 710, DEROctetString(it))) }
params.device?.let { teeEnforcedObjects.add(DERTaggedObject(true, 711, DEROctetString(it))) }
@@ -760,9 +763,9 @@ object CertificateHacker {
softwareEnforcedEncodables: Array<ASN1Encodable>,
params: KeyGenParameters
): ASN1OctetString {
val attestationVersion = ASN1Integer(400L)
val attestationVersion = ASN1Integer(if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) 400L else 300L)
val attestationSecurityLevel = ASN1Enumerated(1)
val keymasterVersion = ASN1Integer(400L)
val keymasterVersion = ASN1Integer(if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) 400L else 300L)
val keymasterSecurityLevel = ASN1Enumerated(1)
val attestationChallenge = DEROctetString(params.attestationChallenge ?: ByteArray(0))
val uniqueId = DEROctetString(ByteArray(0))