Noise-Rust

Crates.io Docs.rs Build Status

Implementation of the Noise Protocol Framework in Rust.

Status

Revision 34 is implemented.

Test vectors from cacophony and snow are successfully verified.

Philosophy

Documentation

Crates

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 usage

The noise-protocol crate supports no_std, if default features are disabled.

The noise-ring crate supports no_std.

License

Unlicense.