HeaderProtectionKey

Trait HeaderProtectionKey 

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;
}
Available on crate feature tls only.
Expand description

A QUIC header protection key

Required Methods§

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.

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.

fn sample_len(&self) -> usize

Expected sample length for the key’s algorithm

Trait Implementations§

§

impl HeaderKey for Box<dyn HeaderProtectionKey>

§

fn decrypt(&self, pn_offset: usize, packet: &mut [u8])

Decrypt the given packet’s header
§

fn encrypt(&self, pn_offset: usize, packet: &mut [u8])

Encrypt the given packet’s header
§

fn sample_size(&self) -> usize

The sample size used for this key’s algorithm

Implementors§