use crate::enc::EncryptionOverhead;
use crate::util::AlgorithmInfo;

pub use self::{
    dec::*,
    enc::*,
};

mod enc;
mod dec;

#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub enum ChainAlgorithmAuthMode {
    NotAuthenticated,
    AuthenticatedOnFinalize,
    AuthenticatedInstant,
}

#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub struct ChainAlgorithmInfo {
    pub auth_mode: ChainAlgorithmAuthMode,
    pub chunk_overhead: EncryptionOverhead,
    pub initialize_size: EncryptionOverhead,
    pub finalize_size: EncryptionOverhead,
}

impl AlgorithmInfo for ChainAlgorithmInfo {}