rustls::quic

Trait HeaderProtectionKey

source
pub trait HeaderProtectionKey: Send + Sync {
    // Required methods
    fn encrypt_in_place(
        &self,
        sample: &[u8],
        first: &mut u8,
        packet_number: &mut [u8],
    ) -> Result<(), Error>;
    fn decrypt_in_place(
        &self,
        sample: &[u8],
        first: &mut u8,
        packet_number: &mut [u8],
    ) -> Result<(), Error>;
    fn sample_len(&self) -> usize;
}
Expand description

A QUIC header protection key

Required Methods§

source

fn encrypt_in_place( &self, sample: &[u8], first: &mut u8, packet_number: &mut [u8], ) -> Result<(), Error>

Adds QUIC Header Protection.

sample must contain the sample of encrypted payload; see Header Protection Sample.

first must reference the first byte of the header, referred to as packet[0] in Header Protection Application.

packet_number must reference the Packet Number field; this is packet[pn_offset:pn_offset+pn_length] in Header Protection Application.

Returns an error without modifying anything if sample is not the correct length (see Header Protection Sample and Self::sample_len()), or packet_number is longer than allowed (see Packet Number Encoding and Decoding).

Otherwise, first and packet_number will have the header protection added.

source

fn decrypt_in_place( &self, sample: &[u8], first: &mut u8, packet_number: &mut [u8], ) -> Result<(), Error>

Removes QUIC Header Protection.

sample must contain the sample of encrypted payload; see Header Protection Sample.

first must reference the first byte of the header, referred to as packet[0] in Header Protection Application.

packet_number must reference the Packet Number field; this is packet[pn_offset:pn_offset+pn_length] in Header Protection Application.

Returns an error without modifying anything if sample is not the correct length (see Header Protection Sample and Self::sample_len()), or packet_number is longer than allowed (see Packet Number Encoding and Decoding).

Otherwise, first and packet_number will have the header protection removed.

source

fn sample_len(&self) -> usize

Expected sample length for the key’s algorithm

Implementors§