1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
extern crate crypto_hash;
use self::crypto_hash::{Algorithm, Hasher};
use std::io::Write;
pub struct Sha256(Hasher);
impl Sha256 {
pub fn new() -> Sha256 {
let hasher = Hasher::new(Algorithm::SHA256);
Sha256(hasher)
}
pub fn update(&mut self, bytes: &[u8]) {
let _ = self.0.write_all(bytes);
}
pub fn finish(&mut self) -> [u8; 32] {
let mut ret = [0u8; 32];
let data = self.0.finish();
ret.copy_from_slice(&data[..]);
ret
}
}
impl Default for Sha256 {
fn default() -> Self {
Self::new()
}
}