Skip to content
Rust implementation of Noise
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
noise
ring
rust-crypto
sodiumoxide
vectors
.gitignore
.travis.yml
CHANGELOG.md
Cargo.toml
LICENSE
README.md

README.md

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

  • Simple: straightforward implementation, small amount of code, almost no dependencies, supports no_std.
  • Fast: static dispatch, no heap allocation necessary.
  • Unopinionated: flexible, primitive API, does not dictate how it should be used.

Documentation

Crates

This repository contains several crates. The noise-protocol crate contains the abstract implementation of the protocol framework. Two sibling crates, namely noise-sodiumoxide and noise-rust-crypto, provide concrete implementations of the needed crypto primitives. They are wrappers around sodiumoxide 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
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.

License

Unlicense.

You can’t perform that action at this time.