Skip to content

Commit 18d3815

Browse files
committed
fixed key factory setups for certificate. Updated tests to ML-DSA.
1 parent be81d6c commit 18d3815

File tree

4 files changed

+18
-26
lines changed

4 files changed

+18
-26
lines changed

pkix/src/test/java/org/bouncycastle/cert/test/CertTest.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@
105105
import org.bouncycastle.jcajce.CompositePublicKey;
106106
import org.bouncycastle.jcajce.provider.asymmetric.compositesignatures.CompositeSignaturesConstants;
107107
import org.bouncycastle.jcajce.spec.CompositeAlgorithmSpec;
108+
import org.bouncycastle.jcajce.spec.MLDSAParameterSpec;
108109
import org.bouncycastle.jcajce.spec.SLHDSAParameterSpec;
109110
import org.bouncycastle.jce.X509KeyUsage;
110111
import org.bouncycastle.jce.interfaces.ECPointEncoder;
@@ -4252,9 +4253,9 @@ public void checkCreationDilithium()
42524253
Security.addProvider(new BouncyCastlePQCProvider());
42534254
}
42544255

4255-
KeyPairGenerator kpGen = KeyPairGenerator.getInstance("Dilithium", "BCPQC");
4256+
KeyPairGenerator kpGen = KeyPairGenerator.getInstance("ML-DSA-65", "BC");
42564257

4257-
kpGen.initialize(DilithiumParameterSpec.dilithium2, new SecureRandom());
4258+
kpGen.initialize(MLDSAParameterSpec.ml_dsa_65, new SecureRandom());
42584259

42594260
KeyPair kp = kpGen.generateKeyPair();
42604261

@@ -4269,7 +4270,7 @@ public void checkCreationDilithium()
42694270
//
42704271
// create base certificate - version 3
42714272
//
4272-
ContentSigner sigGen = new JcaContentSignerBuilder("Dilithium2").setProvider("BCPQC").build(privKey);
4273+
ContentSigner sigGen = new JcaContentSignerBuilder("ML-DSA-65").setProvider("BC").build(privKey);
42734274
X509v3CertificateBuilder certGen = new JcaX509v3CertificateBuilder(
42744275
builder.build(), BigInteger.valueOf(1),
42754276
new Date(System.currentTimeMillis() - 50000),
@@ -4284,7 +4285,7 @@ public void checkCreationDilithium()
42844285

42854286
X509Certificate baseCert = new JcaX509CertificateConverter().setProvider(BC).getCertificate(certGen.build(sigGen));
42864287

4287-
isTrue("oid wrong", NISTObjectIdentifiers.id_ml_dsa_44.getId().equals(baseCert.getSigAlgOID()));
4288+
isTrue("oid wrong", NISTObjectIdentifiers.id_ml_dsa_65.getId().equals(baseCert.getSigAlgOID()));
42884289
isTrue("params wrong", null == baseCert.getSigAlgParams());
42894290

42904291
//
@@ -4301,7 +4302,7 @@ public void checkCreationDilithium()
43014302

43024303
cert.verify(cert.getPublicKey());
43034304

4304-
isEquals("name mismatch: " + cert.getSigAlgName(), "DILITHIUM2", cert.getSigAlgName());
4305+
isEquals("name mismatch: " + cert.getSigAlgName(), "ML-DSA-65", cert.getSigAlgName());
43054306

43064307
// check encoded works
43074308
cert.getEncoded();

pkix/src/test/java/org/bouncycastle/cert/test/ExternalKeyTest.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package org.bouncycastle.cert.test;
22

33
import java.io.IOException;
4-
import java.io.StringWriter;
54
import java.math.BigInteger;
65
import java.security.KeyPair;
76
import java.security.KeyPairGenerator;
@@ -12,11 +11,9 @@
1211
import java.security.cert.X509Certificate;
1312
import java.util.Date;
1413

15-
import org.bouncycastle.asn1.ASN1Primitive;
1614
import org.bouncycastle.asn1.bc.BCObjectIdentifiers;
1715
import org.bouncycastle.asn1.bc.ExternalValue;
1816
import org.bouncycastle.asn1.nist.NISTObjectIdentifiers;
19-
import org.bouncycastle.asn1.util.ASN1Dump;
2017
import org.bouncycastle.asn1.x500.X500Name;
2118
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
2219
import org.bouncycastle.asn1.x509.GeneralName;
@@ -26,7 +23,6 @@
2623
import org.bouncycastle.cert.jcajce.JcaX509v1CertificateBuilder;
2724
import org.bouncycastle.jcajce.ExternalPublicKey;
2825
import org.bouncycastle.jce.provider.BouncyCastleProvider;
29-
import org.bouncycastle.openssl.jcajce.JcaPEMWriter;
3026
import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder;
3127
import org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider;
3228
import org.bouncycastle.util.BigIntegers;
@@ -96,7 +92,7 @@ private void checkCertificate()
9692
private void checkCertificateDilithium()
9793
throws Exception
9894
{
99-
KeyPairGenerator kpGen = KeyPairGenerator.getInstance("Dilithium5");
95+
KeyPairGenerator kpGen = KeyPairGenerator.getInstance("ML-DSA-87");
10096

10197
KeyPair kp = kpGen.generateKeyPair();
10298

@@ -109,7 +105,7 @@ private void checkCertificateDilithium()
109105
JcaX509v1CertificateBuilder certBldr = new JcaX509v1CertificateBuilder(
110106
name, BigInteger.valueOf(System.currentTimeMillis()), new Date(time - 5000), new Date(time + 365L * 24L * 60 * 60 * 5000), name, externalKey);
111107

112-
X509CertificateHolder certHolder = certBldr.build(new JcaContentSignerBuilder("Dilithium5").build(kp.getPrivate()));
108+
X509CertificateHolder certHolder = certBldr.build(new JcaContentSignerBuilder("ML-DSA-87").build(kp.getPrivate()));
113109

114110
X509Certificate cert = new JcaX509CertificateConverter().setProvider("BC").getCertificate(certHolder);
115111
// System.err.println(ASN1Dump.dumpAsString(ASN1Primitive.fromByteArray(cert.getEncoded())));

pkix/src/test/java/org/bouncycastle/pkcs/test/PKCS10Test.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.bouncycastle.asn1.x509.GeneralName;
2323
import org.bouncycastle.asn1.x509.GeneralNames;
2424
import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
25+
import org.bouncycastle.jcajce.spec.MLDSAParameterSpec;
2526
import org.bouncycastle.jce.provider.BouncyCastleProvider;
2627
import org.bouncycastle.jce.spec.ECNamedCurveGenParameterSpec;
2728
import org.bouncycastle.operator.ContentSigner;
@@ -34,7 +35,6 @@
3435
import org.bouncycastle.pkcs.PKCS10CertificationRequestBuilder;
3536
import org.bouncycastle.pkcs.jcajce.JcaPKCS10CertificationRequest;
3637
import org.bouncycastle.pkcs.jcajce.JcaPKCS10CertificationRequestBuilder;
37-
import org.bouncycastle.pqc.jcajce.spec.DilithiumParameterSpec;
3838
import org.bouncycastle.test.PrintTestResult;
3939
import org.bouncycastle.util.encoders.Base64;
4040
import org.bouncycastle.util.encoders.Hex;
@@ -195,13 +195,13 @@ public void testAltRequestAttributes()
195195
p256Kpg.initialize(new ECNamedCurveGenParameterSpec("P-256"));
196196
KeyPair p256Kp = p256Kpg.generateKeyPair();
197197

198-
KeyPairGenerator dilKpg = KeyPairGenerator.getInstance("Dilithium", "BC");
199-
dilKpg.initialize(DilithiumParameterSpec.dilithium2);
198+
KeyPairGenerator dilKpg = KeyPairGenerator.getInstance("ML-DSA", "BC");
199+
dilKpg.initialize(MLDSAParameterSpec.ml_dsa_44);
200200
KeyPair dilKp = dilKpg.generateKeyPair();
201201

202202
JcaPKCS10CertificationRequestBuilder jcaPkcs10Builder = new JcaPKCS10CertificationRequestBuilder(new X500Name("CN=Test"), p256Kp.getPublic());
203203

204-
ContentSigner altSigner = new JcaContentSignerBuilder("Dilithium2").setProvider("BC").build(dilKp.getPrivate());
204+
ContentSigner altSigner = new JcaContentSignerBuilder("ML-DSA-44").setProvider("BC").build(dilKp.getPrivate());
205205

206206
PKCS10CertificationRequest request = jcaPkcs10Builder.build(new JcaContentSignerBuilder("SHA256withECDSA").setProvider("BC").build(p256Kp.getPrivate()), dilKp.getPublic(), altSigner);
207207

@@ -219,8 +219,8 @@ public void testDeltaRequestAttribute()
219219
p256Kpg.initialize(new ECNamedCurveGenParameterSpec("P-256"));
220220
KeyPair p256Kp = p256Kpg.generateKeyPair();
221221

222-
KeyPairGenerator dilKpg = KeyPairGenerator.getInstance("Dilithium", "BC");
223-
dilKpg.initialize(DilithiumParameterSpec.dilithium2);
222+
KeyPairGenerator dilKpg = KeyPairGenerator.getInstance("ML-DSA", "BC");
223+
dilKpg.initialize(MLDSAParameterSpec.ml_dsa_44);
224224
KeyPair dilKp = dilKpg.generateKeyPair();
225225

226226
PKCS10CertificationRequestBuilder pkcs10Builder = new JcaPKCS10CertificationRequestBuilder(new X500Name("CN=Test"), p256Kp.getPublic());

prov/src/main/java/org/bouncycastle/jce/provider/BouncyCastleProvider.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -424,9 +424,10 @@ private void loadPQCKeys()
424424
addKeyInfoConverter(NISTObjectIdentifiers.id_ml_dsa_65, new MLDSAKeyFactorySpi());
425425
addKeyInfoConverter(NISTObjectIdentifiers.id_ml_dsa_87, new MLDSAKeyFactorySpi());
426426

427-
addKeyInfoConverter(NISTObjectIdentifiers.id_ml_dsa_44, new DilithiumKeyFactorySpi());
428-
addKeyInfoConverter(NISTObjectIdentifiers.id_ml_dsa_65, new DilithiumKeyFactorySpi());
429-
addKeyInfoConverter(NISTObjectIdentifiers.id_ml_dsa_87, new DilithiumKeyFactorySpi());
427+
addKeyInfoConverter(NISTObjectIdentifiers.id_alg_ml_kem_512, new MLKEMKeyFactorySpi());
428+
addKeyInfoConverter(NISTObjectIdentifiers.id_alg_ml_kem_768, new MLKEMKeyFactorySpi());
429+
addKeyInfoConverter(NISTObjectIdentifiers.id_alg_ml_kem_1024, new MLKEMKeyFactorySpi());
430+
430431
addKeyInfoConverter(BCObjectIdentifiers.dilithium2_aes, new DilithiumKeyFactorySpi());
431432
addKeyInfoConverter(BCObjectIdentifiers.dilithium3_aes, new DilithiumKeyFactorySpi());
432433
addKeyInfoConverter(BCObjectIdentifiers.dilithium5_aes, new DilithiumKeyFactorySpi());
@@ -442,13 +443,7 @@ private void loadPQCKeys()
442443
addKeyInfoConverter(BCObjectIdentifiers.hqc192, new HQCKeyFactorySpi());
443444
addKeyInfoConverter(BCObjectIdentifiers.hqc256, new HQCKeyFactorySpi());
444445

445-
addKeyInfoConverter(NISTObjectIdentifiers.id_alg_ml_kem_512, new MLKEMKeyFactorySpi());
446-
addKeyInfoConverter(NISTObjectIdentifiers.id_alg_ml_kem_768, new MLKEMKeyFactorySpi());
447-
addKeyInfoConverter(NISTObjectIdentifiers.id_alg_ml_kem_1024, new MLKEMKeyFactorySpi());
448446

449-
addKeyInfoConverter(NISTObjectIdentifiers.id_alg_ml_kem_512, new KyberKeyFactorySpi());
450-
addKeyInfoConverter(NISTObjectIdentifiers.id_alg_ml_kem_768, new KyberKeyFactorySpi());
451-
addKeyInfoConverter(NISTObjectIdentifiers.id_alg_ml_kem_1024, new KyberKeyFactorySpi());
452447
addKeyInfoConverter(BCObjectIdentifiers.kyber512_aes, new KyberKeyFactorySpi());
453448
addKeyInfoConverter(BCObjectIdentifiers.kyber768_aes, new KyberKeyFactorySpi());
454449
addKeyInfoConverter(BCObjectIdentifiers.kyber1024_aes, new KyberKeyFactorySpi());

0 commit comments

Comments
 (0)