@@ -195,78 +195,153 @@ public void testSPHINCSPlus()
195195 assertNotNull ("no signingCertificate attribute found" , table .get (PKCSObjectIdentifiers .id_aa_signingCertificate ));
196196 }
197197
198- public void testMLDSA ()
199- throws Exception
198+ public void testSLHDSA ()
199+ throws Exception
200+ {
201+ //
202+ // set up the keys
203+ //
204+ PrivateKey privKey ;
205+ PublicKey pubKey ;
206+
207+ try
200208 {
201- //
202- // set up the keys
203- //
204- PrivateKey privKey ;
205- PublicKey pubKey ;
209+ KeyPairGenerator g = KeyPairGenerator .getInstance ("SLH-DSA" , BC );
206210
207- try
208- {
209- KeyPairGenerator g = KeyPairGenerator .getInstance ("ML-DSA" , BC );
211+ KeyPair p = g .generateKeyPair ();
210212
211- KeyPair p = g .generateKeyPair ();
213+ privKey = p .getPrivate ();
214+ pubKey = p .getPublic ();
215+ }
216+ catch (Exception e )
217+ {
218+ fail ("error setting up keys - " + e );
219+ return ;
220+ }
212221
213- privKey = p .getPrivate ();
214- pubKey = p .getPublic ();
215- }
216- catch (Exception e )
217- {
218- fail ("error setting up keys - " + e );
219- return ;
220- }
222+ //
223+ // extensions
224+ //
221225
222- //
223- // extensions
224- //
226+ //
227+ // create the certificate - version 1
228+ //
225229
226- //
227- // create the certificate - version 1
228- //
230+ ContentSigner sigGen = new JcaContentSignerBuilder ("SLH-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 );
229239
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 );
240+ certGen .addExtension (Extension .extendedKeyUsage , true , new ExtendedKeyUsage (KeyPurposeId .id_kp_timeStamping ));
239241
240- certGen .addExtension (Extension .extendedKeyUsage , true , new ExtendedKeyUsage (KeyPurposeId .id_kp_timeStamping ));
242+ X509Certificate cert = new JcaX509CertificateConverter ()
243+ .setProvider ("BC" ).getCertificate (certGen .build (sigGen ));
241244
242- X509Certificate cert = new JcaX509CertificateConverter ()
243- .setProvider ("BC" ).getCertificate (certGen .build (sigGen ));
245+ ContentSigner signer = new JcaContentSignerBuilder ("SLH-DSA" ).setProvider (BC ).build (privKey );
244246
245- ContentSigner signer = new JcaContentSignerBuilder ("ML-DSA" ).setProvider (BC ).build (privKey );
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" ));
246251
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" ));
252+ // tsTokenGen.addCertificates(certs);
251253
252- // tsTokenGen.addCertificates(certs);
254+ TimeStampRequestGenerator reqGen = new TimeStampRequestGenerator ();
255+ TimeStampRequest request = reqGen .generate (TSPAlgorithms .SHA3_256 , new byte [32 ], BigInteger .valueOf (100 ));
253256
254- TimeStampRequestGenerator reqGen = new TimeStampRequestGenerator ();
255- TimeStampRequest request = reqGen .generate (TSPAlgorithms .SHA3_256 , new byte [32 ], BigInteger .valueOf (100 ));
257+ TimeStampResponseGenerator tsRespGen = new TimeStampResponseGenerator (tsTokenGen , TSPAlgorithms .ALLOWED );
258+
259+ TimeStampResponse tsResp = tsRespGen .generate (request , new BigInteger ("23" ), new Date ());
256260
257- TimeStampResponseGenerator tsRespGen = new TimeStampResponseGenerator ( tsTokenGen , TSPAlgorithms . ALLOWED );
261+ tsResp = new TimeStampResponse ( tsResp . getEncoded () );
258262
259- TimeStampResponse tsResp = tsRespGen . generate ( request , new BigInteger ( "23" ), new Date () );
263+ TimeStampToken tsToken = tsResp . getTimeStampToken ( );
260264
261- tsResp = new TimeStampResponse (tsResp .getEncoded ());
265+ tsToken .validate (new JcaSignerInfoVerifierBuilder (new JcaDigestCalculatorProviderBuilder ().build ())
266+ .setProvider (BC ).build (cert ));
262267
263- TimeStampToken tsToken = tsResp . getTimeStampToken ();
268+ AttributeTable table = tsToken . getSignedAttributes ();
264269
265- tsToken . validate ( new JcaSignerInfoVerifierBuilder ( new JcaDigestCalculatorProviderBuilder (). build ())
266- . setProvider ( BC ). build ( cert ));
270+ assertNotNull ( "no signingCertificate attribute found" , table . get ( PKCSObjectIdentifiers . id_aa_signingCertificate ));
271+ }
267272
268- AttributeTable table = tsToken .getSignedAttributes ();
273+ public void testMLDSA ()
274+ throws Exception
275+ {
276+ //
277+ // set up the keys
278+ //
279+ PrivateKey privKey ;
280+ PublicKey pubKey ;
269281
270- assertNotNull ("no signingCertificate attribute found" , table .get (PKCSObjectIdentifiers .id_aa_signingCertificate ));
282+ try
283+ {
284+ KeyPairGenerator g = KeyPairGenerator .getInstance ("ML-DSA" , BC );
285+
286+ KeyPair p = g .generateKeyPair ();
287+
288+ privKey = p .getPrivate ();
289+ pubKey = p .getPublic ();
271290 }
291+ catch (Exception e )
292+ {
293+ fail ("error setting up keys - " + e );
294+ return ;
295+ }
296+
297+ //
298+ // extensions
299+ //
300+
301+ //
302+ // create the certificate - version 1
303+ //
304+
305+ ContentSigner sigGen = new JcaContentSignerBuilder ("SLH-DSA" )
306+ .setProvider (BC ).build (privKey );
307+ JcaX509v3CertificateBuilder certGen = new JcaX509v3CertificateBuilder (
308+ new X500Name ("CN=Test" ),
309+ BigInteger .valueOf (1 ),
310+ new Date (System .currentTimeMillis () - 50000 ),
311+ new Date (System .currentTimeMillis () + 50000 ),
312+ new X500Name ("CN=Test" ),
313+ pubKey );
314+
315+ certGen .addExtension (Extension .extendedKeyUsage , true , new ExtendedKeyUsage (KeyPurposeId .id_kp_timeStamping ));
316+
317+ X509Certificate cert = new JcaX509CertificateConverter ()
318+ .setProvider ("BC" ).getCertificate (certGen .build (sigGen ));
319+
320+ ContentSigner signer = new JcaContentSignerBuilder ("ML-DSA" ).setProvider (BC ).build (privKey );
321+
322+ TimeStampTokenGenerator tsTokenGen = new TimeStampTokenGenerator (
323+ new JcaSignerInfoGeneratorBuilder (new JcaDigestCalculatorProviderBuilder ().build ())
324+ .setContentDigest (new AlgorithmIdentifier (NISTObjectIdentifiers .id_sha512 ))
325+ .build (signer , cert ), new SHA1DigestCalculator (), new ASN1ObjectIdentifier ("1.2" ));
326+
327+ // tsTokenGen.addCertificates(certs);
328+
329+ TimeStampRequestGenerator reqGen = new TimeStampRequestGenerator ();
330+ TimeStampRequest request = reqGen .generate (TSPAlgorithms .SHA3_256 , new byte [32 ], BigInteger .valueOf (100 ));
331+
332+ TimeStampResponseGenerator tsRespGen = new TimeStampResponseGenerator (tsTokenGen , TSPAlgorithms .ALLOWED );
333+
334+ TimeStampResponse tsResp = tsRespGen .generate (request , new BigInteger ("23" ), new Date ());
335+
336+ tsResp = new TimeStampResponse (tsResp .getEncoded ());
337+
338+ TimeStampToken tsToken = tsResp .getTimeStampToken ();
339+
340+ tsToken .validate (new JcaSignerInfoVerifierBuilder (new JcaDigestCalculatorProviderBuilder ().build ())
341+ .setProvider (BC ).build (cert ));
342+
343+ AttributeTable table = tsToken .getSignedAttributes ();
344+
345+ assertNotNull ("no signingCertificate attribute found" , table .get (PKCSObjectIdentifiers .id_aa_signingCertificate ));
346+ }
272347}
0 commit comments