use crate::client::ClientError;
pub trait CryptoContext: Send + Sync {
fn encrypt(&mut self, plaintext: &[u8]) -> Result<Vec<u8>, ClientError>;
fn decrypt(&self, payload: &[u8]) -> Result<Vec<u8>, ClientError>;
fn key_as_base64(&self) -> String;
fn import_nonce(&mut self, payload: &[u8]) -> Result<(), ClientError>;
fn prepend_nonce_to_ciphertext(&self, ciphertext: &[u8]) -> Vec<u8>;
fn nonce_size(&self) -> usize;
}
pub trait CryptoContextFactory: Send + Sync {
fn generate(&self) -> Box<dyn CryptoContext>;
fn generate_from_key_base64(&self, key: &str) -> Result<Box<dyn CryptoContext>, ClientError>;
}