Skip to content

Commit 1119427

Browse files
committed
added ml-dsa with SHA-512 test.
1 parent 3317546 commit 1119427

1 file changed

Lines changed: 75 additions & 0 deletions

File tree

pkix/src/test/java/org/bouncycastle/tsp/test/PQCTSPTest.java

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,4 +194,79 @@ public void testSPHINCSPlus()
194194

195195
assertNotNull("no signingCertificate attribute found", table.get(PKCSObjectIdentifiers.id_aa_signingCertificate));
196196
}
197+
198+
public void testMLDSA()
199+
throws Exception
200+
{
201+
//
202+
// set up the keys
203+
//
204+
PrivateKey privKey;
205+
PublicKey pubKey;
206+
207+
try
208+
{
209+
KeyPairGenerator g = KeyPairGenerator.getInstance("ML-DSA", BC);
210+
211+
KeyPair p = g.generateKeyPair();
212+
213+
privKey = p.getPrivate();
214+
pubKey = p.getPublic();
215+
}
216+
catch (Exception e)
217+
{
218+
fail("error setting up keys - " + e);
219+
return;
220+
}
221+
222+
//
223+
// extensions
224+
//
225+
226+
//
227+
// create the certificate - version 1
228+
//
229+
230+
ContentSigner sigGen = new JcaContentSignerBuilder("ML-DSA")
231+
.setProvider(BC).build(privKey);
232+
JcaX509v3CertificateBuilder certGen = new JcaX509v3CertificateBuilder(
233+
new X500Name("CN=Test"),
234+
BigInteger.valueOf(1),
235+
new Date(System.currentTimeMillis() - 50000),
236+
new Date(System.currentTimeMillis() + 50000),
237+
new X500Name("CN=Test"),
238+
pubKey);
239+
240+
certGen.addExtension(Extension.extendedKeyUsage, true, new ExtendedKeyUsage(KeyPurposeId.id_kp_timeStamping));
241+
242+
X509Certificate cert = new JcaX509CertificateConverter()
243+
.setProvider("BC").getCertificate(certGen.build(sigGen));
244+
245+
ContentSigner signer = new JcaContentSignerBuilder("ML-DSA").setProvider(BC).build(privKey);
246+
247+
TimeStampTokenGenerator tsTokenGen = new TimeStampTokenGenerator(
248+
new JcaSignerInfoGeneratorBuilder(new JcaDigestCalculatorProviderBuilder().build())
249+
.setContentDigest(new AlgorithmIdentifier(NISTObjectIdentifiers.id_sha512))
250+
.build(signer, cert), new SHA1DigestCalculator(), new ASN1ObjectIdentifier("1.2"));
251+
252+
// tsTokenGen.addCertificates(certs);
253+
254+
TimeStampRequestGenerator reqGen = new TimeStampRequestGenerator();
255+
TimeStampRequest request = reqGen.generate(TSPAlgorithms.SHA3_256, new byte[32], BigInteger.valueOf(100));
256+
257+
TimeStampResponseGenerator tsRespGen = new TimeStampResponseGenerator(tsTokenGen, TSPAlgorithms.ALLOWED);
258+
259+
TimeStampResponse tsResp = tsRespGen.generate(request, new BigInteger("23"), new Date());
260+
261+
tsResp = new TimeStampResponse(tsResp.getEncoded());
262+
263+
TimeStampToken tsToken = tsResp.getTimeStampToken();
264+
265+
tsToken.validate(new JcaSignerInfoVerifierBuilder(new JcaDigestCalculatorProviderBuilder().build())
266+
.setProvider(BC).build(cert));
267+
268+
AttributeTable table = tsToken.getSignedAttributes();
269+
270+
assertNotNull("no signingCertificate attribute found", table.get(PKCSObjectIdentifiers.id_aa_signingCertificate));
271+
}
197272
}

0 commit comments

Comments
 (0)