blob: 11b9b9008ecc4e33d3787c9a3e3e9e2368d22ebb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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);
});
|