·
142 commits
to main
since this release
We are pleased to announce the v1.0.0-beta release of mldsa-native. This release is not yet considered stable - there are numerous improvements we would like to make before reaching that milestone, including the completion of HOL Light correctness proofs for at least one full backend. For details on the current state of the project, refer to the README and the set of changes below. Starting with this release, we intend to make more regular releases, targeting a new release every 2-3 months. As a result, individual releases may not correspond to the completion of a well-defined set of features.
What's Changed
- sys.h: Detect little endian when compiling with MSVC by @mkannwischer in #704
- Align common.h with mlkem-native by @mkannwischer in #702
- ACVP: Update to v1.1.0.41 by @mkannwischer in #705
- Examples: Add
monolithic_build_nativeby @mkannwischer in #709 - Examples: Add monolithic_build_multilevel_native by @mkannwischer in #711
- Hoist domain separation logic into helper function by @hanno-becker in #710
- HOL-Light: ML-DSA NTT Platform independent code by @jakemas in #695
- Replace FIPS202_NAMESPACE with MLD_NAMESPACE by @willieyz in #717
- CI: Enable examples in compiler tests by @mkannwischer in #727
- Use consistent syntax for macro definitions and invocations by @hanno-becker in #726
- Add missing zeroization to crypto_sign_verify_internal by @mkannwischer in #731
- Add Runtime dispatch based on custom CPU capabilities function by @willieyz in #607
- SLOTHY: Superoptimize AArch64 NTT by @mkannwischer in #715
- Port: porting check-namespace from mlkem-native by @willieyz in #718
- CI: Port ec2_compatibilitytests by @willieyz in #665
- CI: Align build_kat functional tests with mlkem-native by @mkannwischer in #728
- CBMC: Allow specification of per-proof timeouts by @hanno-becker in #734
- CBMC: Replace object_whole with memory_slice in non-top-level contracts by @mkannwischer in #730
- CI: Switch from pqcp-arm64 to Github Arm runners by @mkannwischer in #749
- Add
crypto_sign_pk_from_skto top-level API by @jakemas in #714 - Strengthen preconditions on polyveck_add() and polyvecl_add() by @rod-chapman in #724
- Port: Copyright linting extension by @willieyz in #744
- Switch mld_polymat to struct wrapper by @hanno-becker in #741
- SLOTHY: Superoptimize AArch64 INTT by @mkannwischer in #748
- Example: Add custom_backend by @willieyz in #699
- Examples: multilevel build by @willieyz in #746
- Examples: multilevel_build_native by @willieyz in #747
- config.h: Align mldsa-native and mlkem-native config.h by @willieyz in #745
- Port: Hoist default C backend into separate functions by @willieyz in #735
- ASM: Add marker for non-executable stack by @hanno-becker in #769
- Port: Use a single configuration file for internal and external headers by @mkannwischer in #782
- Avoid overread in polyz_unpack (AArch64 + x86_64) by @mkannwischer in #784
- CBMC: Add proofs for native backend functions by @willieyz in #768
- Inline ntt.c by @willieyz in #787
- Backend unit tests by @willieyz in #777
- Port: Speed up make by @willieyz in #788
- Namespace all macros by @willieyz in #786
decompose: Remove separate input argument by @mkannwischer in #798- Port: Minor autogen and CI improvements by @willieyz in #794
- CI: Fix markdown-link-check and fix various broken links by @mkannwischer in #808
- tests: Allow specification of parameter set via
-klswitch by @hanno-becker in #809 - HOL-Light: Speed up NTT proof by @mkannwischer in #811
- Make allocation of large structures/buffers configurable by @hanno-becker in #801
- x86_64 Backend: Remove
<immintrin.h>dependency fromarith_native_x86_64.hby @willieyz in #805 - BUILDING.md: add build instructions by @L-series in #780
- refactor: align the tests scripts with mlkem-native by @willieyz in #797
- x86_64: Autogenerate the entire constant array qdata for NTT/INTT by @mkannwischer in #812
- autogen: Port check_asm_* by @willieyz in #813
- Add test for failing dynamic allocation by @hanno-becker in #810
- Remove broken symlink auto.mk and check for broken symlinks in CI by @mkannwischer in #771
- sign stack usage: Re-use y/h buffer by @mkannwischer in #818
- CBMC: Prove x86_64 NTT adheres to native API contract in api.h by @willieyz in #806
- CI: Do not use npx in lint-markdown-link by @mkannwischer in #823
- Introduce mld_polymat_get_row() helper function by @hanno-becker in #742
- Make value barrier volatile by @hanno-becker in #772
- Namespace STACK_SIZE by @willieyz in #796
- Dependencies update by @willieyz in #832
- CI: Enable gcc15 tests on MacOS by @mkannwischer in #834
- Align mld_ct_memcmp with mlkem-native by @hanno-becker in #837
- verify: Switch to constant-time memcmp by @hanno-becker in #838
- CI: Benchmark stack consumption with MLD_CONFIG_REDUCE_RAM by @mkannwischer in #836
- Replace (near-)copies of notrandombytes.[ch] by symlinks by @hanno-becker in #839
pk_from_sk: Add validation of s1 and s2 by @mkannwischer in #841- CBMC: Prove mld_polymat_permute_bitrev_to_custom on top of native API by @willieyz in #820
- CBMC: Increase OBJECT_BITS for polyvecl_pointwise_acc_montgomery_c by @mkannwischer in #848
- API: add failure mode support for randombytes() by @L-series in #689
- Port: Move configuration files and configs.yml into
tests/configs/by @willieyz in #843 - Port: move basic test source into test/src/ by @willieyz in #844
- Port: move acvp test source and data into test/acvp/ by @willieyz in #845
- Port: move benchmarking sources to test/bench/ by @willieyz in #846
- AArch64: Align return type of rejection sampling functions by @mkannwischer in #860
- Consolidate MLD_CONFIG_CUSTOM_ZEROIZE with mlkem-native by @willieyz in #852
- sign stack usage: compute z incrementally by @mkannwischer in #825
- CI: Move container tests to mldsa-native AWS account by @mkannwischer in #862
- mldsa_native.h: Introduce
MLD_TOTAL_ALLOCconstants by @mkannwischer in #850 - autogen: fix print issue with narrow terminals by @L-series in #875
- Remove SUPERCOP API from sign.[ch] by @mkannwischer in #873
- Verify memory usage: Re-use t1/w1 buffer by @mkannwischer in #866
- HOL-Light: Allow cross-generation of byte code by @f15hr in #872
- Add context parameter by @mkannwischer in #874
- mldsa_native.h: Add PCT-aware MLD_TOTAL_ALLOC constants by @mkannwischer in #869
- Port: use consistent architecture identifier by @willieyz in #865
- Remove extra reduction from keygen and signing by @mkannwischer in #879
- autogen: Use
richfor progress bar by @hanno-becker in #877 - Add hol-server for programmatic HOL Light communication by @mkannwischer in #883
- Port: Allow the public header to work in C++ mode. by @willieyz in #882
- Examples: Remove MLD_CONFIG_NO_SUPERCOP from multi-level header by @mkannwischer in #881
- README: Add OpenTitan and CHERIoT applications by @mkannwischer in #885
- sys.h: Fix attribute usage for non-GCC compilers by @mkannwischer in #884
- Examples: Fix feature detection via auto.mk by @mkannwischer in #890
- testing: do not generate custom build for rng failure test by @L-series in #864
- Port: Add tests for non-standard values of MLD_POLY_UNIFORM_NBLOCKS by @willieyz in #887
- CI/CBMC: Report CBMC runtime by @hanno-becker in #894
- Autogen: Extend macro typo checker for MLK_XXX/ MLKEM_XXX by @willieyz in #816
- OQS: Add missing bmi2 flag and clean up by @mkannwischer in #898
- Fix rng_fail test missing EXTRA_SOURCES on baremetal platforms by @hanno-becker in #900
- CI: Run RNG failure test for custom configs by @hanno-becker in #896
- Namespace KeccakP_1600_times4_SIMD256.c with MLD_ by @willieyz in #803
- Update README to reflect consumers and update liboqs CI by @mkannwischer in #901
- Move MLD_MUST_CHECK_RETURN_VALUE from randombytes to mlk_randombytes by @mkannwischer in #906
- CBMC: Remove namespacing by @f15hr in #895
- linting: add shellcheck for shell script lint by @L-series in #756
- Port: Add PMU cycle counting for Armv8.1-M by @willieyz in #909
- Port: Unit tests: Add native Keccak x1 and x4 tests by @willieyz in #910
- Add HOL Light proof for aarch64 poly_caddq by @mkannwischer in #892
- Better explanation for Barrett division in decompose by @jammychiou1 in #762
- Bump actions/checkout from 5.0.0 to 6.0.2 by @willieyz in #933
- CI: Add AWS-LC integration CI testing against v1.67.0 by @mkannwischer in #929
- CI: Add OpenTitan build test by @mkannwischer in #928
- ACVP: Correct max message length from 65536 bytes to 65536 bits (8192 bytes) by @mkannwischer in #944
- Port-Lint: Add actionlint to lint Github actions by @willieyz in #945
- AArch64: Use alignment-safe Neon loads/stores and test in CI by @mkannwischer in #939
- AArch64: Align Keccak assembly with mlkem-native by @mkannwischer in #948
- Port-CI: Add scheduled daily test against AWS-LC HEAD by @willieyz in #946
- x86_64/AArch64: Add .size directive to all assembly functions by @mkannwischer in #956
- Mark all non-static declarations as internal or external by @hanno-becker in #951
- Use MLD_MUST_CHECK_RETURN_VALUE for all functions with return values by @f15hr in #931
- native: Give single assembly unit a unique name by @flynd in #954
- nix: Update to nixpkgs 25.11 by @mkannwischer in #958
- Guard parameter-set specific backend files by @willieyz in #952
- HOL-Light/x86_64: Refine output bound for iNTT to 3q/4 by @hanno-becker in #962
- Baremetal: Add Cortex-M33 MPS3-AN524 platform support by @jricardini in #950
- Lint: Ignore unavailable cr.yp.to and mceliece.org links by @mkannwischer in #967
- CI: Disable nixos/nix compatibility test broken by containerd v2.2.0 by @mkannwischer in #968
- Autogen: Auto-generate polyz_unpack TBL index tables from autogen by @mkannwischer in #963
- Armv8.1-M: Add MVE Keccak-f1600 x4 implementation by @mkannwischer in #911
- Consolidate imports of stdint.h and add footnote to README by @willieyz in #966
- CI: Use availability-zones-config for EC2 runner workflows by @mkannwischer in #975
- CI: Update dependencies by @willieyz in #983
- CBMC: Correct operator precedence in ensures clause of mld_caddq() by @rod-chapman in #985
- Correct assertion in polyveck_add() by @rod-chapman in #988
- CI: Disable benchmarking CI on self hosted boards by @mkannwischer in #984
- liboqs integration: Add support for external-mu API by @abhi-dev-engg in #976
- Correct the contract of mld_poly_chknorm_native() by @rod-chapman in #987
- AArch64: Support unaligned inputs for top-level APIs by @mkannwischer in #992
- CBMC: Add termination proofs for all functions except rejection sampling and poly_challenge by @mkannwischer in #996
- Add HOL Light proof for aarch64
poly_chknormby @mkannwischer in #942 - AArch64: Fix buffer overread in aarch64
polyz_unpack_{17,19}by @mkannwischer in #999 - Add AArch64 ML-DSA Forward NTT HOL Light proof by @dkostic in #993
New Contributors
- @f15hr made their first contribution in #872
- @flynd made their first contribution in #954
- @jricardini made their first contribution in #950
- @abhi-dev-engg made their first contribution in #976
- @dkostic made their first contribution in #993
Full Changelog: v1.0.0-alpha...v1.0.0-beta