Skip to content

Commit a98d0d5

Browse files
committed
Allows creation of HashMLDsaSigner that can sign hashes.
1 parent 1c6d12a commit a98d0d5

File tree

1 file changed

+28
-2
lines changed

1 file changed

+28
-2
lines changed

crypto/src/crypto/signers/HashMLDsaSigner.cs

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,41 @@ public sealed class HashMLDsaSigner
2424
private MLDsaEngine m_engine;
2525

2626
public HashMLDsaSigner(MLDsaParameters parameters, bool deterministic)
27+
: this(parameters, deterministic,
28+
DigestUtilities.GetDigest(parameters.PreHashOid),
29+
parameters.PreHashOid)
30+
{
31+
if (parameters == null)
32+
throw new ArgumentNullException(nameof(parameters));
33+
if (parameters.PreHashOid == null)
34+
throw new ArgumentException("cannot be used for ML-DSA", nameof(parameters));
35+
}
36+
37+
public static HashMLDsaSigner CreateRawSigner(MLDsaParameters parameters, bool deterministic)
2738
{
2839
if (parameters == null)
2940
throw new ArgumentNullException(nameof(parameters));
3041
if (parameters.PreHashOid == null)
3142
throw new ArgumentException("cannot be used for ML-DSA", nameof(parameters));
3243

44+
return new HashMLDsaSigner(parameters, deterministic, new NullDigest(), parameters.PreHashOid);
45+
}
46+
47+
public static HashMLDsaSigner CreateRawSigner(MLDsaParameters parametersWithoutPrehash, bool deterministic, DerObjectIdentifier preHashOid)
48+
{
49+
if (parametersWithoutPrehash == null)
50+
throw new ArgumentNullException(nameof(parametersWithoutPrehash));
51+
if (preHashOid == null)
52+
throw new ArgumentNullException(nameof(preHashOid));
53+
54+
return new HashMLDsaSigner(parametersWithoutPrehash, deterministic, new NullDigest(), preHashOid);
55+
}
56+
57+
private HashMLDsaSigner(MLDsaParameters parameters, bool deterministic, IDigest preHashDigest, DerObjectIdentifier preHashOid)
58+
{
3359
m_parameters = parameters;
34-
m_preHashOidEncoding = parameters.PreHashOid.GetEncoded(Asn1Encodable.Der);
35-
m_preHashDigest = DigestUtilities.GetDigest(parameters.PreHashOid);
60+
m_preHashOidEncoding = preHashOid.GetEncoded(Asn1Encodable.Der);
61+
m_preHashDigest = preHashDigest;
3662
m_deterministic = deterministic;
3763
}
3864

0 commit comments

Comments
 (0)