pub trait PacketKey: Send {
// Required methods
fn seal(&self, pn: u64, header: &[u8], payload: &mut [u8], tag: &mut [u8]);
fn open(
&self,
pn: u64,
header: &[u8],
payload_and_tag: &mut [u8],
) -> Result<usize, ()>;
fn tag_len(&self) -> usize;
fn confidentiality_limit(&self) -> u64;
fn integrity_limit(&self) -> u64;
}Expand description
AEAD packet protection for one direction.
Required Methods§
Sourcefn seal(&self, pn: u64, header: &[u8], payload: &mut [u8], tag: &mut [u8])
fn seal(&self, pn: u64, header: &[u8], payload: &mut [u8], tag: &mut [u8])
Encrypts payload in place and writes the tag (tag_len() bytes) to tag.
Sourcefn open(
&self,
pn: u64,
header: &[u8],
payload_and_tag: &mut [u8],
) -> Result<usize, ()>
fn open( &self, pn: u64, header: &[u8], payload_and_tag: &mut [u8], ) -> Result<usize, ()>
Decrypts payload_and_tag in place; returns the plaintext length.
fn tag_len(&self) -> usize
Sourcefn confidentiality_limit(&self) -> u64
fn confidentiality_limit(&self) -> u64
Packets that may be sealed before a key update is required (RFC 9001 §6.6).
Sourcefn integrity_limit(&self) -> u64
fn integrity_limit(&self) -> u64
Failed decryptions tolerated before the connection must close (RFC 9001 §6.6).
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".