@@ -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