use crate::{Error, Label};
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct EncryptionContext {
pub nonce: Vec<u8>,
pub aad: Vec<u8>,
}
pub trait Signer {
fn alg(&self) -> Option<Label> {
None
}
fn kid(&self) -> Option<&[u8]> {
None
}
fn sign(&self, data: &[u8]) -> Result<Vec<u8>, Error>;
}
pub trait Verifier {
fn alg(&self) -> Option<Label> {
None
}
fn kid(&self) -> Option<&[u8]> {
None
}
fn verify(&self, data: &[u8], signature: &[u8]) -> Result<(), Error>;
}
pub trait Macer {
fn alg(&self) -> Option<Label> {
None
}
fn kid(&self) -> Option<&[u8]> {
None
}
fn mac_create(&self, data: &[u8]) -> Result<Vec<u8>, Error>;
fn mac_verify(&self, data: &[u8], tag: &[u8]) -> Result<(), Error>;
}
pub trait Encryptor {
fn alg(&self) -> Option<Label> {
None
}
fn kid(&self) -> Option<&[u8]> {
None
}
fn nonce_size(&self) -> usize;
fn base_iv(&self) -> Option<&[u8]> {
None
}
fn encrypt(&self, nonce: &[u8], plaintext: &[u8], aad: &[u8]) -> Result<Vec<u8>, Error>;
fn decrypt(&self, nonce: &[u8], ciphertext: &[u8], aad: &[u8]) -> Result<Vec<u8>, Error>;
}