Skip to content

Commit e8522ef

Browse files
committed
PQC test updates
1 parent e3f1ffc commit e8522ef

File tree

4 files changed

+69
-52
lines changed

4 files changed

+69
-52
lines changed

crypto/src/crypto/parameters/SlhDsaParameters.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public sealed class SlhDsaParameters
1111
{
1212
public static readonly SlhDsaParameters slh_dsa_sha2_128s = new SlhDsaParameters("SLH-DSA-SHA2-128S",
1313
SlhDsaParameterSet.slh_dsa_sha2_128s, NistObjectIdentifiers.id_slh_dsa_sha2_128s, preHashOid: null);
14-
public static readonly SlhDsaParameters slh_dsa_shake_128s = new SlhDsaParameters("SLH-DSA-SHAKE-128s",
14+
public static readonly SlhDsaParameters slh_dsa_shake_128s = new SlhDsaParameters("SLH-DSA-SHAKE-128S",
1515
SlhDsaParameterSet.slh_dsa_shake_128s, NistObjectIdentifiers.id_slh_dsa_shake_128s, preHashOid: null);
1616

1717
public static readonly SlhDsaParameters slh_dsa_sha2_128f = new SlhDsaParameters("SLH-DSA-SHA2-128F",

crypto/test/src/crypto/test/MLDsaTest.cs

+22-18
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System;
12
using System.Collections.Generic;
23
using System.IO;
34

@@ -48,11 +49,14 @@ public class MLDsaTest
4849
private static readonly IEnumerable<string> ContextFiles = ContextFileParameters.Keys;
4950

5051
private static readonly Dictionary<string, MLDsaParameters> Parameters =
51-
new Dictionary<string, MLDsaParameters>()
52+
new Dictionary<string, MLDsaParameters>(StringComparer.OrdinalIgnoreCase)
5253
{
5354
{ "ML-DSA-44", MLDsaParameters.ml_dsa_44 },
5455
{ "ML-DSA-65", MLDsaParameters.ml_dsa_65 },
5556
{ "ML-DSA-87", MLDsaParameters.ml_dsa_87 },
57+
{ "ML-DSA-44-WITH-SHA512", MLDsaParameters.ml_dsa_44_with_sha512 },
58+
{ "ML-DSA-65-WITH-SHA512", MLDsaParameters.ml_dsa_65_with_sha512 },
59+
{ "ML-DSA-87-WITH-SHA512", MLDsaParameters.ml_dsa_87_with_sha512 },
5660
};
5761

5862
private static readonly IEnumerable<MLDsaParameters> ParametersValues = Parameters.Values;
@@ -95,7 +99,7 @@ public void Consistency(MLDsaParameters parameters)
9599
{
96100
var kp = kpg.GenerateKeyPair();
97101

98-
var signer = new MLDsaSigner(parameters, deterministic: false);
102+
var signer = CreateSigner(parameters, deterministic: false);
99103

100104
for (int j = 0; j < 2; ++j)
101105
{
@@ -121,7 +125,7 @@ public void Consistency(MLDsaParameters parameters)
121125
}
122126

123127
[TestCaseSource(nameof(ContextFiles))]
124-
[Parallelizable]
128+
[Parallelizable(ParallelScope.All)]
125129
public void Context(string fileName)
126130
{
127131
RunTestVectors("pqc/crypto/mldsa", fileName,
@@ -176,6 +180,14 @@ public void KeyGenAcvp(string fileName)
176180
// (name, data) => ImplSigVer(name, data, AcvpFileParameters[name]));
177181
//}
178182

183+
private static ISigner CreateSigner(MLDsaParameters parameters, bool deterministic)
184+
{
185+
if (parameters.IsPreHash)
186+
return new HashMLDsaSigner(parameters, deterministic);
187+
188+
return new MLDsaSigner(parameters, deterministic);
189+
}
190+
179191
private static void ImplContext(string name, Dictionary<string, string> data, MLDsaParameters parameters)
180192
{
181193
string count = data["count"];
@@ -213,15 +225,7 @@ private static void ImplContext(string name, Dictionary<string, string> data, ML
213225
Assert.True(Arrays.AreEqual(sk, privateKeyRT.GetEncoded()), $"{name} {count}: secret key (round-trip)");
214226

215227
// Note that this is a deterministic signature test, since we are not given "rnd"
216-
ISigner sig;
217-
if (parameters.IsPreHash)
218-
{
219-
sig = new HashMLDsaSigner(parameters, deterministic: true);
220-
}
221-
else
222-
{
223-
sig = new MLDsaSigner(parameters, deterministic: true);
224-
}
228+
var signer = CreateSigner(parameters, deterministic: true);
225229

226230
// The current test data is a bit weird and uses internal signing when no explicit context provided.
227231
if (context == null)
@@ -235,14 +239,14 @@ private static void ImplContext(string name, Dictionary<string, string> data, ML
235239
}
236240
else
237241
{
238-
sig.Init(forSigning: true, ParameterUtilities.WithContext(privateKey, context));
239-
sig.BlockUpdate(msg, 0, msg.Length);
240-
byte[] generated = sig.GenerateSignature();
242+
signer.Init(forSigning: true, ParameterUtilities.WithContext(privateKey, context));
243+
signer.BlockUpdate(msg, 0, msg.Length);
244+
byte[] generated = signer.GenerateSignature();
241245
Assert.True(Arrays.AreEqual(sm, generated), $"{name} {count}: GenerateSignature");
242246

243-
sig.Init(forSigning: false, ParameterUtilities.WithContext(publicKey, context));
244-
sig.BlockUpdate(msg, 0, msg.Length);
245-
bool shouldVerify = sig.VerifySignature(sm);
247+
signer.Init(forSigning: false, ParameterUtilities.WithContext(publicKey, context));
248+
signer.BlockUpdate(msg, 0, msg.Length);
249+
bool shouldVerify = signer.VerifySignature(sm);
246250
Assert.True(shouldVerify, $"{name} {count}: VerifySignature");
247251
}
248252
}

crypto/test/src/crypto/test/MLKemTest.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public class MLKemTest
6868
};
6969

7070
private static readonly Dictionary<string, MLKemParameters> Parameters =
71-
new Dictionary<string, MLKemParameters>()
71+
new Dictionary<string, MLKemParameters>(StringComparer.OrdinalIgnoreCase)
7272
{
7373
{ "ML-KEM-512", MLKemParameters.ml_kem_512 },
7474
{ "ML-KEM-768", MLKemParameters.ml_kem_768 },

crypto/test/src/crypto/test/SlhDsaTest.cs

+45-32
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using System.Collections.Generic;
1+
using System;
2+
using System.Collections.Generic;
23
using System.IO;
34

45
using NUnit.Framework;
@@ -79,20 +80,32 @@ public class SlhDsaTest
7980
private static readonly IEnumerable<string> ContextSlowFiles = ContextSlowFileParameters.Keys;
8081

8182
private static readonly Dictionary<string, SlhDsaParameters> Parameters =
82-
new Dictionary<string, SlhDsaParameters>()
83+
new Dictionary<string, SlhDsaParameters>(StringComparer.OrdinalIgnoreCase)
8384
{
84-
{ "SLH-DSA-SHA2-128f", SlhDsaParameters.slh_dsa_sha2_128f },
85-
{ "SLH-DSA-SHA2-128s", SlhDsaParameters.slh_dsa_sha2_128s },
86-
{ "SLH-DSA-SHA2-192f", SlhDsaParameters.slh_dsa_sha2_192f },
87-
{ "SLH-DSA-SHA2-192s", SlhDsaParameters.slh_dsa_sha2_192s },
88-
{ "SLH-DSA-SHA2-256f", SlhDsaParameters.slh_dsa_sha2_256f },
89-
{ "SLH-DSA-SHA2-256s", SlhDsaParameters.slh_dsa_sha2_256s },
90-
{ "SLH-DSA-SHAKE-128f", SlhDsaParameters.slh_dsa_shake_128f },
91-
{ "SLH-DSA-SHAKE-128s", SlhDsaParameters.slh_dsa_shake_128s },
92-
{ "SLH-DSA-SHAKE-192f", SlhDsaParameters.slh_dsa_shake_192f },
93-
{ "SLH-DSA-SHAKE-192s", SlhDsaParameters.slh_dsa_shake_192s },
94-
{ "SLH-DSA-SHAKE-256s", SlhDsaParameters.slh_dsa_shake_256s },
95-
{ "SLH-DSA-SHAKE-256f", SlhDsaParameters.slh_dsa_shake_256f },
85+
{ "SLH-DSA-SHA2-128F", SlhDsaParameters.slh_dsa_sha2_128f },
86+
{ "SLH-DSA-SHA2-128F-WITH-SHA256", SlhDsaParameters.slh_dsa_sha2_128f_with_sha256 },
87+
{ "SLH-DSA-SHA2-128S", SlhDsaParameters.slh_dsa_sha2_128s },
88+
{ "SLH-DSA-SHA2-128S-WITH-SHA256", SlhDsaParameters.slh_dsa_sha2_128s_with_sha256 },
89+
{ "SLH-DSA-SHA2-192F", SlhDsaParameters.slh_dsa_sha2_192f },
90+
{ "SLH-DSA-SHA2-192F-WITH-SHA512", SlhDsaParameters.slh_dsa_sha2_192f_with_sha512 },
91+
{ "SLH-DSA-SHA2-192S", SlhDsaParameters.slh_dsa_sha2_192s },
92+
{ "SLH-DSA-SHA2-192S-WITH-SHA512", SlhDsaParameters.slh_dsa_sha2_192s_with_sha512 },
93+
{ "SLH-DSA-SHA2-256F", SlhDsaParameters.slh_dsa_sha2_256f },
94+
{ "SLH-DSA-SHA2-256F-WITH-SHA512", SlhDsaParameters.slh_dsa_sha2_256f_with_sha512 },
95+
{ "SLH-DSA-SHA2-256S", SlhDsaParameters.slh_dsa_sha2_256s },
96+
{ "SLH-DSA-SHA2-256S-WITH-SHA512", SlhDsaParameters.slh_dsa_sha2_256s_with_sha512 },
97+
{ "SLH-DSA-SHAKE-128F", SlhDsaParameters.slh_dsa_shake_128f },
98+
{ "SLH-DSA-SHAKE-128F-WITH-SHAKE128", SlhDsaParameters.slh_dsa_shake_128f_with_shake128 },
99+
{ "SLH-DSA-SHAKE-128S", SlhDsaParameters.slh_dsa_shake_128s },
100+
{ "SLH-DSA-SHAKE-128S-WITH-SHAKE128", SlhDsaParameters.slh_dsa_shake_128s_with_shake128 },
101+
{ "SLH-DSA-SHAKE-192F", SlhDsaParameters.slh_dsa_shake_192f },
102+
{ "SLH-DSA-SHAKE-192F-WITH-SHAKE256", SlhDsaParameters.slh_dsa_shake_192f_with_shake256 },
103+
{ "SLH-DSA-SHAKE-192S", SlhDsaParameters.slh_dsa_shake_192s },
104+
{ "SLH-DSA-SHAKE-192S-WITH-SHAKE256", SlhDsaParameters.slh_dsa_shake_192s_with_shake256 },
105+
{ "SLH-DSA-SHAKE-256F", SlhDsaParameters.slh_dsa_shake_256f },
106+
{ "SLH-DSA-SHAKE-256F-WITH-SHAKE256", SlhDsaParameters.slh_dsa_shake_256f_with_shake256 },
107+
{ "SLH-DSA-SHAKE-256S", SlhDsaParameters.slh_dsa_shake_256s },
108+
{ "SLH-DSA-SHAKE-256S-WITH-SHAKE256", SlhDsaParameters.slh_dsa_shake_256s_with_shake256 },
96109
};
97110

98111
private static readonly IEnumerable<SlhDsaParameters> ParametersValues = Parameters.Values;
@@ -136,7 +149,7 @@ public void Consistency(SlhDsaParameters parameters)
136149
{
137150
var kp = kpg.GenerateKeyPair();
138151

139-
var signer = new SlhDsaSigner(parameters, deterministic: false);
152+
var signer = CreateSigner(parameters, deterministic: false);
140153

141154
{
142155
int msgLen = random.Next(msg.Length + 1);
@@ -158,15 +171,15 @@ public void Consistency(SlhDsaParameters parameters)
158171
}
159172

160173
[TestCaseSource(nameof(ContextFastFiles))]
161-
[Parallelizable]
174+
[Parallelizable(ParallelScope.All)]
162175
public void ContextFast(string fileName)
163176
{
164177
RunTestVectors("pqc/crypto/slhdsa", fileName, sampleOnly: true,
165178
(name, data) => ImplContext(name, data, ContextFastFileParameters[name]));
166179
}
167180

168181
[TestCaseSource(nameof(ContextSlowFiles)), Explicit]
169-
[Parallelizable]
182+
[Parallelizable(ParallelScope.All)]
170183
public void ContextSlow(string fileName)
171184
{
172185
RunTestVectors("pqc/crypto/slhdsa", fileName, sampleOnly: true,
@@ -221,6 +234,14 @@ public void KeyGenAcvp(string fileName)
221234
// (name, data) => ImplSigVer(name, data, AcvpFileParameters[name]));
222235
//}
223236

237+
private static ISigner CreateSigner(SlhDsaParameters parameters, bool deterministic)
238+
{
239+
if (parameters.IsPreHash)
240+
return new HashSlhDsaSigner(parameters, deterministic);
241+
242+
return new SlhDsaSigner(parameters, deterministic);
243+
}
244+
224245
private static void ImplContext(string name, Dictionary<string, string> data, SlhDsaParameters parameters)
225246
{
226247
string count = data["count"];
@@ -259,15 +280,7 @@ private static void ImplContext(string name, Dictionary<string, string> data, Sl
259280
Assert.True(Arrays.AreEqual(sk, privateKeyRT.GetEncoded()), $"{name} {count}: secret key (round-trip)");
260281

261282
// Note that this is not a deterministic signature test, since we are given "optrand"
262-
ISigner sig;
263-
if (parameters.IsPreHash)
264-
{
265-
sig = new HashSlhDsaSigner(parameters, deterministic: false);
266-
}
267-
else
268-
{
269-
sig = new SlhDsaSigner(parameters, deterministic: false);
270-
}
283+
var signer = CreateSigner(parameters, deterministic: false);
271284

272285
// The current test data is a bit weird and uses internal signing when no explicit context provided.
273286
if (context == null)
@@ -280,17 +293,17 @@ private static void ImplContext(string name, Dictionary<string, string> data, Sl
280293
}
281294
else
282295
{
283-
sig.Init(forSigning: true,
296+
signer.Init(forSigning: true,
284297
ParameterUtilities.WithContext(
285298
ParameterUtilities.WithRandom(privateKey, FixedSecureRandom.From(optrand)),
286299
context));
287-
sig.BlockUpdate(msg, 0, msg.Length);
288-
byte[] generated = sig.GenerateSignature();
300+
signer.BlockUpdate(msg, 0, msg.Length);
301+
byte[] generated = signer.GenerateSignature();
289302
Assert.True(Arrays.AreEqual(sm, generated), $"{name} {count}: GenerateSignature");
290303

291-
sig.Init(forSigning: false, ParameterUtilities.WithContext(publicKey, context));
292-
sig.BlockUpdate(msg, 0, msg.Length);
293-
bool shouldVerify = sig.VerifySignature(sm);
304+
signer.Init(forSigning: false, ParameterUtilities.WithContext(publicKey, context));
305+
signer.BlockUpdate(msg, 0, msg.Length);
306+
bool shouldVerify = signer.VerifySignature(sm);
294307
Assert.True(shouldVerify, $"{name} {count}: VerifySignature");
295308
}
296309
}

0 commit comments

Comments
 (0)