Stub out Sha256 calls when fuzzing
[rust-lightning] / src / util / sha2.rs
diff --git a/src/util/sha2.rs b/src/util/sha2.rs
new file mode 100644 (file)
index 0000000..31616f5
--- /dev/null
@@ -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;