use crate::types::Result;
use crate::wire::Packet;
pub mod aes128gcm;
pub mod aes256gcm;
pub mod chacha20poly1305;
pub mod none;
pub trait Cipher {
const AEAD_LENGTH: Option<usize>;
fn encrypt_packet<'buf, B>(
&self,
packet: &'buf mut Packet<&'buf mut B>,
sequence_number: u32,
) -> Result<()>
where
B: AsRef<[u8]> + AsMut<[u8]> + ?Sized;
fn decrypt_packet_length<B>(&self, packet: &Packet<B>, sequence_number: u32) -> Result<u32>
where
B: AsRef<[u8]>;
fn decrypt_packet<'buf, B>(
&self,
packet: &'buf mut Packet<&'buf mut B>,
sequence_number: u32,
) -> Result<()>
where
B: AsRef<[u8]> + AsMut<[u8]> + ?Sized;
}