Add ML-DSA-44 and ML-DSA-87 to PQDSA API #2009
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Issues:
Resolves #CryptoAlg-2725
Description of changes:
This PR adds ML-DSA-44 and ML-DSA-87 to AWS-LC. As we already have support for ML-DSA-65 through the PQDSA signature API (see #1963) and already support internal functions and KATs that use these internal APIs (see #1999), this PR consists of:
pqdsa
APIs for ML-DSA-44 and ML-DSA-87:ml_dsa_{44/87}_keypair
,ml_dsa_{44/87}_keypair_internal
,ml_dsa_{44/87}_sign
,ml_dsa_{44/87}_sign_internal
,ml_dsa_{44/87}_verify
, andml_dsa_{44/87}_verify_internal
sig_ml_dsa_44_method
andsig_ml_dsa_87_method
sig_ml_dsa_44
andsig_ml_dsa_87
Call-outs:
I haven't hooked up ML-DSA-44/87 to X.509 in this PR, to keep the PR focused to a single feature addition.
I have hooked up ML-DSA-44/87 to the speed tool; see example output:
Testing:
#1999 provided a test frame work for all
pqdsa
signature types, as such,ML-DSA-44/87
are added to this test harness by:This requires the inclusion of test harness raw public keys
mldsa{44/87}kPublicKey
and encoded public keysmldsa{44/87}kPublicKeySPKI
.The lengths of the encodings are well defined by https://datatracker.ietf.org/doc/draft-ietf-lamps-dilithium-certificates/
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license and the ISC license.