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 Builder 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 with static keys.

static PATTERN: &'static str = "Noise_NN_25519_ChaChaPoly_BLAKE2s";
 
let mut initiator = snow::Builder::new(PATTERN.parse()?)
    .build_initiator()?;
let mut responder = snow::Builder::new(PATTERN.parse()?)
    .build_responder()?;
 
let (mut read_buf, mut first_msg, mut second_msg) =
    ([0u8; 1024], [0u8; 1024], [0u8; 1024]);

// -> e
let len = initiator.write_message(&[], &mut first_msg)?;

// responder processes the first message...
responder.read_message(&first_msg[..len], &mut read_buf)?;
 
// <- e, ee
let len = responder.write_message(&[], &mut second_msg)?;
 
// initiator processes the response...
initiator.read_message(&second_msg[..len], &mut read_buf)?;

// NN handshake complete, transition into transport mode.
let initiator = initiator.into_transport_mode();
let responder = responder.into_transport_mode();

Re-exports

pub use resolvers::CryptoResolver;
pub use resolvers::FallbackResolver;
pub use resolvers::default::DefaultResolver;
pub use resolvers::ring::RingResolver;
pub use resolvers::hacl_star::HaclStarResolver;

Modules

params

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

resolvers

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

types

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

Structs

Builder

The default pure-rust crypto implementation resolver. Generates a Session 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

All errors in snow will return a SnowError enum.

StateProblem

Specific errors in the state machine.