blob: 96d506039ab7d91106ecc28cab04c2b747bd0925 [file] [log] [blame]
#[macro_use]
extern crate criterion;
use xts_mode::{get_tweak_default, Xts128};
use aes::Aes128;
use cipher::NewBlockCipher;
use criterion::Criterion;
use rand::RngCore;
fn encryption_128(criterion: &mut Criterion) {
let mut group = criterion.benchmark_group("xts 128");
let mut rng = rand::thread_rng();
let mut key = [0; 32];
rng.fill_bytes(&mut key);
let cipher_1 = Aes128::new_from_slice(&key[..16]).unwrap();
let cipher_2 = Aes128::new_from_slice(&key[16..]).unwrap();
let xts = Xts128::<Aes128>::new(cipher_1, cipher_2);
let mut buffer = Vec::new();
buffer.resize(16, 0);
rng.fill_bytes(&mut buffer);
assert_eq!(buffer.len(), 16);
group.bench_function("sector size 16 B", |benchmark| {
let mut i = 0;
benchmark.iter(|| {
let tweak = get_tweak_default(i);
xts.encrypt_sector(&mut buffer, tweak);
i = i.wrapping_add(1);
})
});
buffer.resize(64, 0);
rng.fill_bytes(&mut buffer);
assert_eq!(buffer.len(), 64);
group.bench_function("sector size 64 B", |benchmark| {
let mut i = 0;
benchmark.iter(|| {
let tweak = get_tweak_default(i);
xts.encrypt_sector(&mut buffer, tweak);
i = i.wrapping_add(1);
})
});
buffer.resize(256, 0);
rng.fill_bytes(&mut buffer);
assert_eq!(buffer.len(), 256);
group.bench_function("sector size 256 B", |benchmark| {
let mut i = 0;
benchmark.iter(|| {
let tweak = get_tweak_default(i);
xts.encrypt_sector(&mut buffer, tweak);
i = i.wrapping_add(1);
})
});
buffer.resize(1024, 0);
rng.fill_bytes(&mut buffer);
assert_eq!(buffer.len(), 1024);
group.bench_function("sector size 1024 B", |benchmark| {
benchmark.iter(|| {
xts.encrypt_area(&mut buffer, 0x200, 0, get_tweak_default);
})
});
buffer.resize(8192, 0);
rng.fill_bytes(&mut buffer);
assert_eq!(buffer.len(), 8192);
group.bench_function("sector size 8192 B", |benchmark| {
benchmark.iter(|| {
xts.encrypt_area(&mut buffer, 0x200, 0, get_tweak_default);
})
});
buffer.resize(16384, 0);
rng.fill_bytes(&mut buffer);
assert_eq!(buffer.len(), 16384);
group.bench_function("sector size 16384 B", |benchmark| {
// let mut i = 0;
benchmark.iter(|| {
// let tweak = get_tweak_default(i);
xts.encrypt_area(&mut buffer, 0x200, 0, get_tweak_default);
// xts.encrypt_sector(&mut buffer, tweak);
// i = i.wrapping_add(1);
})
});
}
criterion_group!(benches, encryption_128);
criterion_main!(benches);