@@ -328,10 +328,75 @@ public void testMLDSARandom()
328328 }
329329 }
330330
331- public void testSigGenCombinedVectorSet ()
331+ public void testKeyGenCombinedVectorSet ()
332332 throws IOException
333333 {
334+ Map <String , MLDSAParameters > parametersMap = new HashMap <String , MLDSAParameters >()
335+ {
336+ {
337+ put ("ML-DSA-44" , MLDSAParameters .ml_dsa_44 );
338+ put ("ML-DSA-65" , MLDSAParameters .ml_dsa_65 );
339+ put ("ML-DSA-87" , MLDSAParameters .ml_dsa_87 );
340+ }
341+ };
342+
343+
344+ InputStream src = TestResourceFinder .findTestResource ("pqc/crypto/mldsa" , "ML-DSA-keyGen.txt" );
345+ BufferedReader bin = new BufferedReader (new InputStreamReader (src ));
346+
347+ String line = null ;
348+ HashMap <String , String > buf = new HashMap <String , String >();
349+ while ((line = bin .readLine ()) != null )
350+ {
351+ line = line .trim ();
352+
353+ if (line .startsWith ("#" ))
354+ {
355+ continue ;
356+ }
357+ if (line .length () == 0 )
358+ {
359+ if (buf .size () > 0 )
360+ {
361+ byte [] seed = Hex .decode ((String )buf .get ("seed" ));
362+ byte [] pk = Hex .decode ((String )buf .get ("pk" ));
363+ byte [] sk = Hex .decode ((String )buf .get ("sk" ));
364+
365+ FixedSecureRandom random = new FixedSecureRandom (seed );
366+ MLDSAParameters parameters = parametersMap .get (buf .get ("parameterSet" ));
367+
368+ MLDSAKeyPairGenerator kpGen = new MLDSAKeyPairGenerator ();
369+ kpGen .init (new MLDSAKeyGenerationParameters (random , parameters ));
370+
371+ //
372+ // Generate keys and test.
373+ //
374+ AsymmetricCipherKeyPair kp = kpGen .generateKeyPair ();
334375
376+ MLDSAPublicKeyParameters pubParams = (MLDSAPublicKeyParameters )PublicKeyFactory .createKey (
377+ SubjectPublicKeyInfoFactory .createSubjectPublicKeyInfo (kp .getPublic ()));
378+ MLDSAPrivateKeyParameters privParams = (MLDSAPrivateKeyParameters )PrivateKeyFactory .createKey (
379+ PrivateKeyInfoFactory .createPrivateKeyInfo (kp .getPrivate ()));
380+
381+ assertTrue (Arrays .areEqual (pk , pubParams .getEncoded ()));
382+ assertTrue (Arrays .areEqual (sk , privParams .getEncoded ()));
383+ }
384+ buf .clear ();
385+
386+ continue ;
387+ }
388+
389+ int a = line .indexOf ("=" );
390+ if (a > -1 )
391+ {
392+ buf .put (line .substring (0 , a ).trim (), line .substring (a + 1 ).trim ());
393+ }
394+ }
395+ }
396+
397+ public void testSigGenCombinedVectorSet ()
398+ throws IOException
399+ {
335400 Map <String , MLDSAParameters > parametersMap = new HashMap <String , MLDSAParameters >()
336401 {
337402 {
0 commit comments