Disclaimer: This implementation has not been audited externally and is not intended for production use. It is a personal project created for learning purposes.
MLKEM is an implementation of the Modular Lattice-based Key Encapsulation Mechanism (MLKEM) following the FIPS 203 public draft, written in Rust.
- add support for all key length.
- make all operations work in constant time.
- enforce dimensions with vectors (as of now it's not as robust as it should).
- improve library interface.
To get started with MLKEM, follow these steps:
Clone the MLKEM repository and build the project:
git clone https://github.com/ecivini/MLKEM.git
cd MLKEM
cargo build --release
To execute MLKEM, run:
./target/release/mlkem --help
I wanted to make this project after a live stream of Filippo Valsorda. Soon after, I saw that Coda Hale had already made an MLKEM768 implementation. Although there are some similarities, I have tried to make a general implementation supporting all key lengths. As I have already said, this is not meant to be a library ready for production usage, it's just a personal project I wanted to make to learn a bit more about this scheme.
This project is licensed under the MIT License - see the LICENSE.md file for details.