diff --git a/app/src/main/java/io/github/beakthoven/TrickyStoreOSS/AndroidUtils.kt b/app/src/main/java/io/github/beakthoven/TrickyStoreOSS/AndroidUtils.kt index 637832e..e32a718 100644 --- a/app/src/main/java/io/github/beakthoven/TrickyStoreOSS/AndroidUtils.kt +++ b/app/src/main/java/io/github/beakthoven/TrickyStoreOSS/AndroidUtils.kt @@ -130,6 +130,24 @@ private val osVersionMap = mapOf( private fun getOsVersion(sdkVersion: Int): Int = osVersionMap[sdkVersion] ?: 160000 +private val attestVersionMap = mapOf( + Build.VERSION_CODES.Q to 4, // Keymaster 4.1 + Build.VERSION_CODES.R to 4, // Keymaster 4.1 + Build.VERSION_CODES.S to 100, // KeyMint 1.0 + Build.VERSION_CODES.S_V2 to 100, // KeyMint 1.0 + Build.VERSION_CODES.TIRAMISU to 200, // KeyMint 2.0 + Build.VERSION_CODES.UPSIDE_DOWN_CAKE to 300, // KeyMint 3.0 + Build.VERSION_CODES.VANILLA_ICE_CREAM to 300, // KeyMint 3.0 + Build.VERSION_CODES.BAKLAVA to 400 // KeyMint 4.0 +) + +val attestVersion: Int + get() = attestVersionMap[Build.VERSION.SDK_INT] ?: 400 + +val keymasterVersion: Int + get() = if (attestVersion == 4) 41 else attestVersion + + fun String.convertPatchLevel(isLong: Boolean): Int = runCatching { val parts = split("-") when { diff --git a/app/src/main/java/io/github/beakthoven/TrickyStoreOSS/CertificateHacker.kt b/app/src/main/java/io/github/beakthoven/TrickyStoreOSS/CertificateHacker.kt index dc53b16..741a569 100644 --- a/app/src/main/java/io/github/beakthoven/TrickyStoreOSS/CertificateHacker.kt +++ b/app/src/main/java/io/github/beakthoven/TrickyStoreOSS/CertificateHacker.kt @@ -723,7 +723,7 @@ object CertificateHacker { DERTaggedObject(true, 719, bootPatchLevel), ) - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + if (io.github.beakthoven.TrickyStoreOSS.attestVersion >= 400) { teeEnforcedObjects.add(DERTaggedObject(true, 724, moduleHash)) } @@ -763,9 +763,9 @@ object CertificateHacker { softwareEnforcedEncodables: Array, params: KeyGenParameters ): ASN1OctetString { - val attestationVersion = ASN1Integer(if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) 400L else 300L) + val attestationVersion = ASN1Integer(io.github.beakthoven.TrickyStoreOSS.attestVersion.toLong()) val attestationSecurityLevel = ASN1Enumerated(1) - val keymasterVersion = ASN1Integer(if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) 400L else 300L) + val keymasterVersion = ASN1Integer(io.github.beakthoven.TrickyStoreOSS.keymasterVersion.toLong()) val keymasterSecurityLevel = ASN1Enumerated(1) val attestationChallenge = DEROctetString(params.attestationChallenge ?: ByteArray(0)) val uniqueId = DEROctetString(ByteArray(0))