X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Futil%2Fsha2.rs;fp=src%2Futil%2Fsha2.rs;h=31616f507d66c9fd50d7484e2a5581597129f79a;hb=ab56b81acd9da3a697dfc37fc4cb43cd8fbb1a2c;hp=0000000000000000000000000000000000000000;hpb=d0a3d0f728ea8560e7df0d35db116e153b70ddb8;p=rust-lightning diff --git a/src/util/sha2.rs b/src/util/sha2.rs new file mode 100644 index 00000000..31616f50 --- /dev/null +++ b/src/util/sha2.rs @@ -0,0 +1,37 @@ +#[cfg(not(feature = "fuzztarget"))] +pub use crypto::sha2::Sha256; + +#[cfg(feature = "fuzztarget")] +mod fuzzy_sha { + use crypto::digest::Digest; + use crypto::sha2; + + #[derive(Clone, Copy)] + pub struct Sha256 { + state: sha2::Sha256, + } + + impl Sha256 { + pub fn new() -> Sha256 { + Sha256 { + state: sha2::Sha256::new(), + } + } + } + + impl Digest for Sha256 { + fn result(&mut self, data: &mut [u8]) { + self.state.result(data); + for i in 1..32 { + data[i] = 0; + } + } + + fn input(&mut self, data: &[u8]) { self.state.input(data); } + fn reset(&mut self) { self.state.reset(); } + fn output_bits(&self) -> usize { self.state.output_bits() } + fn block_size(&self) -> usize { self.state.block_size() } + } +} +#[cfg(feature = "fuzztarget")] +pub use self::fuzzy_sha::Sha256;