PacketKey

Trait PacketKey 

pub trait PacketKey: Send + Sync {
    // Required methods
    fn encrypt(
        &self,
        path_id: PathId,
        packet: u64,
        buf: &mut [u8],
        header_len: usize,
    );
    fn decrypt(
        &self,
        path_id: PathId,
        packet: u64,
        header: &[u8],
        payload: &mut BytesMut,
    ) -> Result<(), CryptoError>;
    fn tag_len(&self) -> usize;
    fn confidentiality_limit(&self) -> u64;
    fn integrity_limit(&self) -> u64;
}
Expand description

Keys used to protect packet payloads

Required Methods§

fn encrypt( &self, path_id: PathId, packet: u64, buf: &mut [u8], header_len: usize, )

Encrypt the packet payload with the given packet number

fn decrypt( &self, path_id: PathId, packet: u64, header: &[u8], payload: &mut BytesMut, ) -> Result<(), CryptoError>

Decrypt the packet payload with the given packet number

fn tag_len(&self) -> usize

The length of the AEAD tag appended to packets on encryption

fn confidentiality_limit(&self) -> u64

Maximum number of packets that may be sent using a single key

fn integrity_limit(&self) -> u64

Maximum number of incoming packets that may fail decryption before the connection must be abandoned

Implementations on Foreign Types§

§

impl PacketKey for Box<dyn PacketKey>

§

fn encrypt( &self, path_id: PathId, packet: u64, buf: &mut [u8], header_len: usize, )

§

fn decrypt( &self, path_id: PathId, packet: u64, header: &[u8], payload: &mut BytesMut, ) -> Result<(), CryptoError>

§

fn tag_len(&self) -> usize

§

fn confidentiality_limit(&self) -> u64

§

fn integrity_limit(&self) -> u64

Implementors§