acvm_blackbox_solver/
aes128.rs1use crate::BlackBoxResolutionError;
2use aes::cipher::{BlockModeEncrypt, KeyIvInit, block_padding::NoPadding};
3
4type Aes128CbcEnc = cbc::Encryptor<aes::Aes128>; pub fn aes128_encrypt(
7 inputs: &[u8],
8 iv: [u8; 16],
9 key: [u8; 16],
10) -> Result<Vec<u8>, BlackBoxResolutionError> {
11 if !inputs.len().is_multiple_of(16) {
12 return Err(BlackBoxResolutionError::Failed(
13 acir::BlackBoxFunc::AES128Encrypt,
14 "input length must be a multiple of 16".to_string(),
15 ));
16 }
17
18 let mut buffer = inputs.to_vec();
19 Aes128CbcEnc::new(&key.into(), &iv.into())
22 .encrypt_padded::<NoPadding>(&mut buffer, inputs.len())
23 .expect("input length is block-aligned");
24
25 Ok(buffer)
26}