Skip to content

Commit dac71f9

Browse files
carmenyhcopybara-github
authored andcommitted
Add support to pass in hardcoded root/key.
PiperOrigin-RevId: 945004516
1 parent 3d9b718 commit dac71f9

2 files changed

Lines changed: 17 additions & 5 deletions

File tree

src/main/kotlin/testing/KeyAttestationCertFactory.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,11 @@ import org.bouncycastle.cert.jcajce.JcaX509v3CertificateBuilder
4545
import org.bouncycastle.operator.ContentSigner
4646
import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder
4747

48-
internal class KeyAttestationCertFactory(val fakeCalendar: FakeCalendar = FakeCalendar.DEFAULT) {
48+
internal class KeyAttestationCertFactory(
49+
val fakeCalendar: FakeCalendar = FakeCalendar.DEFAULT,
50+
val hardodedRootKey: KeyPair? = null,
51+
val hardcodedRoot: X509Certificate? = null,
52+
) {
4953
private val ecKeyPairGenerator =
5054
KeyPairGenerator.getInstance("EC").apply {
5155
initialize(ECGenParameterSpec("secp256r1"), FakeSecureRandom())
@@ -60,13 +64,13 @@ internal class KeyAttestationCertFactory(val fakeCalendar: FakeCalendar = FakeCa
6064

6165
internal fun generateRsaKeyPair() = rsaKeyPairGenerator.generateKeyPair()
6266

63-
val rootKey = ecKeyPairGenerator.generateKeyPair()
67+
val rootKey = hardodedRootKey ?: ecKeyPairGenerator.generateKeyPair()
6468
val intermediateKey = ecKeyPairGenerator.generateKeyPair()
6569
val rkpKey = ecKeyPairGenerator.generateKeyPair()
6670
val attestationKey = ecKeyPairGenerator.generateKeyPair()
6771
val leafKey: KeyPair = ecKeyPairGenerator.generateKeyPair()
6872

69-
val root: X509Certificate = generateRootCertificate()
73+
val root: X509Certificate = hardcodedRoot ?: generateRootCertificate()
7074
val factoryIntermediate = generateIntermediateCertificate()
7175
val remoteIntermediate = generateIntermediateCertificate(subject = REMOTE_INTERMEDIATE_SUBJECT)
7276
val rkpIntermediate =

src/main/kotlin/testing/KeyAttestationCertPathFactory.kt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,24 @@ import com.android.keyattestation.verifier.KeyDescription
2020
import com.android.keyattestation.verifier.SecurityLevel
2121
import com.android.keyattestation.verifier.provider.KeyAttestationCertPath
2222
import java.math.BigInteger
23+
import java.security.KeyPair
2324
import java.security.PublicKey
25+
import java.security.cert.X509Certificate
2426

2527
/**
2628
* Factory for creating valid [KeyAttestationCertPath] chains for testing.
2729
*
2830
* @param fakeCalendar the fake calendar for the certificate chains validity period.
2931
*/
30-
class KeyAttestationCertPathFactory(val fakeCalendar: FakeCalendar = FakeCalendar()) {
32+
class KeyAttestationCertPathFactory
33+
@JvmOverloads
34+
constructor(
35+
val fakeCalendar: FakeCalendar = FakeCalendar(),
36+
val hardcodedRootKey: KeyPair? = null,
37+
val hardcodedRoot: X509Certificate? = null,
38+
) {
3139
private val certFactory: KeyAttestationCertFactory =
32-
KeyAttestationCertFactory(fakeCalendar = fakeCalendar)
40+
KeyAttestationCertFactory(fakeCalendar, hardcodedRootKey, hardcodedRoot)
3341

3442
/* The root certificate of all generated certificate chains. */
3543
val root = certFactory.root

0 commit comments

Comments
 (0)