use super::*;
use crate::error::Error;
use crate::types::SecretBytes;
use dcrypt_params::utils::symmetric::AES_BLOCK_SIZE;
use hex;
#[test]
fn test_aes128_encrypt() {
let key_vec = hex::decode("2b7e151628aed2a6abf7158809cf4f3c").unwrap();
let mut key_array = [0u8; 16]; key_array.copy_from_slice(&key_vec);
let key = SecretBytes::new(key_array);
let mut block = hex::decode("6bc1bee22e409f96e93d7e117393172a").unwrap();
let expected = hex::decode("3ad77bb40d7a3660a89ecaf32466ef97").unwrap();
let aes = Aes128::new(&key);
aes.encrypt_block(&mut block).unwrap();
assert_eq!(block, expected);
}
#[test]
fn test_aes128_decrypt() {
let key_vec = hex::decode("2b7e151628aed2a6abf7158809cf4f3c").unwrap();
let mut key_array = [0u8; 16];
key_array.copy_from_slice(&key_vec);
let key = SecretBytes::new(key_array);
let mut block = hex::decode("3ad77bb40d7a3660a89ecaf32466ef97").unwrap();
let expected = hex::decode("6bc1bee22e409f96e93d7e117393172a").unwrap();
let aes = Aes128::new(&key);
aes.decrypt_block(&mut block).unwrap();
assert_eq!(block, expected);
}
#[test]
fn test_aes192_encrypt() {
let key_vec = hex::decode("8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b").unwrap();
let mut key_array = [0u8; 24]; key_array.copy_from_slice(&key_vec);
let key = SecretBytes::new(key_array);
let mut block = hex::decode("6bc1bee22e409f96e93d7e117393172a").unwrap();
let expected = hex::decode("bd334f1d6e45f25ff712a214571fa5cc").unwrap();
let aes = Aes192::new(&key);
aes.encrypt_block(&mut block).unwrap();
assert_eq!(block, expected);
}
#[test]
fn test_aes192_decrypt() {
let key_vec = hex::decode("8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b").unwrap();
let mut key_array = [0u8; 24];
key_array.copy_from_slice(&key_vec);
let key = SecretBytes::new(key_array);
let mut block = hex::decode("bd334f1d6e45f25ff712a214571fa5cc").unwrap();
let expected = hex::decode("6bc1bee22e409f96e93d7e117393172a").unwrap();
let aes = Aes192::new(&key);
aes.decrypt_block(&mut block).unwrap();
assert_eq!(block, expected);
}
#[test]
fn test_aes256_encrypt() {
let key_vec =
hex::decode("603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4").unwrap();
let mut key_array = [0u8; 32]; key_array.copy_from_slice(&key_vec);
let key = SecretBytes::new(key_array);
let mut block = hex::decode("6bc1bee22e409f96e93d7e117393172a").unwrap();
let expected = hex::decode("f3eed1bdb5d2a03c064b5a7e3db181f8").unwrap();
let aes = Aes256::new(&key);
aes.encrypt_block(&mut block).unwrap();
assert_eq!(block, expected);
}
#[test]
fn test_aes256_decrypt() {
let key_vec =
hex::decode("603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4").unwrap();
let mut key_array = [0u8; 32];
key_array.copy_from_slice(&key_vec);
let key = SecretBytes::new(key_array);
let mut block = hex::decode("f3eed1bdb5d2a03c064b5a7e3db181f8").unwrap();
let expected = hex::decode("6bc1bee22e409f96e93d7e117393172a").unwrap();
let aes = Aes256::new(&key);
aes.decrypt_block(&mut block).unwrap();
assert_eq!(block, expected);
}
#[test]
fn test_aes_invalid_block_size() {
let key_vec = hex::decode("2b7e151628aed2a6abf7158809cf4f3c").unwrap();
let mut key_array = [0u8; 16];
key_array.copy_from_slice(&key_vec);
let key = SecretBytes::new(key_array);
let mut invalid_block = hex::decode("6bc1bee22e409f96").unwrap();
let aes = Aes128::new(&key);
let result = aes.encrypt_block(&mut invalid_block);
assert!(result.is_err());
if let Err(Error::Length {
context,
expected,
actual,
}) = result
{
assert_eq!(context, "AES block");
assert_eq!(expected, AES_BLOCK_SIZE);
assert_eq!(actual, 8);
} else {
panic!("Expected Length error");
}
}