Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sopium/noise-rust
Rust implementation of Noise
https://github.com/sopium/noise-rust
crypto cryptography noise noise-protocol-framework rust
Last synced: 2 months ago
JSON representation
Rust implementation of Noise
- Host: GitHub
- URL: https://github.com/sopium/noise-rust
- Owner: blckngm
- License: unlicense
- Created: 2017-02-17T04:43:27.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2023-11-14T01:56:49.000Z (about 1 year ago)
- Last Synced: 2024-05-19T14:21:55.951Z (6 months ago)
- Topics: crypto, cryptography, noise, noise-protocol-framework, rust
- Language: Rust
- Homepage:
- Size: 813 KB
- Stars: 63
- Watchers: 4
- Forks: 19
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Noise-Rust
[![Crates.io](https://img.shields.io/crates/v/noise-protocol.svg)](https://crates.io/crates/noise-protocol)
[![Docs.rs](https://docs.rs/noise-protocol/badge.svg)](https://docs.rs/noise-protocol)Implementation of the [Noise Protocol
Framework](http://noiseprotocol.org) in Rust.## Status
Revision 34 is implemented.
Test vectors from [cacophony](https://github.com/centromere/cacophony) and [snow](https://github.com/mcginty/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
* [noise-protocol](https://docs.rs/noise-protocol)
* [noise-rust-crypto](https://docs.rs/noise-rust-crypto)## 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](`https://github.com/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.