use rtoolbox::safe_vec::SafeVec;
use aes::cipher::{block_padding::Pkcs7, BlockDecryptMut, BlockEncryptMut, KeyIvInit};
type Aes256CbcEnc = cbc::Encryptor<aes::Aes256>;
type Aes256CbcDec = cbc::Decryptor<aes::Aes256>;
pub fn encrypt(data: &[u8], key: &[u8], iv: &[u8]) -> Result<Vec<u8>, ()> {
Ok(
Aes256CbcEnc::new(key.into(), iv.into())
.encrypt_padded_vec_mut::<Pkcs7>(data)
)
}
pub fn decrypt(data: &[u8], key: &[u8], iv: &[u8]) -> Result<SafeVec, ()> {
let buf = data.to_vec();
Aes256CbcDec::new(key.into(), iv.into())
.decrypt_padded_vec_mut::<Pkcs7>(&buf)
.map_err(|_| ())
.map(SafeVec::new)
}