From 4d35cd1d99bbc9fdcd282e10f0c769b883c9cb90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D1=80=D1=82=D1=91=D0=BC=20=D0=9F=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=BE=D0=B2=20=5BArtyom=20Pavlov=5D?= Date: Fri, 21 Mar 2025 19:23:21 +0300 Subject: [PATCH] aead: split `new_test!` into `new_pass_test!` and `new_fail_test!` --- aead/src/dev.rs | 55 ++++++++++++++++++++++--------- aead/tests/data/postfix.blb | Bin 208 -> 0 bytes aead/tests/data/postfix_fail.blb | Bin 0 -> 116 bytes aead/tests/data/postfix_pass.blb | Bin 0 -> 119 bytes aead/tests/data/prefix.blb | Bin 208 -> 0 bytes aead/tests/data/prefix_fail.blb | Bin 0 -> 116 bytes aead/tests/data/prefix_pass.blb | Bin 0 -> 119 bytes aead/tests/dummy.rs | 11 +++++-- 8 files changed, 48 insertions(+), 18 deletions(-) delete mode 100644 aead/tests/data/postfix.blb create mode 100644 aead/tests/data/postfix_fail.blb create mode 100644 aead/tests/data/postfix_pass.blb delete mode 100644 aead/tests/data/prefix.blb create mode 100644 aead/tests/data/prefix_fail.blb create mode 100644 aead/tests/data/prefix_pass.blb diff --git a/aead/src/dev.rs b/aead/src/dev.rs index f216b72cc..65eecdd87 100644 --- a/aead/src/dev.rs +++ b/aead/src/dev.rs @@ -78,39 +78,64 @@ pub fn run_fail_test( } } -/// Define AEAD test +/// Define AEAD test for passing test vectors #[macro_export] -macro_rules! new_test { +macro_rules! new_pass_test { ($name:ident, $test_name:expr, $cipher:ty $(,)?) => { #[test] fn $name() { use $crate::KeyInit; - use $crate::dev::blobby::Blob6Iterator; + use $crate::dev::blobby::Blob5Iterator; let data = include_bytes!(concat!("data/", $test_name, ".blb")); - for (i, row) in Blob6Iterator::new(data).unwrap().enumerate() { - let [key, nonce, aad, pt, ct, status] = row.unwrap(); + for (i, row) in Blob5Iterator::new(data).unwrap().enumerate() { + let [key, nonce, aad, pt, ct] = row.unwrap(); let key = key.try_into().expect("wrong key size"); let nonce = nonce.try_into().expect("wrong nonce size"); let cipher = <$cipher as KeyInit>::new(key); - - let res = match status { - [0] => $crate::dev::run_fail_test(&cipher, nonce, aad, ct), - [1] => $crate::dev::run_pass_test(&cipher, nonce, aad, pt, ct), - _ => panic!("invalid value for pass flag"), - }; - let mut pass = status[0] == 1; + let res = $crate::dev::run_pass_test(&cipher, nonce, aad, pt, ct); if let Err(reason) = res { panic!( "\n\ - Failed test #{i}\n\ + Failed (pass) test #{i}\n\ reason:\t{reason:?}\n\ key:\t{key:?}\n\ nonce:\t{nonce:?}\n\ aad:\t{aad:?}\n\ plaintext:\t{pt:?}\n\ - ciphertext:\t{ct:?}\n\ - pass:\t{pass}\n" + ciphertext:\t{ct:?}\n" + ); + } + } + } + }; +} + +/// Define AEAD test for failing test vectors +#[macro_export] +macro_rules! new_fail_test { + ($name:ident, $test_name:expr, $cipher:ty $(,)?) => { + #[test] + fn $name() { + use $crate::KeyInit; + use $crate::dev::blobby::Blob4Iterator; + + let data = include_bytes!(concat!("data/", $test_name, ".blb")); + for (i, row) in Blob4Iterator::new(data).unwrap().enumerate() { + let [key, nonce, aad, ct] = row.unwrap(); + let key = key.try_into().expect("wrong key size"); + let nonce = nonce.try_into().expect("wrong nonce size"); + let cipher = <$cipher as KeyInit>::new(key); + let res = $crate::dev::run_fail_test(&cipher, nonce, aad, ct); + if let Err(reason) = res { + panic!( + "\n\ + Failed (fail) test #{i}\n\ + reason:\t{reason:?}\n\ + key:\t{key:?}\n\ + nonce:\t{nonce:?}\n\ + aad:\t{aad:?}\n\ + ciphertext:\t{ct:?}\n" ); } } diff --git a/aead/tests/data/postfix.blb b/aead/tests/data/postfix.blb deleted file mode 100644 index 97d850e1c6241381a17571282a85b3497574640d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 208 zcmZQ&WME_z(G2@~Cc&WKghJEx8$14235I=C?c&(_TcvX@v(6QcuwJ&?@q-ZcY!Kcv8&)U bDoai8a@qq@0XK02BOwzn09D{OaRVa&v)@iI diff --git a/aead/tests/data/postfix_fail.blb b/aead/tests/data/postfix_fail.blb new file mode 100644 index 0000000000000000000000000000000000000000..a9d49c92735e1c7cac17ee4baf70cb434c7508bc GIT binary patch literal 116 zcmZSP*!o+gb1t*a6^^i8xe2T8S!63i_HIWf$B7+4F9ut8oI2kM$@R-O50C*@(2LJ#7 diff --git a/aead/tests/data/prefix_fail.blb b/aead/tests/data/prefix_fail.blb new file mode 100644 index 0000000000000000000000000000000000000000..33f35374106ec27098fad877a97f5be2c6724f36 GIT binary patch literal 116 zcmZSP*!o+gb1t*a6^^i8xe2T8}q(N7FD)>1&V77RvZsp(x#d$7p^ E07FbKLjV8( literal 0 HcmV?d00001 diff --git a/aead/tests/data/prefix_pass.blb b/aead/tests/data/prefix_pass.blb new file mode 100644 index 0000000000000000000000000000000000000000..bd5b2532dc70f511a0cd7b80fc3379db3b51993d GIT binary patch literal 119 zcmZP;(G2@~Cc&WKghJEx8$14235I=C?c&(_TcvX@v(6QcuwJ