Crypto: Initial ML-DSA-44 library with libcrux bindings
What
This MR introduces OCaml bindings for the ML-DSA-44 signature scheme from the libcrux_ml_dsa Rust crate and integrates them in the monorepo under the octez-libcrux-ml-dsa library. It also introduces the octez-ml-dsa library, which is a placeholder for a higher-level OCaml API for ML-DSA-44, but which currently only re-exports the octez-libcrux-ml-dsa bindings. octez-ml-dsa is added as a dependency of lib_crypto.
Why
To provide the underlying cryptographic functionality to support ML-DSA-44-based addresses.
How
The OCaml bindings used to build octez-libcrux-ml-dsa are generated by a Rust crate in src/rust_libcrux. The build for this library is relatively minimal compared to the way Rust dependencies have historically been integrated in the monorepo and follows quite closely the guidelines from ocaml-rs.
Manually testing the MR
dune b @src/rust_libcrux/test/runtest
Checklist
- Document the interface of any function added or modified (see the coding guidelines)
- Document any change to the user interface, including configuration parameters (see node configuration)
- Provide automatic testing (see the testing guide).
-
For new features and bug fixes, add an item in the appropriate changelog (
docs/protocols/alpha.rstfor the protocol and the environment,CHANGES.rstat the root of the repository for everything else). -
Select suitable reviewers using the
Reviewersfield below. -
Select as
Assigneethe next person who should take action on that MR