52
52
import org .bouncycastle .cms .jcajce .JceCMSContentEncryptorBuilder ;
53
53
import org .bouncycastle .cms .jcajce .JceKEMEnvelopedRecipient ;
54
54
import org .bouncycastle .cms .jcajce .JceKEMRecipientInfoGenerator ;
55
+ import org .bouncycastle .jcajce .spec .MLDSAParameterSpec ;
56
+ import org .bouncycastle .jcajce .spec .MLKEMParameterSpec ;
55
57
import org .bouncycastle .jce .provider .BouncyCastleProvider ;
56
58
import org .bouncycastle .operator .ContentSigner ;
57
59
import org .bouncycastle .operator .ContentVerifierProvider ;
66
68
import org .bouncycastle .pqc .jcajce .provider .BouncyCastlePQCProvider ;
67
69
import org .bouncycastle .pqc .jcajce .spec .BIKEParameterSpec ;
68
70
import org .bouncycastle .pqc .jcajce .spec .CMCEParameterSpec ;
69
- import org .bouncycastle .pqc .jcajce .spec .DilithiumParameterSpec ;
70
71
import org .bouncycastle .pqc .jcajce .spec .HQCParameterSpec ;
71
- import org .bouncycastle .pqc .jcajce .spec .KyberParameterSpec ;
72
72
import org .bouncycastle .pqc .jcajce .spec .NTRUParameterSpec ;
73
73
import org .bouncycastle .util .BigIntegers ;
74
74
@@ -86,24 +86,24 @@ public void tearDown()
86
86
87
87
}
88
88
89
- public void testKyberRequestWithDilithiumCA ()
89
+ public void testMlKemRequestWithMlDsaCA ()
90
90
throws Exception
91
91
{
92
92
char [] senderMacPassword = "secret" .toCharArray ();
93
- GeneralName sender = new GeneralName (new X500Name ("CN=Kyber Subject" ));
94
- GeneralName recipient = new GeneralName (new X500Name ("CN=Dilithium Issuer" ));
93
+ GeneralName sender = new GeneralName (new X500Name ("CN=ML-KEM Subject" ));
94
+ GeneralName recipient = new GeneralName (new X500Name ("CN=ML-DSA Issuer" ));
95
95
96
- KeyPairGenerator dilKpGen = KeyPairGenerator .getInstance ("Dilithium " , "BCPQC " );
96
+ KeyPairGenerator dilKpGen = KeyPairGenerator .getInstance ("ML-DSA " , "BC " );
97
97
98
- dilKpGen .initialize (DilithiumParameterSpec . dilithium2 );
98
+ dilKpGen .initialize (MLDSAParameterSpec . ml_dsa_65 );
99
99
100
100
KeyPair dilKp = dilKpGen .generateKeyPair ();
101
101
102
- X509CertificateHolder caCert = makeV3Certificate ("CN=Dilithium Issuer" , dilKp );
102
+ X509CertificateHolder caCert = makeV3Certificate ("CN=ML-DSA Issuer" , dilKp );
103
103
104
- KeyPairGenerator kybKpGen = KeyPairGenerator .getInstance ("Kyber " , "BCPQC " );
104
+ KeyPairGenerator kybKpGen = KeyPairGenerator .getInstance ("ML-KEM " , "BC " );
105
105
106
- kybKpGen .initialize (KyberParameterSpec . kyber512 );
106
+ kybKpGen .initialize (MLKEMParameterSpec . ml_kem_768 );
107
107
108
108
KeyPair kybKp = kybKpGen .generateKeyPair ();
109
109
@@ -140,7 +140,7 @@ public void testKyberRequestWithDilithiumCA()
140
140
CertificateRequestMessage senderReqMessage = requestMessages .getRequests ()[0 ];
141
141
CertTemplate certTemplate = senderReqMessage .getCertTemplate ();
142
142
143
- X509CertificateHolder cert = makeV3Certificate (certTemplate .getPublicKey (), certTemplate .getSubject (), dilKp , "CN=Dilithium Issuer" );
143
+ X509CertificateHolder cert = makeV3Certificate (certTemplate .getPublicKey (), certTemplate .getSubject (), dilKp , "CN=ML-DSA Issuer" );
144
144
145
145
// Send response with encrypted certificate
146
146
CMSEnvelopedDataGenerator edGen = new CMSEnvelopedDataGenerator ();
@@ -163,7 +163,7 @@ public void testKyberRequestWithDilithiumCA()
163
163
164
164
repMessageBuilder .addCertificateResponse (certRespBuilder .build ());
165
165
166
- ContentSigner signer = new JcaContentSignerBuilder ("Dilithium " ).setProvider ("BCPQC " ).build (dilKp .getPrivate ());
166
+ ContentSigner signer = new JcaContentSignerBuilder ("ML-DSA " ).setProvider ("BC " ).build (dilKp .getPrivate ());
167
167
168
168
CertificateRepMessage repMessage = repMessageBuilder .build ();
169
169
@@ -210,7 +210,7 @@ public void testKyberRequestWithDilithiumCA()
210
210
211
211
RecipientInformation recInfo = (RecipientInformation )c .iterator ().next ();
212
212
213
- assertEquals (recInfo .getKeyEncryptionAlgOID (), NISTObjectIdentifiers .id_alg_ml_kem_512 .getId ());
213
+ assertEquals (recInfo .getKeyEncryptionAlgOID (), NISTObjectIdentifiers .id_alg_ml_kem_768 .getId ());
214
214
215
215
// Note: we don't specify the provider here as we're actually using both BC and BCPQC
216
216
@@ -248,20 +248,20 @@ public void testKyberRequestWithDilithiumCA()
248
248
assertTrue (recContent .getStatusMessages ()[0 ].isVerified (receivedCert , new JcaDigestCalculatorProviderBuilder ().build ()));
249
249
}
250
250
251
- public void testNTRURequestWithDilithiumCA ()
251
+ public void testNTRURequestWithMlDsaCA ()
252
252
throws Exception
253
253
{
254
254
char [] senderMacPassword = "secret" .toCharArray ();
255
255
GeneralName sender = new GeneralName (new X500Name ("CN=NTRU Subject" ));
256
- GeneralName recipient = new GeneralName (new X500Name ("CN=Dilithium Issuer" ));
256
+ GeneralName recipient = new GeneralName (new X500Name ("CN=ML-DSA Issuer" ));
257
257
258
- KeyPairGenerator dilKpGen = KeyPairGenerator .getInstance ("Dilithium " , "BCPQC " );
258
+ KeyPairGenerator dilKpGen = KeyPairGenerator .getInstance ("ML-DSA " , "BC " );
259
259
260
- dilKpGen .initialize (DilithiumParameterSpec . dilithium2 );
260
+ dilKpGen .initialize (MLDSAParameterSpec . ml_dsa_44 );
261
261
262
262
KeyPair dilKp = dilKpGen .generateKeyPair ();
263
263
264
- X509CertificateHolder caCert = makeV3Certificate ("CN=Dilithium Issuer" , dilKp );
264
+ X509CertificateHolder caCert = makeV3Certificate ("CN=ML-DSA Issuer" , dilKp );
265
265
266
266
KeyPairGenerator kybKpGen = KeyPairGenerator .getInstance ("NTRU" , "BCPQC" );
267
267
@@ -302,7 +302,7 @@ public void testNTRURequestWithDilithiumCA()
302
302
CertificateRequestMessage senderReqMessage = requestMessages .getRequests ()[0 ];
303
303
CertTemplate certTemplate = senderReqMessage .getCertTemplate ();
304
304
305
- X509CertificateHolder cert = makeV3Certificate (certTemplate .getPublicKey (), certTemplate .getSubject (), dilKp , "CN=Dilithium Issuer" );
305
+ X509CertificateHolder cert = makeV3Certificate (certTemplate .getPublicKey (), certTemplate .getSubject (), dilKp , "CN=ML-DSA Issuer" );
306
306
307
307
// Send response with encrypted certificate
308
308
CMSEnvelopedDataGenerator edGen = new CMSEnvelopedDataGenerator ();
@@ -325,7 +325,7 @@ public void testNTRURequestWithDilithiumCA()
325
325
326
326
repMessageBuilder .addCertificateResponse (certRespBuilder .build ());
327
327
328
- ContentSigner signer = new JcaContentSignerBuilder ("Dilithium " ).setProvider ("BCPQC " ).build (dilKp .getPrivate ());
328
+ ContentSigner signer = new JcaContentSignerBuilder ("ML-DSA " ).setProvider ("BC " ).build (dilKp .getPrivate ());
329
329
330
330
CertificateRepMessage repMessage = repMessageBuilder .build ();
331
331
@@ -420,20 +420,20 @@ public void testNTRURequestWithDilithiumCA()
420
420
// System.err.println(ASN1Dump.dumpAsString(receivedEnvelope.toASN1Structure()));
421
421
}
422
422
423
- public void testBIKERequestWithDilithiumCA ()
423
+ public void testBIKERequestWithMlDsaCA ()
424
424
throws Exception
425
425
{
426
426
char [] senderMacPassword = "secret" .toCharArray ();
427
427
GeneralName sender = new GeneralName (new X500Name ("CN=Bike128 Subject" ));
428
- GeneralName recipient = new GeneralName (new X500Name ("CN=Dilithium Issuer" ));
428
+ GeneralName recipient = new GeneralName (new X500Name ("CN=ML-DSA Issuer" ));
429
429
430
- KeyPairGenerator dilKpGen = KeyPairGenerator .getInstance ("Dilithium " , "BCPQC " );
430
+ KeyPairGenerator dilKpGen = KeyPairGenerator .getInstance ("ML-DSA " , "BC " );
431
431
432
- dilKpGen .initialize (DilithiumParameterSpec . dilithium2 );
432
+ dilKpGen .initialize (MLDSAParameterSpec . ml_dsa_44 );
433
433
434
434
KeyPair dilKp = dilKpGen .generateKeyPair ();
435
435
436
- X509CertificateHolder caCert = makeV3Certificate ("CN=Dilithium Issuer" , dilKp );
436
+ X509CertificateHolder caCert = makeV3Certificate ("CN=ML-DSA Issuer" , dilKp );
437
437
438
438
KeyPairGenerator kybKpGen = KeyPairGenerator .getInstance ("BIKE" , "BCPQC" );
439
439
@@ -474,7 +474,7 @@ public void testBIKERequestWithDilithiumCA()
474
474
CertificateRequestMessage senderReqMessage = requestMessages .getRequests ()[0 ];
475
475
CertTemplate certTemplate = senderReqMessage .getCertTemplate ();
476
476
477
- X509CertificateHolder cert = makeV3Certificate (certTemplate .getPublicKey (), certTemplate .getSubject (), dilKp , "CN=Dilithium Issuer" );
477
+ X509CertificateHolder cert = makeV3Certificate (certTemplate .getPublicKey (), certTemplate .getSubject (), dilKp , "CN=ML-DSA Issuer" );
478
478
479
479
// Send response with encrypted certificate
480
480
CMSEnvelopedDataGenerator edGen = new CMSEnvelopedDataGenerator ();
@@ -497,7 +497,7 @@ public void testBIKERequestWithDilithiumCA()
497
497
498
498
repMessageBuilder .addCertificateResponse (certRespBuilder .build ());
499
499
500
- ContentSigner signer = new JcaContentSignerBuilder ("Dilithium " ).setProvider ("BCPQC " ).build (dilKp .getPrivate ());
500
+ ContentSigner signer = new JcaContentSignerBuilder ("ML-DSA " ).setProvider ("BC " ).build (dilKp .getPrivate ());
501
501
502
502
CertificateRepMessage repMessage = repMessageBuilder .build ();
503
503
@@ -592,20 +592,20 @@ public void testBIKERequestWithDilithiumCA()
592
592
// System.err.println(ASN1Dump.dumpAsString(receivedEnvelope.toASN1Structure()));
593
593
}
594
594
595
- public void testHQCRequestWithDilithiumCA ()
595
+ public void testHQCRequestWithMlDsaCA ()
596
596
throws Exception
597
597
{
598
598
char [] senderMacPassword = "secret" .toCharArray ();
599
599
GeneralName sender = new GeneralName (new X500Name ("CN=HQC128 Subject" ));
600
- GeneralName recipient = new GeneralName (new X500Name ("CN=Dilithium Issuer" ));
600
+ GeneralName recipient = new GeneralName (new X500Name ("CN=ML-DSA Issuer" ));
601
601
602
- KeyPairGenerator dilKpGen = KeyPairGenerator .getInstance ("Dilithium " , "BCPQC " );
602
+ KeyPairGenerator dilKpGen = KeyPairGenerator .getInstance ("ML-DSA " , "BC " );
603
603
604
- dilKpGen .initialize (DilithiumParameterSpec . dilithium2 );
604
+ dilKpGen .initialize (MLDSAParameterSpec . ml_dsa_44 );
605
605
606
606
KeyPair dilKp = dilKpGen .generateKeyPair ();
607
607
608
- X509CertificateHolder caCert = makeV3Certificate ("CN=Dilithium Issuer" , dilKp );
608
+ X509CertificateHolder caCert = makeV3Certificate ("CN=ML-DSA Issuer" , dilKp );
609
609
610
610
KeyPairGenerator kybKpGen = KeyPairGenerator .getInstance ("HQC" , "BCPQC" );
611
611
@@ -646,7 +646,7 @@ public void testHQCRequestWithDilithiumCA()
646
646
CertificateRequestMessage senderReqMessage = requestMessages .getRequests ()[0 ];
647
647
CertTemplate certTemplate = senderReqMessage .getCertTemplate ();
648
648
649
- X509CertificateHolder cert = makeV3Certificate (certTemplate .getPublicKey (), certTemplate .getSubject (), dilKp , "CN=Dilithium Issuer" );
649
+ X509CertificateHolder cert = makeV3Certificate (certTemplate .getPublicKey (), certTemplate .getSubject (), dilKp , "CN=ML-DSA Issuer" );
650
650
651
651
// Send response with encrypted certificate
652
652
CMSEnvelopedDataGenerator edGen = new CMSEnvelopedDataGenerator ();
@@ -669,7 +669,7 @@ public void testHQCRequestWithDilithiumCA()
669
669
670
670
repMessageBuilder .addCertificateResponse (certRespBuilder .build ());
671
671
672
- ContentSigner signer = new JcaContentSignerBuilder ("Dilithium " ).setProvider ("BCPQC " ).build (dilKp .getPrivate ());
672
+ ContentSigner signer = new JcaContentSignerBuilder ("ML-DSA " ).setProvider ("BC " ).build (dilKp .getPrivate ());
673
673
674
674
CertificateRepMessage repMessage = repMessageBuilder .build ();
675
675
@@ -764,20 +764,20 @@ public void testHQCRequestWithDilithiumCA()
764
764
// System.err.println(ASN1Dump.dumpAsString(receivedEnvelope.toASN1Structure()));
765
765
}
766
766
767
- public void testCMCERequestWithDilithiumCA ()
767
+ public void testCMCERequestWithMlDsaCA ()
768
768
throws Exception
769
769
{
770
770
char [] senderMacPassword = "secret" .toCharArray ();
771
771
GeneralName sender = new GeneralName (new X500Name ("CN=mceliece3488864 Subject" ));
772
- GeneralName recipient = new GeneralName (new X500Name ("CN=Dilithium Issuer" ));
772
+ GeneralName recipient = new GeneralName (new X500Name ("CN=ML-DSA Issuer" ));
773
773
774
- KeyPairGenerator dilKpGen = KeyPairGenerator .getInstance ("Dilithium " , "BCPQC " );
774
+ KeyPairGenerator dilKpGen = KeyPairGenerator .getInstance ("ML-DSA " , "BC " );
775
775
776
- dilKpGen .initialize (DilithiumParameterSpec . dilithium2 );
776
+ dilKpGen .initialize (MLDSAParameterSpec . ml_dsa_44 );
777
777
778
778
KeyPair dilKp = dilKpGen .generateKeyPair ();
779
779
780
- X509CertificateHolder caCert = makeV3Certificate ("CN=Dilithium Issuer" , dilKp );
780
+ X509CertificateHolder caCert = makeV3Certificate ("CN=ML-DSA Issuer" , dilKp );
781
781
782
782
KeyPairGenerator cmceKpGen = KeyPairGenerator .getInstance ("CMCE" , "BCPQC" );
783
783
@@ -818,7 +818,7 @@ public void testCMCERequestWithDilithiumCA()
818
818
CertificateRequestMessage senderReqMessage = requestMessages .getRequests ()[0 ];
819
819
CertTemplate certTemplate = senderReqMessage .getCertTemplate ();
820
820
821
- X509CertificateHolder cert = makeV3Certificate (certTemplate .getPublicKey (), certTemplate .getSubject (), dilKp , "CN=Dilithium Issuer" );
821
+ X509CertificateHolder cert = makeV3Certificate (certTemplate .getPublicKey (), certTemplate .getSubject (), dilKp , "CN=ML-DSA Issuer" );
822
822
823
823
// Send response with encrypted certificate
824
824
CMSEnvelopedDataGenerator edGen = new CMSEnvelopedDataGenerator ();
@@ -841,7 +841,7 @@ public void testCMCERequestWithDilithiumCA()
841
841
842
842
repMessageBuilder .addCertificateResponse (certRespBuilder .build ());
843
843
844
- ContentSigner signer = new JcaContentSignerBuilder ("Dilithium " ).setProvider ("BCPQC " ).build (dilKp .getPrivate ());
844
+ ContentSigner signer = new JcaContentSignerBuilder ("ML-DSA " ).setProvider ("BC " ).build (dilKp .getPrivate ());
845
845
846
846
CertificateRepMessage repMessage = repMessageBuilder .build ();
847
847
@@ -936,20 +936,20 @@ public void testCMCERequestWithDilithiumCA()
936
936
// System.err.println(ASN1Dump.dumpAsString(receivedEnvelope.toASN1Structure()));
937
937
}
938
938
939
- public void testExternalCMCERequestWithDilithiumCA ()
939
+ public void testExternalCMCERequestWithMlDsaCA ()
940
940
throws Exception
941
941
{
942
942
char [] senderMacPassword = "secret" .toCharArray ();
943
943
GeneralName sender = new GeneralName (new X500Name ("CN=mceliece3488864 Subject" ));
944
- GeneralName recipient = new GeneralName (new X500Name ("CN=Dilithium Issuer" ));
944
+ GeneralName recipient = new GeneralName (new X500Name ("CN=ML-DSA Issuer" ));
945
945
946
- KeyPairGenerator dilKpGen = KeyPairGenerator .getInstance ("Dilithium " , "BCPQC " );
946
+ KeyPairGenerator dilKpGen = KeyPairGenerator .getInstance ("ML-DSA " , "BC " );
947
947
948
- dilKpGen .initialize (DilithiumParameterSpec . dilithium2 );
948
+ dilKpGen .initialize (MLDSAParameterSpec . ml_dsa_44 );
949
949
950
950
KeyPair dilKp = dilKpGen .generateKeyPair ();
951
951
952
- X509CertificateHolder caCert = makeV3Certificate ("CN=Dilithium Issuer" , dilKp );
952
+ X509CertificateHolder caCert = makeV3Certificate ("CN=ML-DSA Issuer" , dilKp );
953
953
954
954
KeyPairGenerator cmceKpGen = KeyPairGenerator .getInstance ("CMCE" , "BCPQC" );
955
955
@@ -990,7 +990,7 @@ public void testExternalCMCERequestWithDilithiumCA()
990
990
CertificateRequestMessage senderReqMessage = requestMessages .getRequests ()[0 ];
991
991
CertTemplate certTemplate = senderReqMessage .getCertTemplate ();
992
992
993
- X509CertificateHolder cert = makeV3Certificate (certTemplate .getPublicKey (), certTemplate .getSubject (), dilKp , "CN=Dilithium Issuer" );
993
+ X509CertificateHolder cert = makeV3Certificate (certTemplate .getPublicKey (), certTemplate .getSubject (), dilKp , "CN=ML-DSA Issuer" );
994
994
995
995
// Send response with encrypted certificate
996
996
CMSEnvelopedDataGenerator edGen = new CMSEnvelopedDataGenerator ();
@@ -1013,7 +1013,7 @@ public void testExternalCMCERequestWithDilithiumCA()
1013
1013
1014
1014
repMessageBuilder .addCertificateResponse (certRespBuilder .build ());
1015
1015
1016
- ContentSigner signer = new JcaContentSignerBuilder ("Dilithium " ).setProvider ("BCPQC " ).build (dilKp .getPrivate ());
1016
+ ContentSigner signer = new JcaContentSignerBuilder ("ML-DSA " ).setProvider ("BC " ).build (dilKp .getPrivate ());
1017
1017
1018
1018
CertificateRepMessage repMessage = repMessageBuilder .build ();
1019
1019
@@ -1124,7 +1124,7 @@ private static X509CertificateHolder makeV3Certificate(String _subDN, KeyPair is
1124
1124
1125
1125
certGen .addExtension (Extension .basicConstraints , true , new BasicConstraints (0 ));
1126
1126
1127
- ContentSigner signer = new JcaContentSignerBuilder ("Dilithium " ).build (issPriv );
1127
+ ContentSigner signer = new JcaContentSignerBuilder ("ML-DSA " ).build (issPriv );
1128
1128
1129
1129
X509CertificateHolder certHolder = certGen .build (signer );
1130
1130
@@ -1151,7 +1151,7 @@ private static X509CertificateHolder makeV3Certificate(SubjectPublicKeyInfo pubK
1151
1151
1152
1152
certGen .addExtension (Extension .basicConstraints , true , new BasicConstraints (false ));
1153
1153
1154
- ContentSigner signer = new JcaContentSignerBuilder ("Dilithium " ).build (issPriv );
1154
+ ContentSigner signer = new JcaContentSignerBuilder ("ML-DSA " ).build (issPriv );
1155
1155
1156
1156
X509CertificateHolder certHolder = certGen .build (signer );
1157
1157
0 commit comments