Crate snow[][src]

The snow crate is a straightforward, Hard To Fuck Up™ Noise Protocol implementation.

Read the Noise Protocol Framework Spec for more information.

The typical usage flow is to use NoiseBuilder to construct a Session, which is main state machine you will want to interact with.

Examples

See examples/simple.rs for a more complete TCP client/server example.

This example is not tested
let noise = NoiseBuilder::new("Noise_NN_ChaChaPoly_BLAKE2s".parse().unwrap())
                         .build_initiator()
                         .unwrap();

let mut buf = [0u8; 65535];

// write first handshake message
noise.write_message(&[], &mut buf).unwrap();

// receive response message
let incoming = receive_message_from_the_mysterious_ether();
noise.read_message(&incoming, &mut buf).unwrap();

// complete handshake, and transition the state machine into transport mode
let noise = noise.into_transport_mode();

Re-exports

pub use wrappers::ring_wrapper::RingAcceleratedResolver;

Modules

params

All structures related to Noise parameter definitions (cryptographic primitive choices, protocol patterns/names)

types

The traits for cryptographic implementations that can be used by Noise.

wrappers

The wrappers around the default collection of cryptography and entropy providers.

Structs

DefaultResolver

The default pure-rust crypto implementation resolver.

NoiseBuilder

Generates a NoiseSession and also validate that all the prerequisites for the given parameters are satisfied.

Enums

InitStage

The various stages of initialization used to help identify the specific cause of an Init error.

Prerequisite

A prerequisite that may be missing.

Session

A state machine for the entire Noise session.

SnowError
StateProblem

Specific errors in the state machine.

Traits

CryptoResolver

An object that resolves the providers of Noise crypto choices