X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=fuzz%2Ffuzz_targets%2Fpeer_crypt_target.rs;h=0b82303f83b34eb81bad6d5f43f43ebde0452c68;hb=01ae452120c63383d37b12b1ace9066e101b78db;hp=b7287fb9be542852e3362fab44c44d110146d4b7;hpb=1d2774dd645914fb7a8fa467b098ae347c40242c;p=rust-lightning diff --git a/fuzz/fuzz_targets/peer_crypt_target.rs b/fuzz/fuzz_targets/peer_crypt_target.rs index b7287fb9..0b82303f 100644 --- a/fuzz/fuzz_targets/peer_crypt_target.rs +++ b/fuzz/fuzz_targets/peer_crypt_target.rs @@ -4,7 +4,6 @@ extern crate secp256k1; use lightning::ln::peer_channel_encryptor::PeerChannelEncryptor; use secp256k1::key::{PublicKey,SecretKey}; -use secp256k1::Secp256k1; #[inline] fn slice_to_be16(v: &[u8]) -> u16 { @@ -28,18 +27,21 @@ pub fn do_test(data: &[u8]) { } } - let secp_ctx = Secp256k1::new(); - let our_network_key = match SecretKey::from_slice(&secp_ctx, get_slice!(32)) { + let our_network_key = match SecretKey::from_slice(get_slice!(32)) { + Ok(key) => key, + Err(_) => return, + }; + let ephemeral_key = match SecretKey::from_slice(get_slice!(32)) { Ok(key) => key, Err(_) => return, }; let mut crypter = if get_slice!(1)[0] != 0 { - let their_pubkey = match PublicKey::from_slice(&secp_ctx, get_slice!(33)) { + let their_pubkey = match PublicKey::from_slice(get_slice!(33)) { Ok(key) => key, Err(_) => return, }; - let mut crypter = PeerChannelEncryptor::new_outbound(their_pubkey); + let mut crypter = PeerChannelEncryptor::new_outbound(their_pubkey, ephemeral_key); crypter.get_act_one(); match crypter.process_act_two(get_slice!(50), &our_network_key) { Ok(_) => {}, @@ -49,7 +51,7 @@ pub fn do_test(data: &[u8]) { crypter } else { let mut crypter = PeerChannelEncryptor::new_inbound(&our_network_key); - match crypter.process_act_one_with_key(get_slice!(50), &our_network_key) { + match crypter.process_act_one_with_keys(get_slice!(50), &our_network_key, ephemeral_key) { Ok(_) => {}, Err(_) => return, } @@ -77,11 +79,11 @@ pub fn do_test(data: &[u8]) { } #[cfg(feature = "afl")] -extern crate afl; +#[macro_use] extern crate afl; #[cfg(feature = "afl")] fn main() { - afl::read_stdio_bytes(|data| { - do_test(&data); + fuzz!(|data| { + do_test(data); }); } @@ -96,29 +98,12 @@ fn main() { } } +extern crate hex; #[cfg(test)] mod tests { - fn extend_vec_from_hex(hex: &str, out: &mut Vec) { - let mut b = 0; - for (idx, c) in hex.as_bytes().iter().enumerate() { - b <<= 4; - match *c { - b'A'...b'F' => b |= c - b'A' + 10, - b'a'...b'f' => b |= c - b'a' + 10, - b'0'...b'9' => b |= c - b'0', - _ => panic!("Bad hex"), - } - if (idx & 1) == 1 { - out.push(b); - b = 0; - } - } - } #[test] fn duplicate_crash() { - let mut a = Vec::new(); - extend_vec_from_hex("01", &mut a); - super::do_test(&a); + super::do_test(&::hex::decode("01").unwrap()); } }