use alloc::vec::Vec;
use rand_core::CryptoRng;
use crate::errors::Result;
pub trait RandomizedEncryptor {
fn encrypt_with_rng<R: CryptoRng + ?Sized>(&self, rng: &mut R, msg: &[u8]) -> Result<Vec<u8>>;
}
pub trait Decryptor {
fn decrypt(&self, ciphertext: &[u8]) -> Result<Vec<u8>>;
}
pub trait RandomizedDecryptor {
fn decrypt_with_rng<R: CryptoRng + ?Sized>(
&self,
rng: &mut R,
ciphertext: &[u8],
) -> Result<Vec<u8>>;
}
pub trait EncryptingKeypair {
type EncryptingKey: Clone;
fn encrypting_key(&self) -> Self::EncryptingKey;
}