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 HandshakeState
, where you
will complete the handshake phase and convert into either a TransportState
or
StatelessTransportState
.
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 crate::error::Error; |
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 | Generates a |
HandshakeState | A state machine encompassing the handshake phase of a Noise session. |
Keypair | A keypair object returned by |
StatelessTransportState | A state machine encompassing the transport phase of a Noise session, using the two
|
TransportState | A state machine encompassing the transport phase of a Noise session, using the two
|