Utility for generating keys and signing/verifying files with Dilithium and ML‑DSA keys.
- Rust toolchain (
cargo,rustc) - Git (required to fetch git-based dependencies during build)
- Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"
- Build project
cargo build --release
cargo run -- <COMMAND> [OPTIONS]After build, binary is available at:
./target/release/cryptodilithium2(dil2)dilithium3(dil3)dilithium5(dil5)mldsa44mldsa65mldsa87
Main usage:
crypto <COMMAND> [OPTIONS]Global options:
-h, --help- show help-V, --version- show version
Accepted values:
- Algorithms (
--algorithm):dilithium2ordil2dilithium3ordil3dilithium5ordil5mldsa44mldsa65mldsa87
- Formats (
--inform,--outform):PEMDER
Important:
--informand--outformcurrently accept uppercase values only:PEMorDER.
Generate a key pair (private key is written to output).
Usage:
crypto generate --algorithm <ALGORITHM> [--outform PEM|DER] [--out FILE] [--entropy ENTROPY]Arguments:
-a, --algorithm <ALGORITHM>(required) - algorithm used for key generation--outform <PEM|DER>(optional, default:PEM) - output key format--out <FILE>(optional) - output path--entropy <ENTROPY>(optional) - base64 entropy/seed bytes
Extract public key from the private key file.
Usage:
crypto public --in <FILE> [--inform PEM|DER] [--outform PEM|DER] [--out FILE]Arguments:
-i, --in <FILE>(required) - input private key file--inform <PEM|DER>(optional, default:PEM) - input key format--outform <PEM|DER>(optional, default:PEM) - output key format-o, --out <FILE>(optional) - output public key path
Sign file bytes with a private key.
Usage:
crypto sign --sec <FILE> --file <FILE> [--inform PEM|DER] [--out FILE]Arguments:
--sec <FILE>(required) - input private key file--file <FILE>(required) - file to sign--inform <PEM|DER>(optional, default:PEM) - private key format--out <FILE>(optional) - output signature path
Verify signature for a file using a public key.
Usage:
crypto verify --pub <FILE> --sig <FILE> --file <FILE> [--inform PEM|DER]Arguments:
--pub <FILE>(required) - input public key file--sig <FILE>(required) - input signature file--file <FILE>(required) - file to verify--inform <PEM|DER>(optional, default:PEM) - public key format