2c9eab9321c92f7b2c04d1c083bded3b62c78089
[rust-lightning] / src / util / sha2.rs
1 #[cfg(not(feature = "fuzztarget"))]
2 pub use crypto::sha2::Sha256;
3
4 #[cfg(feature = "fuzztarget")]
5 mod fuzzy_sha {
6         use crypto::digest::Digest;
7
8         pub struct Sha256 {
9                 state: u8,
10         }
11
12         impl Sha256 {
13                 pub fn new() -> Sha256 {
14                         Sha256 {
15                                 state: 0,
16                         }
17                 }
18         }
19
20         impl Digest for Sha256 {
21                 fn result(&mut self, data: &mut [u8]) {
22                         data[0] = self.state;
23                         for i in 1..32 {
24                                 data[i] = 0;
25                         }
26                 }
27
28                 fn input(&mut self, data: &[u8]) { for i in data { self.state ^= i; } }
29                 fn reset(&mut self) { self.state = 0; }
30                 fn output_bits(&self) -> usize { 256 }
31                 fn block_size(&self) -> usize { 64 }
32         }
33 }
34 #[cfg(feature = "fuzztarget")]
35 pub use self::fuzzy_sha::Sha256;