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 error::SnowError;
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

error

All error types used by Snow operations.

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

Session

A state machine for the entire Noise session.