pub(crate) mod decryption;
pub(crate) mod encryption;
use crate::error::Result;
pub struct DecryptionBufferView<'a> {
pub aad: &'a mut [u8],
pub data: &'a mut [u8],
}
pub struct EncryptionBufferView<'a> {
pub aad: &'a mut [u8],
pub data: &'a mut [u8],
pub tag: &'a mut [u8],
}
pub trait AadData {
fn len(&self) -> usize;
fn is_empty(&self) -> bool {
self.len() == 0
}
fn serialize(&self, buffer: &mut [u8]) -> Result<()>;
}
impl AadData for Vec<u8> {
fn len(&self) -> usize {
self.len()
}
fn serialize(&self, buffer: &mut [u8]) -> Result<()> {
buffer.copy_from_slice(self);
Ok(())
}
}
#[cfg(test)]
mod test {
use super::AadData;
use crate::error::Result;
pub(super) struct TestAadData {
pub data: [u8; 4],
}
impl AadData for TestAadData {
fn len(&self) -> usize {
self.data.len()
}
fn serialize(&self, buffer: &mut [u8]) -> Result<()> {
buffer.copy_from_slice(&self.data);
Ok(())
}
}
}