Enum snow::Session [] [src]

pub enum Session {
    Handshake(HandshakeState),
    Transport(TransportState),
}

A state machine for the entire Noise session.

Enums provide a convenient interface as it's how Rust implements union structs, meaning this is a sized object.

Variants

Methods

impl Session
[src]

If the payload will be encrypted or not. In a future version of Snow, this interface may change to more proactively prevent unauthenticated, plaintext payloads during handshakes.

See Payload Security Properties for more information.

True if the handshake is finished and the Session state machine is ready to be transitioned to transport mode. This function also returns a vacuous true if already in transport mode.

Examples

let mut session = NoiseBuilder::new("Noise_NN_25519_AESGCM_SHA256".parse()?)
                  .build_initiator()?;

if (session.is_handshake_finished()) {
    session = session.into_transport_mode()?;
}

Construct a message from payload (and pending handshake tokens if in handshake state), and writes it to the output buffer.

Returns the size of the written payload.

Errors

Will result in NoiseError::InputError if the size of the output exceeds the max message length in the Noise Protocol (65535 bytes).

Reads a noise message from input

Returns the size of the payload written to payload.

Errors

Will result in NoiseError::DecryptError if the contents couldn't be decrypted and/or the authentication tag didn't verify.

Panics

This function will panic if there is no key, or if there is a nonce overflow.

Set a new key for the one or both of the initiator-egress and responder-egress symmetric ciphers.

Errors

Will result in NoiseError::StateError if not in transport mode.

Transition the session into transport mode. This can only be done once the handshake has finished.

Consumes the previous state, and returns the new transport state object, thereby freeing any material only used during the handshake phase.

Errors

Will result in NoiseError::StateError if the handshake is not finished.

Examples

let mut session = NoiseBuilder::new("Noise_NN_25519_AESGCM_SHA256".parse()?)
                  .build_initiator()?;

// ... complete handshake ...

session = session.into_transport_mode()?;