Skip to content

Commit 5317d08

Browse files
sethmoocopybara-github
authored andcommitted
Fix incorrect default constraint configuration for attestation verification
The config was set to "strict -- TEE only". This is incorrect, as we should also allow StrongBox attestations by default. Add StrongBox test data from a real phone to ensure no future regressions. PiperOrigin-RevId: 874876371
1 parent a9ad8a7 commit 5317d08

4 files changed

Lines changed: 120 additions & 2 deletions

File tree

src/main/kotlin/ExtensionConstraintConfig.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,7 @@ import com.google.errorprone.annotations.ThreadSafe
2727
@ThreadSafe
2828
data class ExtensionConstraintConfig(
2929
val keyOrigin: ValidationLevel<Origin> = ValidationLevel.STRICT(Origin.GENERATED),
30-
val securityLevel: ValidationLevel<KeyDescription> =
31-
SecurityLevelValidationLevel.STRICT(SecurityLevel.TRUSTED_ENVIRONMENT),
30+
val securityLevel: ValidationLevel<KeyDescription> = SecurityLevelValidationLevel.NOT_SOFTWARE,
3231
val rootOfTrust: ValidationLevel<RootOfTrust> = ValidationLevel.NOT_NULL,
3332
val authorizationListTagOrder: ValidationLevel<KeyDescription> = ValidationLevel.IGNORE,
3433
)

src/test/kotlin/VerifierTest.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,10 @@ class VerifierTest {
101101
"tegu/sdk36/TEE_EC_2026_ROOT",
102102
LocalDate.of(2026, 2, 23).atStartOfDay(ZoneOffset.UTC).toInstant(),
103103
),
104+
PIXEL_9A_SDK36_STRONGBOX(
105+
"tegu/sdk36/SB_EC_2026_ROOT",
106+
LocalDate.of(2026, 2, 24).atStartOfDay(ZoneOffset.UTC).toInstant(),
107+
),
104108
}
105109

106110
@Test
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
{
2+
"attestationVersion": "300",
3+
"attestationSecurityLevel": "STRONG_BOX",
4+
"keyMintVersion": "300",
5+
"keyMintSecurityLevel": "STRONG_BOX",
6+
"attestationChallenge": "OTA1NzhlMWQtZjViZi00Y2NmLWEyN2YtYTRmNGQ4OWVlMjFm",
7+
"uniqueId": "",
8+
"softwareEnforced": {
9+
"creationDateTime": "1771979841867",
10+
"attestationApplicationId": {
11+
"packages": [
12+
{ "name": "com.google.android.attestation", "version": "0" }
13+
],
14+
"signatures": ["EDk47kU35Z6O55L2VFBPuDRvxrNG0LvEQV/DOfz8jsE="]
15+
},
16+
"areTagsOrdered": true
17+
},
18+
"hardwareEnforced": {
19+
"purposes": ["2", "3"],
20+
"algorithms": "3",
21+
"keySize": "256",
22+
"digests": ["4"],
23+
"ecCurve": "1",
24+
"noAuthRequired": true,
25+
"origin": "GENERATED",
26+
"rootOfTrust": {
27+
"verifiedBootKey": "MyevYthKuJevJSOhbctYAeYMXVuX9ByhvQmcR4T3t0M=",
28+
"deviceLocked": true,
29+
"verifiedBootState": "VERIFIED",
30+
"verifiedBootHash": "7Owyr9T0ZfyInz7SDm95qsof0as6351/GX7KuwyaOFY="
31+
},
32+
"osVersion": "160000",
33+
"osPatchLevel": "202602",
34+
"vendorPatchLevel": "20260205",
35+
"bootPatchLevel": "20260205",
36+
"areTagsOrdered": true
37+
}
38+
}
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIICuTCCAl+gAwIBAgIBATAKBggqhkjOPQQDAjA/MRIwEAYDVQQKEwlTdHJvbmdC
3+
b3gxKTAnBgNVBAMTIGFiNGQ1ODRkMzI4NWI2YzUxZDIzYzE5OTIwMTc0NGMwMB4X
4+
DTcwMDEwMTAwMDAwMFoXDTQ4MDEwMTAwMDAwMFowHzEdMBsGA1UEAxMUQW5kcm9p
5+
ZCBLZXlzdG9yZSBLZXkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQ+vIZcheqw
6+
PXkwVjmqo91UsRbALOcse/zOBx49/Yv4mPkMd5Fz+vRWFiS/poXmvl4bO0ChWLdl
7+
hpUIOGgf0BTUo4IBajCCAWYwDgYDVR0PAQH/BAQDAgeAMIIBUgYKKwYBBAHWeQIB
8+
EQSCAUIwggE+AgIBLAoBAgICASwKAQIEJDkwNTc4ZTFkLWY1YmYtNGNjZi1hMjdm
9+
LWE0ZjRkODllZTIxZgQAMF+/hT0IAgYBnJI6oUu/hUVPBE0wSzElMCMEHmNvbS5n
10+
b29nbGUuYW5kcm9pZC5hdHRlc3RhdGlvbgIBADEiBCAQOTjuRTflno7nkvZUUE+4
11+
NG/Gs0bQu8RBX8M5/PyOwTCBpKEIMQYCAQICAQOiAwIBA6MEAgIBAKUFMQMCAQSq
12+
AwIBAb+DdwIFAL+FPgMCAQC/hUBMMEoEIDMnr2LYSriXryUjoW3LWAHmDF1bl/Qc
13+
ob0JnEeE97dDAQH/CgEABCDs7DKv1PRl/IifPtIOb3mqyh/RqzrfnX8Zfsq7DJo4
14+
Vr+FQQUCAwJxAL+FQgUCAwMXar+FTgYCBAE1JW2/hU8GAgQBNSVtMAoGCCqGSM49
15+
BAMCA0gAMEUCIQCL16yWJyYvWysuJJEt5+vFVk8IBryZxNCPQtM68TVN5AIgUn6B
16+
zffsayHDyyYWNQInIA/Atzi4btMMeU6eir/xIzs=
17+
-----END CERTIFICATE-----
18+
-----BEGIN CERTIFICATE-----
19+
MIIB5jCCAYygAwIBAgIRAKtNWE0yhbbFHSPBmSAXRMAwCgYIKoZIzj0EAwIwKTET
20+
MBEGA1UEChMKR29vZ2xlIExMQzESMBAGA1UEAxMJRHJvaWQgQ0EzMB4XDTI2MDIy
21+
MjAwMDc1NloXDTI2MDMwNjAxMTg0N1owPzESMBAGA1UEChMJU3Ryb25nQm94MSkw
22+
JwYDVQQDEyBhYjRkNTg0ZDMyODViNmM1MWQyM2MxOTkyMDE3NDRjMDBZMBMGByqG
23+
SM49AgEGCCqGSM49AwEHA0IABM3hgoF7wGE1eaPEUMmwnxaL5f9u2Xu7mSovGj1+
24+
ak6ECs+Zl2DA9N8bglBp+6dF9NdNvfVJ1rM251hJcwopB2+jfzB9MB0GA1UdDgQW
25+
BBQayeOdpcYdVEHUFn51q6p1BdQ0uzAfBgNVHSMEGDAWgBSHdUpvQ8E+IyP2M1Ym
26+
I0AZY9jUxjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwICBDAaBgorBgEE
27+
AdZ5AgEeBAyiARggA2ZHb29nbGUwCgYIKoZIzj0EAwIDSAAwRQIgIWrTtQIRZPn9
28+
MET+bETrS0YSYr2zgR8nd2saSQIMJn4CIQDs4DGBtQOVonT+a5Q6COlaReb4UGod
29+
U5Vi5699HBQVwQ==
30+
-----END CERTIFICATE-----
31+
-----BEGIN CERTIFICATE-----
32+
MIIC7zCCAnWgAwIBAgITMDqNZ8RaDdp7Da+8CS9agkoC7DAKBggqhkjOPQQDAzAp
33+
MRMwEQYDVQQKEwpHb29nbGUgTExDMRIwEAYDVQQDEwlEcm9pZCBDQTIwHhcNMjYw
34+
MjE5MjMzODI3WhcNMjYwNDMwMjMzODI2WjApMRMwEQYDVQQKEwpHb29nbGUgTExD
35+
MRIwEAYDVQQDEwlEcm9pZCBDQTMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR0
36+
mLbPl8AKkaG97eE8yKN9bkO3whZwBnSmgQwY7hndpWKobx8YwGY9r8dOZ9v3xELC
37+
epDPBwMHjJL0zOTA7CdRo4IBejCCAXYwDgYDVR0PAQH/BAQDAgIEMA8GA1UdEwEB
38+
/wQFMAMBAf8wHQYDVR0OBBYEFId1Sm9DwT4jI/YzViYjQBlj2NTGMB8GA1UdIwQY
39+
MBaAFEUgMj4fpvmPHNXDRy7UelD+O6jgMIGNBggrBgEFBQcBAQSBgDB+MHwGCCsG
40+
AQUFBzAChnBodHRwOi8vcHJpdmF0ZWNhLWNvbnRlbnQtNjlhNDczNWItMDAwMC0y
41+
NWEyLWE3MWMtM2MyODZkMzhlYjlhLnN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vN2My
42+
Y2U5ZTVlMGI4OTgxYTc2MWIvY2EuY3J0MIGCBgNVHR8EezB5MHegdaBzhnFodHRw
43+
Oi8vcHJpdmF0ZWNhLWNvbnRlbnQtNjlhNDczNWItMDAwMC0yNWEyLWE3MWMtM2My
44+
ODZkMzhlYjlhLnN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vN2MyY2U5ZTVlMGI4OTgx
45+
YTc2MWIvY3JsLmNybDAKBggqhkjOPQQDAwNoADBlAjB1PdABk1m57OVPr3NwdddY
46+
Vq0xAaK/t93net8TYQyRAQNmOqJ9nTZcuffefw1Y6j0CMQDMZXUJA7/LYK0FGkez
47+
H9BDC8itvrLdHnT2o/3N5LwXIbUUpa+LODkWnaYIAk4IQWA=
48+
-----END CERTIFICATE-----
49+
-----BEGIN CERTIFICATE-----
50+
MIICZTCCAeugAwIBAgIRALGEywXsUP3JhfDsUyl8+CMwCgYIKoZIzj0EAwMwUjEc
51+
MBoGA1UEAwwTS2V5IEF0dGVzdGF0aW9uIENBMTEQMA4GA1UECwwHQW5kcm9pZDET
52+
MBEGA1UECgwKR29vZ2xlIExMQzELMAkGA1UEBhMCVVMwHhcNMjYwMjA5MTk1NzEw
53+
WhcNMjkwMjA4MTk1NzEwWjApMRMwEQYDVQQKEwpHb29nbGUgTExDMRIwEAYDVQQD
54+
EwlEcm9pZCBDQTIwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAT19+tRAlmwuauVyRrg
55+
HqykkymaEkOS1IYSoXAQyBRvUNEnY5FGqmi44dOWcqMxu0uIbB3in5TD3GsR1NBm
56+
i3f//mI0aiARbBtdP3YaIff8yy076NY9dPMnBiCMIwjRR2Cjga0wgaowRwYDVR0f
57+
BEAwPjA8oDqgOIY2aHR0cHM6Ly9hbmRyb2lkLmdvb2dsZWFwaXMuY29tL2F0dGVz
58+
dGF0aW9uL2tleV9jYTEuY3JsMB0GA1UdDgQWBBRFIDI+H6b5jxzVw0cu1HpQ/juo
59+
4DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBRS
60+
Mrss+0ZDm9zWgakOZWbgNEHqQDAKBggqhkjOPQQDAwNoADBlAjBfOXmY1+SCcT/o
61+
WL17AuVS7uoxMXssLksjChHT+VhTMpWu9J42x3G20hHVGTj+3ZICMQDBYZjd7+vf
62+
uyLVCZkTX7wlvjcRJjvrEWyxvkZE5vlq8c3lwH9JyNBP3OeTd3o8IJs=
63+
-----END CERTIFICATE-----
64+
-----BEGIN CERTIFICATE-----
65+
MIICIjCCAaigAwIBAgIRAISp0Cl7DrWK5/8OgN52BgUwCgYIKoZIzj0EAwMwUjEc
66+
MBoGA1UEAwwTS2V5IEF0dGVzdGF0aW9uIENBMTEQMA4GA1UECwwHQW5kcm9pZDET
67+
MBEGA1UECgwKR29vZ2xlIExMQzELMAkGA1UEBhMCVVMwHhcNMjUwNzE3MjIzMjE4
68+
WhcNMzUwNzE1MjIzMjE4WjBSMRwwGgYDVQQDDBNLZXkgQXR0ZXN0YXRpb24gQ0Ex
69+
MRAwDgYDVQQLDAdBbmRyb2lkMRMwEQYDVQQKDApHb29nbGUgTExDMQswCQYDVQQG
70+
EwJVUzB2MBAGByqGSM49AgEGBSuBBAAiA2IABCPaI3FO3z5bBQo8cuiEas4HjqCt
71+
G/mLFfRT0MsIssPBEEU5Cfbt6sH5yOAxqEi5QagpU1yX4HwnGb7OtBYpDTB57uH5
72+
Eczm34A5FNijV3s0/f0UPl7zbJcTx6xwqMIRq6NCMEAwDwYDVR0TAQH/BAUwAwEB
73+
/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFFIyuyz7RkOb3NaBqQ5lZuA0QepA
74+
MAoGCCqGSM49BAMDA2gAMGUCMETfjPO/HwqReR2CS7p0ZWoD/LHs6hDi422opifH
75+
EUaYLxwGlT9SLdjkVpz0UUOR5wIxAIoGyxGKRHVTpqpGRFiJtQEOOTp/+s1GcxeY
76+
uR2zh/80lQyu9vAFCj6E4AXc+osmRg==
77+
-----END CERTIFICATE-----

0 commit comments

Comments
 (0)