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 aNoiseSession<HandshakeState>
,
which can transition to a NoiseSession<TransportState>
once the handshake is completed.
Examples
See examples/simple.rs
for a more complete TCP client/server example.
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(&[0u8; 0], &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();
Structs
HandshakeState | |
NoiseBuilder |
Generates a |
NoiseParams |
The set of choices (as specified in the Noise spec) that constitute a full protocol definition. |
NoiseSession |
The high-level state machine for the flow from handshake to transport stages. |
TransportState |
Enums
BaseChoice | |
CipherChoice | |
DHChoice | |
HandshakePattern | |
HashChoice | |
NoiseError |
Traits
CipherStateType | |
CipherType | |
DhType | |
HashType | |
NoiseSessionState | |
RandomType |