Skip to content

Commit dd8412c

Browse files
committed
Update MLDSATest for new "ML-DSA-keyGen.txt" vectors
1 parent 4257ff9 commit dd8412c

File tree

1 file changed

+66
-1
lines changed

1 file changed

+66
-1
lines changed

core/src/test/java/org/bouncycastle/pqc/crypto/test/MLDSATest.java

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)