@@ -59,6 +59,9 @@ import org.bouncycastle.asn1.x500.X500Name
5959import org .bouncycastle .asn1 .x509 .Extension
6060import org .bouncycastle .asn1 .x509 .GeneralName
6161import org .bouncycastle .asn1 .x509 .GeneralNamesBuilder
62+ import org .junit .runner .RunWith
63+ import org .scalatest .funspec .AnyFunSpec
64+ import org .scalatestplus .junit .JUnitRunner
6265
6366import java .nio .charset .StandardCharsets
6467import java .security .KeyFactory
@@ -68,10 +71,8 @@ import java.security.cert.X509Certificate
6871import java .security .spec .PKCS8EncodedKeySpec
6972import scala .jdk .CollectionConverters ._
7073import scala .jdk .OptionConverters .RichOption
71- import scala .util .Failure
72- import scala .util .Success
73- import scala .util .Try
7474
75+ /** Run using IDE or `./gradlew regenerateTestData` */
7576object RegistrationTestDataGenerator extends App {
7677 regenerateTestData()
7778
@@ -162,14 +163,8 @@ object RegistrationTestDataGenerator extends App {
162163 td.Tpm .ValidRs1 ,
163164 ).zipWithIndex
164165 } {
165- testData.regenerateFull() match {
166- case Success (newTestData) =>
167- println(i)
168- printTestDataCode(newTestData)
169- case Failure (e) =>
170- println(" Failed to regenerate" )
171- e.printStackTrace()
172- }
166+ println(i)
167+ printTestDataCode(testData.regenerateFull())
173168 }
174169 }
175170}
@@ -440,7 +435,7 @@ object RegistrationTestData {
440435 ) {
441436 override def regenerate () =
442437 TestAuthenticator .createBasicAttestedCredential(
443- keyAlgorithm = COSEAlgorithmIdentifier .EdDSA ,
438+ keyAlgorithm = Some ( COSEAlgorithmIdentifier .EdDSA ) ,
444439 attestationMaker = AttestationMaker .packed(
445440 AttestationSigner .selfsigned(COSEAlgorithmIdentifier .ES256 )
446441 ),
@@ -477,7 +472,7 @@ object RegistrationTestData {
477472 ) {
478473 override def regenerate () =
479474 TestAuthenticator .createBasicAttestedCredential(
480- keyAlgorithm = COSEAlgorithmIdentifier .Ed448 ,
475+ keyAlgorithm = Some ( COSEAlgorithmIdentifier .Ed448 ) ,
481476 attestationMaker = AttestationMaker .packed(
482477 AttestationSigner .selfsigned(COSEAlgorithmIdentifier .ES256 )
483478 ),
@@ -515,7 +510,7 @@ object RegistrationTestData {
515510 ) {
516511 override def regenerate () =
517512 TestAuthenticator .createBasicAttestedCredential(
518- keyAlgorithm = COSEAlgorithmIdentifier .ML_DSA_44 ,
513+ keyAlgorithm = Some ( COSEAlgorithmIdentifier .ML_DSA_44 ) ,
519514 attestationMaker = AttestationMaker .packed(
520515 AttestationSigner .selfsigned(COSEAlgorithmIdentifier .ML_DSA_44 )
521516 ),
@@ -553,7 +548,7 @@ object RegistrationTestData {
553548 ) {
554549 override def regenerate () =
555550 TestAuthenticator .createBasicAttestedCredential(
556- keyAlgorithm = COSEAlgorithmIdentifier .ML_DSA_65 ,
551+ keyAlgorithm = Some ( COSEAlgorithmIdentifier .ML_DSA_65 ) ,
557552 attestationMaker = AttestationMaker .packed(
558553 AttestationSigner .selfsigned(COSEAlgorithmIdentifier .ML_DSA_65 )
559554 ),
@@ -591,7 +586,7 @@ object RegistrationTestData {
591586 ) {
592587 override def regenerate () =
593588 TestAuthenticator .createBasicAttestedCredential(
594- keyAlgorithm = COSEAlgorithmIdentifier .ML_DSA_87 ,
589+ keyAlgorithm = Some ( COSEAlgorithmIdentifier .ML_DSA_87 ) ,
595590 attestationMaker = AttestationMaker .packed(
596591 AttestationSigner .selfsigned(COSEAlgorithmIdentifier .ML_DSA_87 )
597592 ),
@@ -616,7 +611,7 @@ object RegistrationTestData {
616611 ) {
617612 override def regenerate () =
618613 TestAuthenticator .createBasicAttestedCredential(
619- keyAlgorithm = COSEAlgorithmIdentifier .RS256 ,
614+ keyAlgorithm = Some ( COSEAlgorithmIdentifier .RS256 ) ,
620615 attestationMaker = AttestationMaker .packed(
621616 AttestationSigner .selfsigned(COSEAlgorithmIdentifier .RS256 )
622617 ),
@@ -641,7 +636,7 @@ object RegistrationTestData {
641636 ) {
642637 override def regenerate () =
643638 TestAuthenticator .createBasicAttestedCredential(
644- keyAlgorithm = COSEAlgorithmIdentifier .RS384 ,
639+ keyAlgorithm = Some ( COSEAlgorithmIdentifier .RS384 ) ,
645640 attestationMaker = AttestationMaker .packed(
646641 AttestationSigner .selfsigned(COSEAlgorithmIdentifier .RS384 )
647642 ),
@@ -666,7 +661,7 @@ object RegistrationTestData {
666661 ) {
667662 override def regenerate () =
668663 TestAuthenticator .createBasicAttestedCredential(
669- keyAlgorithm = COSEAlgorithmIdentifier .RS512 ,
664+ keyAlgorithm = Some ( COSEAlgorithmIdentifier .RS512 ) ,
670665 attestationMaker = AttestationMaker .packed(
671666 AttestationSigner .selfsigned(COSEAlgorithmIdentifier .RS512 )
672667 ),
@@ -703,7 +698,7 @@ object RegistrationTestData {
703698 ) {
704699 override def regenerate () =
705700 TestAuthenticator .createBasicAttestedCredential(
706- keyAlgorithm = COSEAlgorithmIdentifier .RS1 ,
701+ keyAlgorithm = Some ( COSEAlgorithmIdentifier .RS1 ) ,
707702 attestationMaker = AttestationMaker .packed(
708703 AttestationSigner .selfsigned(COSEAlgorithmIdentifier .RS1 )
709704 ),
@@ -947,7 +942,7 @@ object RegistrationTestData {
947942 ) {
948943 override def regenerate () =
949944 TestAuthenticator .createBasicAttestedCredential(
950- keyAlgorithm = COSEAlgorithmIdentifier .ES256 ,
945+ keyAlgorithm = Some ( COSEAlgorithmIdentifier .ES256 ) ,
951946 attestationMaker = AttestationMaker .tpm(
952947 AttestationSigner .ca(
953948 alg = COSEAlgorithmIdentifier .ES256 ,
@@ -980,7 +975,7 @@ object RegistrationTestData {
980975 ) {
981976 override def regenerate () =
982977 TestAuthenticator .createBasicAttestedCredential(
983- keyAlgorithm = COSEAlgorithmIdentifier .ES256 ,
978+ keyAlgorithm = Some ( COSEAlgorithmIdentifier .ES256 ) ,
984979 attestationMaker = AttestationMaker .tpm(
985980 AttestationSigner .ca(
986981 alg = COSEAlgorithmIdentifier .ES256 ,
@@ -1013,7 +1008,7 @@ object RegistrationTestData {
10131008 ) {
10141009 override def regenerate () =
10151010 TestAuthenticator .createBasicAttestedCredential(
1016- keyAlgorithm = COSEAlgorithmIdentifier .ES384 ,
1011+ keyAlgorithm = Some ( COSEAlgorithmIdentifier .ES384 ) ,
10171012 attestationMaker = AttestationMaker .tpm(
10181013 AttestationSigner .ca(
10191014 alg = COSEAlgorithmIdentifier .ES384 ,
@@ -1046,7 +1041,7 @@ object RegistrationTestData {
10461041 ) {
10471042 override def regenerate () =
10481043 TestAuthenticator .createBasicAttestedCredential(
1049- keyAlgorithm = COSEAlgorithmIdentifier .ES512 ,
1044+ keyAlgorithm = Some ( COSEAlgorithmIdentifier .ES512 ) ,
10501045 attestationMaker = AttestationMaker .tpm(
10511046 AttestationSigner .ca(
10521047 alg = COSEAlgorithmIdentifier .ES512 ,
@@ -1080,7 +1075,7 @@ object RegistrationTestData {
10801075 ) {
10811076 override def regenerate () =
10821077 TestAuthenticator .createBasicAttestedCredential(
1083- keyAlgorithm = COSEAlgorithmIdentifier .RS256 ,
1078+ keyAlgorithm = Some ( COSEAlgorithmIdentifier .RS256 ) ,
10841079 attestationMaker = AttestationMaker .tpm(
10851080 AttestationSigner .ca(
10861081 alg = COSEAlgorithmIdentifier .RS256 ,
@@ -1114,7 +1109,7 @@ object RegistrationTestData {
11141109 ) {
11151110 override def regenerate () =
11161111 TestAuthenticator .createBasicAttestedCredential(
1117- keyAlgorithm = COSEAlgorithmIdentifier .RS384 ,
1112+ keyAlgorithm = Some ( COSEAlgorithmIdentifier .RS384 ) ,
11181113 attestationMaker = AttestationMaker .tpm(
11191114 AttestationSigner .ca(
11201115 alg = COSEAlgorithmIdentifier .RS384 ,
@@ -1148,7 +1143,7 @@ object RegistrationTestData {
11481143 ) {
11491144 override def regenerate () =
11501145 TestAuthenticator .createBasicAttestedCredential(
1151- keyAlgorithm = COSEAlgorithmIdentifier .RS512 ,
1146+ keyAlgorithm = Some ( COSEAlgorithmIdentifier .RS512 ) ,
11521147 attestationMaker = AttestationMaker .tpm(
11531148 AttestationSigner .ca(
11541149 alg = COSEAlgorithmIdentifier .RS512 ,
@@ -1182,7 +1177,7 @@ object RegistrationTestData {
11821177 ) {
11831178 override def regenerate () =
11841179 TestAuthenticator .createBasicAttestedCredential(
1185- keyAlgorithm = COSEAlgorithmIdentifier .RS1 ,
1180+ keyAlgorithm = Some ( COSEAlgorithmIdentifier .RS1 ) ,
11861181 attestationMaker = AttestationMaker .tpm(
11871182 AttestationSigner .ca(
11881183 alg = COSEAlgorithmIdentifier .RS1 ,
@@ -1252,15 +1247,14 @@ case class RegistrationTestData(
12521247 KeyPair ,
12531248 List [(X509Certificate , PrivateKey )],
12541249 ) = ???
1255- def regenerateFull (): Try [RegistrationTestData ] =
1256- Try ({
1257- val (credential, keypair, attestationCertChain) = regenerate()
1258- val newValue =
1259- RegistrationTestData .from(credential, keypair, attestationCertChain)
1260- newValue.copy(
1261- assertion = assertion.map(_.regenerate(newValue))
1262- )
1263- })
1250+ def regenerateFull (): RegistrationTestData = {
1251+ val (credential, keypair, attestationCertChain) = regenerate()
1252+ val newValue =
1253+ RegistrationTestData .from(credential, keypair, attestationCertChain)
1254+ newValue.copy(
1255+ assertion = assertion.map(_.regenerate(newValue))
1256+ )
1257+ }
12641258
12651259 protected def validate (): Unit = {
12661260 val alg = COSEAlgorithmIdentifier
@@ -1443,3 +1437,14 @@ case class AssertionTestData(
14431437 )
14441438 }
14451439}
1440+
1441+ @ RunWith (classOf [JUnitRunner ])
1442+ class RegistrationTestDataSpec extends AnyFunSpec {
1443+ describe(" RegistrationTestDataGenerator" ) {
1444+ it(" successfully regenerates all test cases." ) {
1445+ assume(Util .eddsaAvailable)
1446+ assume(Util .mldsaAvailable)
1447+ RegistrationTestDataGenerator .regenerateTestData()
1448+ }
1449+ }
1450+ }
0 commit comments