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§
Sourcefn encrypt_in_place(
&self,
sample: &[u8],
first: &mut u8,
packet_number: &mut [u8],
) -> Result<(), Error>
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.
Sourcefn decrypt_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>
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.
Sourcefn sample_len(&self) -> usize
fn sample_len(&self) -> usize
Expected sample length for the key’s algorithm