use crate::bytes::Bytes; use openssl::symm; pub fn encrypt(key: &Bytes, nonce: u64, data: &Bytes) -> Bytes { decrypt(key, nonce, data) } pub fn decrypt(Bytes(key): &Bytes, nonce: u64, Bytes(data): &Bytes) -> Bytes { let cipher_type = symm::Cipher::aes_128_ecb(); let block_size = cipher_type.block_size(); let mut result: Vec = vec![]; for (counter, cipher) in (0_u64..).zip(data.chunks(block_size)) { let mut keyinput = nonce.to_le_bytes().to_vec(); keyinput.append(&mut counter.to_le_bytes().to_vec()); let keystream = crate::cbc::enrypt_aes_128_ecb_block(key, &keyinput); let mut data = crate::utils::xor(&keystream, cipher); result.append(&mut data); } Bytes(result) }