pub mod chacha20;
pub mod poly1305;
pub use chacha20::ChaCha20;
pub use poly1305::{Poly1305, SignedEnvelope};
pub trait AlgorithmKeyIVInit {
fn init(&mut self, key: &[u8], iv: &[u8]);
}
pub trait AlgorithmKeyInit {
fn init(&mut self, key: &[u8]);
}
pub trait AlgorithmProcess {
fn process(&mut self, data: &[u8]) -> Vec<u8>;
}
pub trait AlgorithmProcessInPlace {
fn process_in_place(&self, data: &mut [u8]);
}
pub trait EncryptionAlgorithm: AlgorithmKeyIVInit + AlgorithmProcess {}
pub trait AEADAlgorithm: AlgorithmKeyInit + AlgorithmProcess {}