Fix ML-DSA ACVP registration and restore sigVer coverage - #3451
Fix ML-DSA ACVP registration and restore sigVer coverage#3451JunMin765677 wants to merge 2 commits into
Conversation
Declare the supported pure signature interface and context length range for ML-DSA sigGen and sigVer registrations. These fields are required by the current ACVTS schema and match the existing modulewrapper implementation.
Replace the duplicated sigGen vector set with a fresh NIST Demo session covering keyGen, sigGen, and sigVer. Add an opt-in vector-set inventory check so missing or duplicated modes are detected before executing the fixture.
|
🔒 Security Review — View Report Please review before merging. |
|
Verified locally:
Regarding the new vectors: Could you attach a redacted result artifact from NIST Demo session 763725 showing the passed session and per-vector-set verdicts for vsIds 4021300–4021302? The Demo API is bearer-token protected, so the session ID alone is not independently verifiable. Please do not share any access tokens. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #3451 +/- ##
==========================================
+ Coverage 78.01% 78.21% +0.20%
==========================================
Files 699 699
Lines 124589 124591 +2
Branches 17286 17289 +3
==========================================
+ Hits 97201 97453 +252
+ Misses 26522 26269 -253
- Partials 866 869 +3 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
@JunMin765677 Thank you for your contribution! To contribute to aws-lc you must include "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." at the end of your PR description, if you do, indeed agree to it! You can see other PRs for an example of this. |
|
Thanks for verifying this locally. Below is the requested redacted result artifact for NIST Demo session {
"artifact": "Redacted NIST ACVP Demo verdict summary",
"testSessionId": 763725,
"sessionPassed": true,
"vectorSets": [
{
"vsId": 4021300,
"mode": "keyGen",
"disposition": "passed",
"totalTests": 75,
"passedTests": 75
},
{
"vsId": 4021301,
"mode": "sigGen",
"disposition": "passed",
"totalTests": 135,
"passedTests": 135
},
{
"vsId": 4021302,
"mode": "sigVer",
"disposition": "passed",
"totalTests": 135,
"passedTests": 135
}
],
"redaction": "Access tokens, request metadata, and individual test results omitted; only verdict summary fields retained."
}SHA-256 of the redacted JSON artifact: |
Summary
preHashandcontextLengthproperties to the ML-DSAsigGen and sigVer registrations
keyGen, sigGen, and sigVer
from recurring
Background
The existing ML-DSA request fixture contains the following vector sets:
The second and third vector sets are identical, so the end-to-end ACVP test no
longer exercises the Go sigVer translator, subprocess routing, or the
modulewrapper sigVer handler.
While regenerating the fixture, the current NIST Demo server rejected the
existing AWS-LC registration because the sigGen and sigVer capabilities did not
declare
preHashandcontextLength.The modulewrapper already supports the pure signature interface and contexts
from 0 through 255 bytes, so the registration now declares:
preHash: ["pure"]contextLength: 0..2040bits, incrementing by 8Vector provenance
The updated fixtures were generated from NIST Demo test session
763725usingAWS-LC's registration payload and were answered by the AWS-LC modulewrapper.
All three vector sets and the overall test session passed.
Regression guard
tests.jsoncan now optionally specify anExpectedVectorSetsinventory.The check compares the algorithm, mode, and revision as a multiset before
executing the fixture.
Only ML-DSA opts into the check in this change because it is the fixture with
the confirmed regression.
Review notes
I made two scope choices intentionally:
ExpectedVectorSetsis generic, but only ML-DSA opts into it in this changebecause this is the fixture with a confirmed inventory regression. If a
broader fixture policy would be preferable, I would be happy to follow up
separately rather than expand this PR.
coverage density while restoring sigVer. If trimmed ACVP fixtures are
preferred for repository size or maintenance reasons, I can regenerate both
files with the existing
trim_vectors.goworkflow.Testing
build_acvp_tooltests.jsongo test ./util/fipstools/acvp/acvptool/...git diff --checkBy submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license and the ISC license.