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 mut counter: u64 = 0; let cipher_type = symm::Cipher::aes_128_ecb(); let block_size = cipher_type.block_size(); let mut result: Vec = vec![]; for cipher in 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.to_vec()); result.append(&mut data); counter += 1; } Bytes(result) }