Skip to content

blckngm/noise-rust

Folders and files

NameName
Last commit message
Last commit date

Latest commit

36bc85b Β· Nov 14, 2023
Nov 1, 2023
Nov 1, 2023
Nov 1, 2023
Nov 14, 2023
Apr 7, 2023
Feb 18, 2017
Oct 17, 2022
Nov 1, 2023
Feb 24, 2017
Apr 6, 2023
Apr 6, 2023
Apr 6, 2023

Repository files navigation

Noise-Rust

Crates.io Docs.rs

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. Feature use_alloc can optionallly be used as an alternative to 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. noise-rust-crypto provides concrete implementations of the needed crypto primitives. It is a wrapper for x25519-dalek and RustCrypto crates.

The following table shows what primitives each of these crates supports:

X25519 AES-256-GCM Chacha20-Poly1305 SHA-256 SHA-512 BLAKE2s BLAKE2b
rust-ring βœ” βœ” βœ” βœ”
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.