From 45eb023741c18c364d6fb45ac5eb711e0846e01e Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Sat, 19 Aug 2023 23:34:41 +0800 Subject: [PATCH] feat: updat eaegis test --- __crypto/aegis-test/Cargo.lock | 10 +++++++ __crypto/aegis-test/Cargo.toml | 1 + __crypto/aegis-test/README.md | 52 +++++++++++++++++++++++++++++++++ __crypto/aegis-test/src/main.rs | 13 ++++++++- 4 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 __crypto/aegis-test/README.md diff --git a/__crypto/aegis-test/Cargo.lock b/__crypto/aegis-test/Cargo.lock index df07a13..4c9f535 100644 --- a/__crypto/aegis-test/Cargo.lock +++ b/__crypto/aegis-test/Cargo.lock @@ -31,6 +31,7 @@ dependencies = [ "ascon-aead", "benchmark-simple", "chacha20poly1305", + "rocca", ] [[package]] @@ -297,6 +298,15 @@ dependencies = [ "getrandom", ] +[[package]] +name = "rocca" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b52de49d9fde07d1241f2156a8958b65c71ce615f2ff8256ae5106513eb1713e" +dependencies = [ + "aes", +] + [[package]] name = "rustc_version" version = "0.4.0" diff --git a/__crypto/aegis-test/Cargo.toml b/__crypto/aegis-test/Cargo.toml index 8411414..1c72944 100644 --- a/__crypto/aegis-test/Cargo.toml +++ b/__crypto/aegis-test/Cargo.toml @@ -11,3 +11,4 @@ aes-gcm = "0.10.2" ascon-aead = "0.4.2" benchmark-simple = "0.1.8" chacha20poly1305 = "0.10.1" +rocca = "0.3.0" diff --git a/__crypto/aegis-test/README.md b/__crypto/aegis-test/README.md new file mode 100644 index 0000000..ee30001 --- /dev/null +++ b/__crypto/aegis-test/README.md @@ -0,0 +1,52 @@ +Benchmark: + +```shell +$ cargo r --release +aegis128l : 10.63 G/s +aes256-gcm : 546.31 M/s +aes128-gcm : 597.56 M/s +chacha20-poly1305 : 1.03 G/s +ascon128a : 330.85 M/s +rocca : 307.84 M/s +``` + +```shell +$ RUSTFLAGS="-Ctarget-feature=+aes,+sse4.1" cargo r --release +aegis128l : 10.68 G/s +aes256-gcm : 554.68 M/s +aes128-gcm : 608.58 M/s +chacha20-poly1305 : 1.04 G/s +ascon128a : 337.74 M/s +rocca : 2.75 G/s +``` + +```shell +$ RUSTFLAGS="-Ctarget-feature=+aes,+sse4.2" cargo r --release +aegis128l : 10.74 G/s +aes256-gcm : 706.54 M/s +aes128-gcm : 797.11 M/s +chacha20-poly1305 : 1.04 G/s +ascon128a : 338.19 M/s +rocca : 6.05 G/s +``` + +```shell +$ RUSTFLAGS="-C target-cpu=native -Ctarget-feature=+aes,+pclmulqdq,+sse4.1" cargo r --release +aegis128l : 10.62 G/s +aes256-gcm : 695.29 M/s +aes128-gcm : 778.97 M/s +chacha20-poly1305 : 1.17 G/s +ascon128a : 345.49 M/s +rocca : 4.28 G/s +``` + + +```shell +$ RUSTFLAGS="-C target-cpu=native -Ctarget-feature=+aes,+pclmulqdq,+sse4.2" cargo r --release +aegis128l : 10.60 G/s +aes256-gcm : 692.76 M/s +aes128-gcm : 760.85 M/s +chacha20-poly1305 : 1.18 G/s +ascon128a : 344.81 M/s +rocca : 4.28 G/s +``` \ No newline at end of file diff --git a/__crypto/aegis-test/src/main.rs b/__crypto/aegis-test/src/main.rs index 23d9d4c..e9ccc02 100644 --- a/__crypto/aegis-test/src/main.rs +++ b/__crypto/aegis-test/src/main.rs @@ -5,6 +5,7 @@ use aes_gcm::{ }; use benchmark_simple::*; use chacha20poly1305::ChaCha20Poly1305; +use rocca::Rocca; fn test_aes256gcm(m: &mut [u8]) { let key = aes_gcm::Key::::from_slice(&[0u8; 32]); @@ -43,12 +44,19 @@ fn test_aegis128l(m: &mut [u8]) { state.encrypt_in_place(m, &[]); } +fn test_rocca(m: &mut [u8]) { + let key = [0u8; 32]; + let nonce = [0u8; 16]; + let state = Rocca::new(&nonce, &key); + state.encrypt_in_place(m, &[]); +} + fn main() { let bench = Bench::new(); let mut m = vec![0xd0u8; 16384]; let options = &Options { - iterations: 10_000, // 100_000 > 10_000 + iterations: 10_000, // 100_000 -> 10_000 -> 1_000 warmup_iterations: 1_000, min_samples: 5, max_samples: 10, @@ -70,4 +78,7 @@ fn main() { let res = bench.run(options, || test_ascon128a(&mut m)); println!("ascon128a : {}", res.throughput(m.len() as _)); + + let res = bench.run(options, || test_rocca(&mut m)); + println!("rocca : {}", res.throughput(m.len() as _)); } \ No newline at end of file