1616
1717package com.android.keyattestation.verifier
1818
19+ import com.android.keyattestation.verifier.challengecheckers.ChallengeMatcher
1920import com.android.keyattestation.verifier.testing.CertLists
20- import com.android.keyattestation.verifier.testing.TestUtils.prodRoot
21+ import com.android.keyattestation.verifier.testing.TestUtils.prodAnchors
2122import com.android.keyattestation.verifier.testing.TestUtils.readCertPath
2223import com.google.common.truth.Truth.assertThat
2324import com.google.protobuf.ByteString
24- import java.security.cert.TrustAnchor
2525import java.time.Instant
2626import kotlin.test.assertIs
2727import org.junit.Test
@@ -31,18 +31,12 @@ import org.junit.runners.JUnit4
3131/* * Unit tests for [Verifier]. */
3232@RunWith(JUnit4 ::class )
3333class VerifierTest {
34- private val verifier =
35- Verifier (
36- { setOf (TrustAnchor (prodRoot, /* nameConstraints= */ null )) },
37- { setOf<String >() },
38- { Instant .now() },
39- )
34+ private val verifier = Verifier ({ prodAnchors }, { setOf<String >() }, { Instant .now() })
4035
4136 @Test
4237 fun verify_validChain_returnsSuccess () {
4338 val chain = readCertPath(" blueline/sdk28/TEE_EC_NONE.pem" )
44- val result =
45- assertIs<VerificationResult .Success >(verifier.verify(chain, " challenge" .toByteArray()))
39+ val result = assertIs<VerificationResult .Success >(verifier.verify(chain))
4640 assertThat(result.publicKey).isEqualTo(chain.leafCert().publicKey)
4741 assertThat(result.challenge).isEqualTo(ByteString .copyFromUtf8(" challenge" ))
4842 assertThat(result.securityLevel).isEqualTo(SecurityLevel .TRUSTED_ENVIRONMENT )
@@ -52,8 +46,7 @@ class VerifierTest {
5246 @Test
5347 fun verify_validChain_returnsDeviceIdentity () {
5448 val chain = readCertPath(" blueline/sdk28/TEE_RSA_BASE+IMEI.pem" )
55- val result =
56- assertIs<VerificationResult .Success >(verifier.verify(chain, " challenge" .toByteArray()))
49+ val result = assertIs<VerificationResult .Success >(verifier.verify(chain))
5750 assertThat(result.attestedDeviceIds)
5851 .isEqualTo(
5952 DeviceIdentity (
@@ -70,15 +63,34 @@ class VerifierTest {
7063 }
7164
7265 @Test
73- fun verify_unexpectedChallenge_returnsChallengeMismatch () {
66+ fun verify_challengeCheckerReturnsTrue_returnsSuccess () {
67+ val challengeChecker: ChallengeChecker =
68+ object : ChallengeChecker {
69+ override fun checkChallenge (challenge : ByteString ) = true
70+ }
71+
72+ val chain = readCertPath(" blueline/sdk28/TEE_EC_NONE.pem" )
73+ assertIs<VerificationResult .Success >(verifier.verify(chain, challengeChecker))
74+ }
75+
76+ @Test
77+ fun verify_challengeCheckerReturnsFalse_returnsChallengeMismatch () {
78+ val challengeChecker: ChallengeChecker =
79+ object : ChallengeChecker {
80+ override fun checkChallenge (challenge : ByteString ) = false
81+ }
82+
7483 val chain = readCertPath(" blueline/sdk28/TEE_EC_NONE.pem" )
75- assertIs<VerificationResult .ChallengeMismatch >(verifier.verify(chain, " foo " .toByteArray() ))
84+ assertIs<VerificationResult .ChallengeMismatch >(verifier.verify(chain, challengeChecker ))
7685 }
7786
7887 @Test
7988 fun verify_unexpectedRootKey_returnsPathValidationFailure () {
8089 assertIs<VerificationResult .PathValidationFailure >(
81- verifier.verify(CertLists .wrongTrustAnchor, " challenge" .toByteArray())
90+ verifier.verify(
91+ CertLists .wrongTrustAnchor,
92+ ChallengeMatcher (ByteString .copyFromUtf8(" challenge" )),
93+ )
8294 )
8395 }
8496}
0 commit comments