aboutsummaryrefslogtreecommitdiff
path: root/fuzz/fuzz_targets/fuzz_target_1.rs
diff options
context:
space:
mode:
authorDaniel Schadt <kingdread@gmx.de>2026-04-28 17:59:45 +0200
committerDaniel Schadt <kingdread@gmx.de>2026-04-28 17:59:45 +0200
commitefacfd58a85f227f15178ede1658cef5072314ae (patch)
tree63ec885bcacf770b9d804838e6ef487ab3e9037d /fuzz/fuzz_targets/fuzz_target_1.rs
parent8c54e253451cc4c6578f86db25a057fbf702fd4b (diff)
downloadleona-0.1.0.tar.gz
leona-0.1.0.tar.bz2
leona-0.1.0.zip
add fuzz targetv0.1.0
Diffstat (limited to 'fuzz/fuzz_targets/fuzz_target_1.rs')
-rw-r--r--fuzz/fuzz_targets/fuzz_target_1.rs31
1 files changed, 31 insertions, 0 deletions
diff --git a/fuzz/fuzz_targets/fuzz_target_1.rs b/fuzz/fuzz_targets/fuzz_target_1.rs
new file mode 100644
index 0000000..11b9b90
--- /dev/null
+++ b/fuzz/fuzz_targets/fuzz_target_1.rs
@@ -0,0 +1,31 @@
+#![no_main]
+
+use arbitrary::Arbitrary;
+use libfuzzer_sys::fuzz_target;
+
+use leona::{KeyedHash, Lioness, ZeroIv};
+use chacha20::ChaCha20;
+use sha2::Sha256;
+use typenum::U16;
+
+type Cipher = Lioness<ZeroIv<ChaCha20>, KeyedHash<U16, Sha256>>;
+
+#[derive(Arbitrary, Debug)]
+struct Input<'a> {
+ key: &'a [u8],
+ prefix: [u8; 32],
+ data: &'a [u8],
+}
+
+fuzz_target!(|data: Input| {
+ let mut input = Vec::from(data.prefix);
+ input.extend(data.data);
+
+ let cipher = Cipher::new_dynamic(data.key);
+
+ cipher.encrypt(&mut input).unwrap();
+ cipher.decrypt(&mut input).unwrap();
+
+ assert_eq!(&input[..32], data.prefix);
+ assert_eq!(&input[32..], data.data);
+});