Rename Dilithium to canonical ML-DSA (FIPS 204) names#10436
Conversation
f1fb4a9 to
b6eefe5
Compare
|
Created https://github.com/wolfSSL/fips/pull/392 for the PRB-master-job FIPS failures. The wolfBoot failures are to be ignored for the moment, as these have to be fixed in wolfBoot once this PR is merged. This is synchronized with @danielinux. |
douzzer
left a comment
There was a problem hiding this comment.
Don't merge yet -- we're fixing MlDsaKey type names to be wc_MlDsaKey throughout.
361dc5d to
6a6627c
Compare
|
Jenkins: retest this please |
| #endif | ||
|
|
||
| WOLFSSL_DILITHIUM_LEGACY_INLINE | ||
| int wc_dilithium_init(wc_MlDsaKey* key) { |
There was a problem hiding this comment.
Can these not be macros?
That is, I would prefer macros!
There was a problem hiding this comment.
Changed to macros in latest commit.
|
note: wolfboot actions are supposed to fail until the renaming is complete there as well |
NIST standardized the pre-standardization Dilithium signature scheme as ML-DSA in FIPS 204. Migrate the provider's user-visible surface to canonical spellings, with a temporary shim that preserves source-level backward compatibility for existing consumers. Renames ------- * File: wolfcrypt/src/dilithium.c -> wolfcrypt/src/wc_mldsa.c * New canonical header: wolfssl/wolfcrypt/wc_mldsa.h * Types: dilithium_key -> MlDsaKey, wc_dilithium_params -> MlDsaParams * Functions: wc_dilithium_* / wc_Dilithium_* -> wc_MlDsaKey_* * Build gates: HAVE_DILITHIUM -> WOLFSSL_HAVE_MLDSA, WOLFSSL_DILITHIUM_* / WC_DILITHIUM_* -> WOLFSSL_MLDSA_* / WC_MLDSA_* * Configure flag: --enable-mldsa (legacy --enable-dilithium still works) * CMake option: WOLFSSL_MLDSA (legacy WOLFSSL_DILITHIUM emits a DEPRECATION message) Backward compatibility ---------------------- wolfssl/wolfcrypt/dilithium.h is now a temporary compatibility shim: * Forward-translates legacy build gates to canonical (the two sub-gates read by certs_test.h are translated in settings.h so the auto-generated header is reachable without including dilithium.h; the remainder lives in dilithium.h itself). * Reverse-translates canonical gates back to legacy so unmigrated consumer code keying off HAVE_DILITHIUM / WOLFSSL_DILITHIUM_* keeps compiling. * Provides macro / static-inline aliases for the legacy type and function names so source-level callers compile unchanged. Sets WC_DILITHIUMKEY_TYPE_DEFINED to suppress strict-C99 typedef redefinition in asn_public.h. Two opt-outs are honored: WOLFSSL_NO_DILITHIUM_LEGACY_GATES disables build-gate translation; WOLFSSL_NO_DILITHIUM_LEGACY_NAMES disables the symbol aliases. Both are temporary and the shim will be removed in a future release. doc/dilithium-to-mldsa-migration.md describes the migration path for downstream consumers. ABI note -------- The library now exports wc_MlDsaKey_* instead of wc_dilithium_*. Pre-built binaries that linked against the legacy symbols need to recompile against the shim header (which resolves to the new symbols at compile time) or migrate to the canonical names directly. Source code keeps building unchanged. Other changes ------------- * wolfssl/wolfcrypt/memory.h: drop ML-DSA sub-gate branching for static memory pool sizing; WOLFSSL_HAVE_MLDSA builds now pick the larger LARGEST_MEM_BUCKET / WOLFMEM_BUCKETS / WOLFMEM_DIST unconditionally. Override these macros for small-mem builds. * gencertbuf.pl + wolfssl/certs_test.h: outer guards migrated to the canonical WOLFSSL_HAVE_MLDSA spelling. * tests/api/test_mldsa.c: adds compile-time API surface validators (canonical wc_MlDsaKey_* surface plus legacy alias surface) so signature drift produces a build error during make check. * IDE files (Xcode, INTIME-RTOS, WIN10, VS2022, CSharp wrapper), Zephyr CMakeLists.txt, and autotools include.am updated for the rename. * DYNAMIC_TYPE_DILITHIUM and ML_DSA_PCT_E retained as internal symbols; scheduled to be renamed alongside the eventual shim removal.
…y (!WOLFSSL_NO_DILITHIUM_LEGACY_NAMES) wrappers; tests/api/test_mldsa.c: suppress -Wunreachable-code around wc_mldsa_canonical_api_check() and wc_mldsa_legacy_alias_check(); wolfcrypt/benchmark/benchmark.c, wolfcrypt/src/wc_lms.c, wolfssl/wolfcrypt/wc_lms.h, wrapper/rust/wolfssl-wolfcrypt/src/lms.rs: revert removal of WC_LMS_PARM_NONE in 69027c2 (used by wolfACVP).
|
retest this please |
| LMS_PARAMS(2, 5, 8, 3, LMS_SHA256_M32_H5 , LMOTS_SHA256_N32_W8, | ||
| WC_SHA256_DIGEST_SIZE) }, | ||
| #if LMS_MAX_HEIGHT >= 15 | ||
| { WC_LMS_PARM_NONE , "LMS_NONE" , |
There was a problem hiding this comment.
Hasn‘t this been removed on purpose in #10448? @SparkiDev @douzzer?
There was a problem hiding this comment.
Yes but explained in the commit msg:
wolfcrypt/benchmark/benchmark.c, wolfcrypt/src/wc_lms.c, wolfssl/wolfcrypt/wc_lms.h, wrapper/rust/wolfssl-wolfcrypt/src/lms.rs: revert removal of WC_LMS_PARM_NONE in 69027c2 (used by wolfACVP).
We're planning a pair of followup PRs that remove it on both sides cleanly.
NIST standardized the pre-standardization Dilithium signature scheme as ML-DSA in FIPS 204. Migrate the provider's user-visible surface to canonical spellings, with a temporary shim that preserves source-level backward compatibility for existing consumers.
Renames
Backward compatibility
wolfssl/wolfcrypt/dilithium.h is now a temporary compatibility shim:
Two opt-outs are honored: WOLFSSL_NO_DILITHIUM_LEGACY_GATES disables build-gate translation; WOLFSSL_NO_DILITHIUM_LEGACY_NAMES disables the symbol aliases. Both are temporary and the shim will be removed in a future release. doc/dilithium-to-mldsa-migration.md describes the migration path for downstream consumers.
ABI note
The library now exports wc_MlDsaKey_* instead of wc_dilithium_*. Pre-built binaries that linked against the legacy symbols need to recompile against the shim header (which resolves to the new symbols at compile time) or migrate to the canonical names directly. Source code keeps building unchanged.
Other changes
Follow-ups after this PR
After this PR, two independent follow-up PRs will be opened: