diff --git a/.travis.yml b/.travis.yml index 31376c8c..d5fb1809 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,7 +12,7 @@ matrix: rust: nightly - env: NAME="aes+aesni test" - rust: 1.27.0 + rust: 1.31.0 script: ./test_aes.sh - env: NAME="aes+aesni test" rust: stable @@ -39,7 +39,7 @@ matrix: - rust: nightly install: -- cargo install cross || true + - cargo install cross || true script: - cross test --verbose --all --release --target $TARGET diff --git a/Cargo.toml b/Cargo.toml index 97c2041e..167e29e1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,8 @@ [workspace] members = [ + "aes/aes", "aes/aes-soft", + "aes/aesni", "blowfish", "block-modes", "cast5", diff --git a/README.md b/README.md index d6a1ecbf..9873d675 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ cryptographic and security reviews. ### Minimum Supported Rust Version All crates in this repository support Rust 1.22 or higher. (except `aesni` and -`aes` crates, which require Rust 1.27) In future minimum supported Rust version +`aes` crates, which require Rust 1.31) In future minimum supported Rust version can be changed, but it will be done with the minor version bump. ## Usage diff --git a/aes/aes/Cargo.toml b/aes/aes/Cargo.toml index abf96ba9..cdd78097 100644 --- a/aes/aes/Cargo.toml +++ b/aes/aes/Cargo.toml @@ -20,5 +20,3 @@ aesni = { version = "0.6", default-features = false } [dev-dependencies] block-cipher-trait = { version = "0.6", features = ["dev"] } - -[workspace] diff --git a/aes/aesni/Cargo.toml b/aes/aesni/Cargo.toml index 728a6f7f..025b9a8c 100644 --- a/aes/aesni/Cargo.toml +++ b/aes/aesni/Cargo.toml @@ -8,6 +8,7 @@ documentation = "https://docs.rs/aesni" repository = "https://github.com/RustCrypto/block-ciphers" keywords = ["crypto", "aes", "rijndael", "block-cipher"] categories = ["cryptography", "no-std"] +edition = "2018" [dependencies] block-cipher-trait = "0.6" @@ -23,8 +24,6 @@ default = ["ctr"] ctr = ["stream-cipher"] nocheck = [] -[workspace] - [package.metadata.docs.rs] rustc-args = ["-C", "target-feature=+aes,+ssse3"] rustdoc-args = ["-C", "target-feature=+aes,+ssse3"] diff --git a/aes/aesni/benches/aes128.rs b/aes/aesni/benches/aes128.rs index 93230e34..8c8b5f89 100644 --- a/aes/aesni/benches/aes128.rs +++ b/aes/aesni/benches/aes128.rs @@ -1,8 +1,8 @@ #![no_std] #![cfg(any(target_arch = "x86_64", target_arch = "x86"))] #![feature(test)] -extern crate aesni; extern crate test; +use aesni; use aesni::Aes128; use aesni::block_cipher_trait::BlockCipher; diff --git a/aes/aesni/benches/aes128_ctr.rs b/aes/aesni/benches/aes128_ctr.rs index d5ac4346..97c74d8e 100644 --- a/aes/aesni/benches/aes128_ctr.rs +++ b/aes/aesni/benches/aes128_ctr.rs @@ -1,6 +1,5 @@ #![cfg(feature = "ctr")] #![feature(test)] -#[macro_use] extern crate stream_cipher; -extern crate aesni; +use stream_cipher::bench_sync; bench_sync!(aesni::Aes128Ctr); diff --git a/aes/aesni/benches/aes192.rs b/aes/aesni/benches/aes192.rs index 544549ed..ea6a80d2 100644 --- a/aes/aesni/benches/aes192.rs +++ b/aes/aesni/benches/aes192.rs @@ -1,8 +1,8 @@ #![no_std] #![cfg(any(target_arch = "x86_64", target_arch = "x86"))] #![feature(test)] -extern crate aesni; extern crate test; +use aesni; use aesni::Aes192; use aesni::block_cipher_trait::BlockCipher; diff --git a/aes/aesni/benches/aes192_ctr.rs b/aes/aesni/benches/aes192_ctr.rs index e89e9ab9..778f9cd0 100644 --- a/aes/aesni/benches/aes192_ctr.rs +++ b/aes/aesni/benches/aes192_ctr.rs @@ -1,6 +1,5 @@ #![cfg(feature = "ctr")] #![feature(test)] -#[macro_use] extern crate stream_cipher; -extern crate aesni; +use stream_cipher::bench_sync; bench_sync!(aesni::Aes192Ctr); diff --git a/aes/aesni/benches/aes256.rs b/aes/aesni/benches/aes256.rs index e8e73662..70111e18 100644 --- a/aes/aesni/benches/aes256.rs +++ b/aes/aesni/benches/aes256.rs @@ -1,8 +1,8 @@ #![no_std] #![cfg(any(target_arch = "x86_64", target_arch = "x86"))] #![feature(test)] -extern crate aesni; extern crate test; +use aesni; use aesni::Aes256; use aesni::block_cipher_trait::BlockCipher; diff --git a/aes/aesni/benches/aes256_ctr.rs b/aes/aesni/benches/aes256_ctr.rs index 67e46edd..81039e5b 100644 --- a/aes/aesni/benches/aes256_ctr.rs +++ b/aes/aesni/benches/aes256_ctr.rs @@ -1,6 +1,5 @@ #![cfg(feature = "ctr")] #![feature(test)] -#[macro_use] extern crate stream_cipher; -extern crate aesni; +use stream_cipher::bench_sync; bench_sync!(aesni::Aes256Ctr); diff --git a/aes/aesni/src/aes128/expand.rs b/aes/aesni/src/aes128/expand.rs index 41a91312..61e4077d 100644 --- a/aes/aesni/src/aes128/expand.rs +++ b/aes/aesni/src/aes128/expand.rs @@ -1,7 +1,7 @@ -use arch::*; - use core::mem; +use crate::arch::*; + macro_rules! expand_round { ($enc_keys:expr, $dec_keys:expr, $pos:expr, $round:expr) => { let mut t1 = _mm_load_si128($enc_keys.as_ptr().offset($pos - 1)); diff --git a/aes/aesni/src/aes128/mod.rs b/aes/aesni/src/aes128/mod.rs index 0b68c755..5c844e66 100644 --- a/aes/aesni/src/aes128/mod.rs +++ b/aes/aesni/src/aes128/mod.rs @@ -1,10 +1,11 @@ +use core::mem; + +use opaque_debug::impl_opaque_debug; use block_cipher_trait::generic_array::GenericArray; use block_cipher_trait::generic_array::typenum::{U16, U8}; use block_cipher_trait::BlockCipher; -use arch::*; - -use core::mem; -use utils::{Block128, Block128x8}; +use crate::arch::*; +use crate::utils::{Block128, Block128x8}; mod expand; #[cfg(test)] diff --git a/aes/aesni/src/aes128/test_expand.rs b/aes/aesni/src/aes128/test_expand.rs index 803fcd35..87354d49 100644 --- a/aes/aesni/src/aes128/test_expand.rs +++ b/aes/aesni/src/aes128/test_expand.rs @@ -1,5 +1,5 @@ use super::expand::expand; -use utils::check; +use crate::utils::check; #[test] fn test() { diff --git a/aes/aesni/src/aes192/expand.rs b/aes/aesni/src/aes192/expand.rs index 91909b8e..d2480f61 100644 --- a/aes/aesni/src/aes192/expand.rs +++ b/aes/aesni/src/aes192/expand.rs @@ -1,7 +1,7 @@ -use arch::*; - use core::{mem, ptr}; +use crate::arch::*; + macro_rules! expand_round { ($t1:expr, $t3:expr, $round:expr) => {{ let mut t1 = $t1; diff --git a/aes/aesni/src/aes192/mod.rs b/aes/aesni/src/aes192/mod.rs index 90340d7c..34d0d0f0 100644 --- a/aes/aesni/src/aes192/mod.rs +++ b/aes/aesni/src/aes192/mod.rs @@ -1,10 +1,11 @@ +use core::mem; + +use opaque_debug::impl_opaque_debug; use block_cipher_trait::generic_array::GenericArray; use block_cipher_trait::generic_array::typenum::{U16, U24, U8}; use block_cipher_trait::BlockCipher; -use arch::*; - -use core::mem; -use utils::{Block128, Block128x8}; +use crate::arch::*; +use crate::utils::{Block128, Block128x8}; mod expand; #[cfg(test)] diff --git a/aes/aesni/src/aes192/test_expand.rs b/aes/aesni/src/aes192/test_expand.rs index fdd6dac1..03a6db25 100644 --- a/aes/aesni/src/aes192/test_expand.rs +++ b/aes/aesni/src/aes192/test_expand.rs @@ -1,5 +1,5 @@ use super::expand::expand; -use utils::check; +use crate::utils::check; #[test] fn test() { diff --git a/aes/aesni/src/aes256/expand.rs b/aes/aesni/src/aes256/expand.rs index a4cdf477..dedb9ef2 100644 --- a/aes/aesni/src/aes256/expand.rs +++ b/aes/aesni/src/aes256/expand.rs @@ -1,12 +1,12 @@ -use arch::*; - use core::mem; +use crate::arch::*; + macro_rules! expand_round { ($enc_keys:expr, $dec_keys:expr, $pos:expr, $round:expr) => { - let mut t1 = _mm_load_si128($enc_keys.as_ptr().offset($pos - 2));; + let mut t1 = _mm_load_si128($enc_keys.as_ptr().offset($pos - 2)); let mut t2; - let mut t3 = _mm_load_si128($enc_keys.as_ptr().offset($pos - 1));; + let mut t3 = _mm_load_si128($enc_keys.as_ptr().offset($pos - 1)); let mut t4; t2 = _mm_aeskeygenassist_si128(t3, $round); @@ -41,9 +41,9 @@ macro_rules! expand_round { macro_rules! expand_round_last { ($enc_keys:expr, $dec_keys:expr, $pos:expr, $round:expr) => { - let mut t1 = _mm_load_si128($enc_keys.as_ptr().offset($pos - 2));; + let mut t1 = _mm_load_si128($enc_keys.as_ptr().offset($pos - 2)); let mut t2; - let t3 = _mm_load_si128($enc_keys.as_ptr().offset($pos - 1));; + let t3 = _mm_load_si128($enc_keys.as_ptr().offset($pos - 1)); let mut t4; t2 = _mm_aeskeygenassist_si128(t3, $round); diff --git a/aes/aesni/src/aes256/mod.rs b/aes/aesni/src/aes256/mod.rs index fbb0fe7d..ab564e41 100644 --- a/aes/aesni/src/aes256/mod.rs +++ b/aes/aesni/src/aes256/mod.rs @@ -1,10 +1,11 @@ +use core::mem; + +use opaque_debug::impl_opaque_debug; use block_cipher_trait::generic_array::GenericArray; use block_cipher_trait::generic_array::typenum::{U16, U32, U8}; use block_cipher_trait::BlockCipher; -use arch::*; - -use core::mem; -use utils::{Block128, Block128x8}; +use crate::arch::*; +use crate::utils::{Block128, Block128x8}; mod expand; #[cfg(test)] diff --git a/aes/aesni/src/aes256/test_expand.rs b/aes/aesni/src/aes256/test_expand.rs index 8d0f7742..8ec4acb7 100644 --- a/aes/aesni/src/aes256/test_expand.rs +++ b/aes/aesni/src/aes256/test_expand.rs @@ -1,5 +1,5 @@ use super::expand::expand; -use utils::check; +use crate::utils::check; #[test] fn test() { diff --git a/aes/aesni/src/ctr.rs b/aes/aesni/src/ctr.rs index 0c6bb067..a33424e2 100644 --- a/aes/aesni/src/ctr.rs +++ b/aes/aesni/src/ctr.rs @@ -1,13 +1,14 @@ use core::{mem, cmp}; -use arch::*; -use super::{Aes128, Aes192, Aes256}; use block_cipher_trait::BlockCipher; use block_cipher_trait::generic_array::GenericArray; use block_cipher_trait::generic_array::typenum::U16; use stream_cipher::{ SyncStreamCipher, SyncStreamCipherSeek, NewStreamCipher, LoopError, }; +use opaque_debug::impl_opaque_debug; +use super::{Aes128, Aes192, Aes256}; +use crate::arch::*; const BLOCK_SIZE: usize = 16; const PAR_BLOCKS: usize = 8; diff --git a/aes/aesni/src/lib.rs b/aes/aesni/src/lib.rs index fdac50ed..6e0f4f77 100644 --- a/aes/aesni/src/lib.rs +++ b/aes/aesni/src/lib.rs @@ -71,10 +71,10 @@ //! - [Intel AES-NI whitepaper](https://software.intel.com/sites/default/files/article/165683/aes-wp-2012-09-22-v01.pdf) //! - [Use of the AES Instruction Set](https://www.cosic.esat.kuleuven.be/ecrypt/AESday/slides/Use_of_the_AES_Instruction_Set.pdf) #![no_std] -pub extern crate block_cipher_trait; -#[macro_use] extern crate opaque_debug; +pub use block_cipher_trait; #[cfg(feature = "ctr")] -pub extern crate stream_cipher; +pub use stream_cipher; + #[cfg(not(feature = "nocheck"))] mod target_checks; #[macro_use] diff --git a/aes/aesni/src/utils.rs b/aes/aesni/src/utils.rs index 9015420e..3f357ac2 100644 --- a/aes/aesni/src/utils.rs +++ b/aes/aesni/src/utils.rs @@ -1,7 +1,5 @@ #[cfg(test)] use core::mem; -#[cfg(test)] -use arch::__m128i; use block_cipher_trait::generic_array::GenericArray; use block_cipher_trait::generic_array::typenum::{U16, U8}; @@ -10,7 +8,7 @@ pub type Block128 = GenericArray; pub type Block128x8 = GenericArray, U8>; #[cfg(test)] -pub(crate) fn check(a: &[__m128i], b: &[[u64; 2]]) { +pub(crate) fn check(a: &[crate::arch::__m128i], b: &[[u64; 2]]) { for (v1, v2) in a.iter().zip(b) { let t1: [u64; 2] = unsafe { mem::transmute(*v1) }; let t2 = [v2[0].to_be(), v2[1].to_be()]; @@ -21,92 +19,92 @@ pub(crate) fn check(a: &[__m128i], b: &[[u64; 2]]) { macro_rules! load8 { ($blocks:expr) => { [ - _mm_loadu_si128($blocks[0].as_ptr() as *const __m128i), - _mm_loadu_si128($blocks[1].as_ptr() as *const __m128i), - _mm_loadu_si128($blocks[2].as_ptr() as *const __m128i), - _mm_loadu_si128($blocks[3].as_ptr() as *const __m128i), - _mm_loadu_si128($blocks[4].as_ptr() as *const __m128i), - _mm_loadu_si128($blocks[5].as_ptr() as *const __m128i), - _mm_loadu_si128($blocks[6].as_ptr() as *const __m128i), - _mm_loadu_si128($blocks[7].as_ptr() as *const __m128i), + crate::arch::_mm_loadu_si128($blocks[0].as_ptr() as *const crate::arch::__m128i), + crate::arch::_mm_loadu_si128($blocks[1].as_ptr() as *const crate::arch::__m128i), + crate::arch::_mm_loadu_si128($blocks[2].as_ptr() as *const crate::arch::__m128i), + crate::arch::_mm_loadu_si128($blocks[3].as_ptr() as *const crate::arch::__m128i), + crate::arch::_mm_loadu_si128($blocks[4].as_ptr() as *const crate::arch::__m128i), + crate::arch::_mm_loadu_si128($blocks[5].as_ptr() as *const crate::arch::__m128i), + crate::arch::_mm_loadu_si128($blocks[6].as_ptr() as *const crate::arch::__m128i), + crate::arch::_mm_loadu_si128($blocks[7].as_ptr() as *const crate::arch::__m128i), ] } } macro_rules! store8 { ($blocks:expr, $b:expr) => { - _mm_storeu_si128($blocks[0].as_mut_ptr() as *mut __m128i, $b[0]); - _mm_storeu_si128($blocks[1].as_mut_ptr() as *mut __m128i, $b[1]); - _mm_storeu_si128($blocks[2].as_mut_ptr() as *mut __m128i, $b[2]); - _mm_storeu_si128($blocks[3].as_mut_ptr() as *mut __m128i, $b[3]); - _mm_storeu_si128($blocks[4].as_mut_ptr() as *mut __m128i, $b[4]); - _mm_storeu_si128($blocks[5].as_mut_ptr() as *mut __m128i, $b[5]); - _mm_storeu_si128($blocks[6].as_mut_ptr() as *mut __m128i, $b[6]); - _mm_storeu_si128($blocks[7].as_mut_ptr() as *mut __m128i, $b[7]); + crate::arch::_mm_storeu_si128($blocks[0].as_mut_ptr() as *mut crate::arch::__m128i, $b[0]); + crate::arch::_mm_storeu_si128($blocks[1].as_mut_ptr() as *mut crate::arch::__m128i, $b[1]); + crate::arch::_mm_storeu_si128($blocks[2].as_mut_ptr() as *mut crate::arch::__m128i, $b[2]); + crate::arch::_mm_storeu_si128($blocks[3].as_mut_ptr() as *mut crate::arch::__m128i, $b[3]); + crate::arch::_mm_storeu_si128($blocks[4].as_mut_ptr() as *mut crate::arch::__m128i, $b[4]); + crate::arch::_mm_storeu_si128($blocks[5].as_mut_ptr() as *mut crate::arch::__m128i, $b[5]); + crate::arch::_mm_storeu_si128($blocks[6].as_mut_ptr() as *mut crate::arch::__m128i, $b[6]); + crate::arch::_mm_storeu_si128($blocks[7].as_mut_ptr() as *mut crate::arch::__m128i, $b[7]); } } macro_rules! xor8 { ($b:expr, $key:expr) => { - $b[0] = _mm_xor_si128($b[0], $key); - $b[1] = _mm_xor_si128($b[1], $key); - $b[2] = _mm_xor_si128($b[2], $key); - $b[3] = _mm_xor_si128($b[3], $key); - $b[4] = _mm_xor_si128($b[4], $key); - $b[5] = _mm_xor_si128($b[5], $key); - $b[6] = _mm_xor_si128($b[6], $key); - $b[7] = _mm_xor_si128($b[7], $key); + $b[0] = crate::arch::_mm_xor_si128($b[0], $key); + $b[1] = crate::arch::_mm_xor_si128($b[1], $key); + $b[2] = crate::arch::_mm_xor_si128($b[2], $key); + $b[3] = crate::arch::_mm_xor_si128($b[3], $key); + $b[4] = crate::arch::_mm_xor_si128($b[4], $key); + $b[5] = crate::arch::_mm_xor_si128($b[5], $key); + $b[6] = crate::arch::_mm_xor_si128($b[6], $key); + $b[7] = crate::arch::_mm_xor_si128($b[7], $key); } } macro_rules! aesenc8 { ($b:expr, $key:expr) => { - $b[0] = _mm_aesenc_si128($b[0], $key); - $b[1] = _mm_aesenc_si128($b[1], $key); - $b[2] = _mm_aesenc_si128($b[2], $key); - $b[3] = _mm_aesenc_si128($b[3], $key); - $b[4] = _mm_aesenc_si128($b[4], $key); - $b[5] = _mm_aesenc_si128($b[5], $key); - $b[6] = _mm_aesenc_si128($b[6], $key); - $b[7] = _mm_aesenc_si128($b[7], $key); + $b[0] = crate::arch::_mm_aesenc_si128($b[0], $key); + $b[1] = crate::arch::_mm_aesenc_si128($b[1], $key); + $b[2] = crate::arch::_mm_aesenc_si128($b[2], $key); + $b[3] = crate::arch::_mm_aesenc_si128($b[3], $key); + $b[4] = crate::arch::_mm_aesenc_si128($b[4], $key); + $b[5] = crate::arch::_mm_aesenc_si128($b[5], $key); + $b[6] = crate::arch::_mm_aesenc_si128($b[6], $key); + $b[7] = crate::arch::_mm_aesenc_si128($b[7], $key); } } macro_rules! aesenclast8 { ($b:expr, $key:expr) => { - $b[0] = _mm_aesenclast_si128($b[0], $key); - $b[1] = _mm_aesenclast_si128($b[1], $key); - $b[2] = _mm_aesenclast_si128($b[2], $key); - $b[3] = _mm_aesenclast_si128($b[3], $key); - $b[4] = _mm_aesenclast_si128($b[4], $key); - $b[5] = _mm_aesenclast_si128($b[5], $key); - $b[6] = _mm_aesenclast_si128($b[6], $key); - $b[7] = _mm_aesenclast_si128($b[7], $key); + $b[0] = crate::arch::_mm_aesenclast_si128($b[0], $key); + $b[1] = crate::arch::_mm_aesenclast_si128($b[1], $key); + $b[2] = crate::arch::_mm_aesenclast_si128($b[2], $key); + $b[3] = crate::arch::_mm_aesenclast_si128($b[3], $key); + $b[4] = crate::arch::_mm_aesenclast_si128($b[4], $key); + $b[5] = crate::arch::_mm_aesenclast_si128($b[5], $key); + $b[6] = crate::arch::_mm_aesenclast_si128($b[6], $key); + $b[7] = crate::arch::_mm_aesenclast_si128($b[7], $key); } } macro_rules! aesdec8 { ($b:expr, $key:expr) => { - $b[0] = _mm_aesdec_si128($b[0], $key); - $b[1] = _mm_aesdec_si128($b[1], $key); - $b[2] = _mm_aesdec_si128($b[2], $key); - $b[3] = _mm_aesdec_si128($b[3], $key); - $b[4] = _mm_aesdec_si128($b[4], $key); - $b[5] = _mm_aesdec_si128($b[5], $key); - $b[6] = _mm_aesdec_si128($b[6], $key); - $b[7] = _mm_aesdec_si128($b[7], $key); + $b[0] = crate::arch::_mm_aesdec_si128($b[0], $key); + $b[1] = crate::arch::_mm_aesdec_si128($b[1], $key); + $b[2] = crate::arch::_mm_aesdec_si128($b[2], $key); + $b[3] = crate::arch::_mm_aesdec_si128($b[3], $key); + $b[4] = crate::arch::_mm_aesdec_si128($b[4], $key); + $b[5] = crate::arch::_mm_aesdec_si128($b[5], $key); + $b[6] = crate::arch::_mm_aesdec_si128($b[6], $key); + $b[7] = crate::arch::_mm_aesdec_si128($b[7], $key); } } macro_rules! aesdeclast8 { ($b:expr, $key:expr) => { - $b[0] = _mm_aesdeclast_si128($b[0], $key); - $b[1] = _mm_aesdeclast_si128($b[1], $key); - $b[2] = _mm_aesdeclast_si128($b[2], $key); - $b[3] = _mm_aesdeclast_si128($b[3], $key); - $b[4] = _mm_aesdeclast_si128($b[4], $key); - $b[5] = _mm_aesdeclast_si128($b[5], $key); - $b[6] = _mm_aesdeclast_si128($b[6], $key); - $b[7] = _mm_aesdeclast_si128($b[7], $key); + $b[0] = crate::arch::_mm_aesdeclast_si128($b[0], $key); + $b[1] = crate::arch::_mm_aesdeclast_si128($b[1], $key); + $b[2] = crate::arch::_mm_aesdeclast_si128($b[2], $key); + $b[3] = crate::arch::_mm_aesdeclast_si128($b[3], $key); + $b[4] = crate::arch::_mm_aesdeclast_si128($b[4], $key); + $b[5] = crate::arch::_mm_aesdeclast_si128($b[5], $key); + $b[6] = crate::arch::_mm_aesdeclast_si128($b[6], $key); + $b[7] = crate::arch::_mm_aesdeclast_si128($b[7], $key); } } diff --git a/aes/aesni/tests/ctr.rs b/aes/aesni/tests/ctr.rs index 9bfe5f41..044da3e3 100644 --- a/aes/aesni/tests/ctr.rs +++ b/aes/aesni/tests/ctr.rs @@ -1,7 +1,5 @@ #![cfg(feature = "ctr")] -extern crate aesni; -#[macro_use] extern crate stream_cipher; - +use stream_cipher::{new_sync_test, new_seek_test}; use aesni::{Aes128Ctr, Aes256Ctr}; // Random tests generated by OpenSSL diff --git a/aes/aesni/tests/mod.rs b/aes/aesni/tests/mod.rs index 2508f4ed..4810b5af 100644 --- a/aes/aesni/tests/mod.rs +++ b/aes/aesni/tests/mod.rs @@ -2,9 +2,7 @@ //! https://www.cosic.esat.kuleuven.be/nessie/testvectors/ #![no_std] #![cfg(any(target_arch = "x86_64", target_arch = "x86"))] -extern crate aesni; -#[macro_use] -extern crate block_cipher_trait; +use block_cipher_trait::new_test; new_test!(aes128_test, "aes128", aesni::Aes128); new_test!(aes192_test, "aes192", aesni::Aes192);