ocaml-noise

ocaml-noise is an OCaml implementation of the Noise Protocol Framework, revision 34.
Supported algorithms
Component | Supported |
|---|
DH | Curve25519 (X25519) |
AEAD ciphers | AES-256-GCM, ChaCha20-Poly1305 |
Hashes | SHA-256, SHA-512, BLAKE2s, BLAKE2b |
Patterns | all one-way (N, K, X), all 12 fundamental interactive, all 23 deferred |
Modifiers | single pskN (e.g. NNpsk0, XXpsk3) |
Any protocol name combining the above works, e.g. Noise_XX_25519_ChaChaPoly_BLAKE2s.
Testing
nix develop
dune runtest --force
This runs three tests:
test_vectors: 472 externally generated vectors from cacophony that cover each pattern * suite combination.test_negative: tests for malformed protocol names, truncated/corrupted/replayed messages, prologue and PSK mismatches, oversized messages, and state-machine misuse.test_roundtrip: full handshakes with freshly generated keys.