use crate::types::Algorithm;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum CipherMode {
Gcm,
#[allow(dead_code)]
Cbc,
#[allow(dead_code)]
Ecb,
#[allow(dead_code)]
Ctr,
}
impl CipherMode {
pub fn requires_padding(&self) -> bool {
matches!(self, CipherMode::Cbc | CipherMode::Ecb)
}
}
pub fn infer_cipher_mode(algorithm: Algorithm) -> CipherMode {
match algorithm {
Algorithm::AES128GCM | Algorithm::AES192GCM | Algorithm::AES256GCM | Algorithm::SM4GCM => {
CipherMode::Gcm
}
_ => CipherMode::Gcm, }
}
#[allow(dead_code)]
pub fn get_block_size(algorithm: Algorithm) -> usize {
match algorithm {
Algorithm::AES128GCM | Algorithm::AES192GCM | Algorithm::AES256GCM => 16,
Algorithm::SM4GCM => 16,
_ => 16, }
}