diff --git a/fuzz/Cargo.toml b/fuzz/Cargo.toml index 8b74839..ec3324b 100644 --- a/fuzz/Cargo.toml +++ b/fuzz/Cargo.toml @@ -11,7 +11,8 @@ cargo-fuzz = true [dependencies] rand = "0.6.1" rand_pcg = "0.1.1" -ring = "0.13.5" +sha2 = "0.10.6" + [dependencies.base64] path = ".." [dependencies.libfuzzer-sys] diff --git a/fuzz/fuzzers/roundtrip_no_pad.rs b/fuzz/fuzzers/roundtrip_no_pad.rs index 813fcf6..d5ff485 100644 --- a/fuzz/fuzzers/roundtrip_no_pad.rs +++ b/fuzz/fuzzers/roundtrip_no_pad.rs @@ -3,12 +3,12 @@ extern crate libfuzzer_sys; extern crate base64; -use base64::engine::fast_portable; +use base64::engine::{self, fast_portable}; fuzz_target!(|data: &[u8]| { let config = fast_portable::FastPortableConfig::new() .with_encode_padding(false) - .with_decode_padding_mode(fast_portable::DecodePaddingMode::RequireNone); + .with_decode_padding_mode(engine::DecodePaddingMode::RequireNone); let engine = fast_portable::FastPortable::from(&base64::alphabet::STANDARD, config); let encoded = base64::encode_engine(&data, &engine); diff --git a/fuzz/fuzzers/utils.rs b/fuzz/fuzzers/utils.rs index 0e7e190..0158032 100644 --- a/fuzz/fuzzers/utils.rs +++ b/fuzz/fuzzers/utils.rs @@ -1,18 +1,20 @@ extern crate rand; extern crate rand_pcg; -extern crate ring; +extern crate sha2; -use base64::{alphabet, engine::fast_portable}; +use base64::{alphabet, engine::{self, fast_portable}}; use self::rand::{Rng, SeedableRng}; use self::rand_pcg::Pcg32; -use self::ring::digest; +use self::sha2::Digest as _; pub fn random_engine(data: &[u8]) -> fast_portable::FastPortable { // use sha256 of data as rng seed so it's repeatable - let sha = digest::digest(&digest::SHA256, data); + let mut hasher = sha2::Sha256::new(); + hasher.update(data); + let sha = hasher.finalize(); let mut seed: [u8; 16] = [0; 16]; - seed.copy_from_slice(&sha.as_ref()[0..16]); + seed.copy_from_slice(&sha.as_slice()[0..16]); let mut rng = Pcg32::from_seed(seed); @@ -24,9 +26,9 @@ pub fn random_engine(data: &[u8]) -> fast_portable::FastPortable { let encode_padding = rng.gen(); let decode_padding = if encode_padding { - fast_portable::DecodePaddingMode::RequireCanonical + engine::DecodePaddingMode::RequireCanonical } else { - fast_portable::DecodePaddingMode::RequireNone + engine::DecodePaddingMode::RequireNone }; let config = fast_portable::FastPortableConfig::new() .with_encode_padding(encode_padding)