Implementation of the Noise Protocol Framework in Rust.
Revision 34 is implemented.
Test vectors from cacophony and snow are successfully verified.
no_std
.This repository contains several crates. The noise-protocol
crate
contains the abstract implementation of the protocol
framework. Several sibling crates, namely noise-sodiumoxide
,
noise-ring
and noise-rust-crypto
, provide concrete implementations
of the needed crypto primitives. They are wrappers around
sodiumoxide
, ring and rust-crypto
, respectively.
The following table shows what primitives each of these crates supports:
| | X25519 | AES-256-GCM | Chacha20-Poly1305 | SHA-256 | SHA-512 | BLAKE2s | BLAKE2b | |-------------|:------:|:-----------:|:-----------------:|:-------:|:-------:|:-------:|:-------:| | ring | | ✔ | ✔ | ✔ | ✔ | | | | sodiumoxide | ✔ | | ✔ | ✔ | ✔ | | ✔ | | rust-crypto | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
You can also plug in other primitive implementations by implementing the DH
,
Cipher
and Hash
traits.
no_std
usageThe noise-protocol
crate supports no_std
, if default features are
disabled.
The noise-ring
crate supports no_std
.
Unlicense.