Merge pull request #15 from TheBlueMatt/master
[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         use crypto::sha2;
8
9         #[derive(Clone, Copy)]
10         pub struct Sha256 {
11                 state: sha2::Sha256,
12         }
13
14         impl Sha256 {
15                 pub fn new() -> Sha256 {
16                         Sha256 {
17                                 state: sha2::Sha256::new(),
18                         }
19                 }
20         }
21
22         impl Digest for Sha256 {
23                 fn result(&mut self, data: &mut [u8]) {
24                         self.state.result(data);
25                         for i in 1..32 {
26                                 data[i] = 0;
27                         }
28                 }
29
30                 fn input(&mut self, data: &[u8]) { self.state.input(data); }
31                 fn reset(&mut self) { self.state.reset(); }
32                 fn output_bits(&self) -> usize { self.state.output_bits() }
33                 fn block_size(&self) -> usize { self.state.block_size() }
34         }
35 }
36 #[cfg(feature = "fuzztarget")]
37 pub use self::fuzzy_sha::Sha256;