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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//! # StreamSha
//! Streamed, resumable Secure Hashing Algorithm(SHA) library
//!
//! ## Example
//! ```rust
//! # extern crate streamsha;
//! use streamsha::Sha256;
//! use streamsha::traits::{
//!   StreamHasher, Resumable
//! };
//! # fn main() {
//! // Simple hashing
//! let mut hasher = Sha256::new();
//! hasher.update(b"pien");
//! hasher.update(b"paon");
//! let hash1 = hasher.finish();
//!
//! // Pause
//! let mut hasher1 = Sha256::new();
//! hasher1.update(b"pien");
//! let state1 = hasher1.pause();
//! 
//! // Resume on the other instance
//! let mut hasher2 = Sha256::resume(state1).unwrap();
//! hasher2.update(b"paon");
//! let hash2 = hasher2.finish();
//! 
//! assert_eq!(hash1, hash2);
//! # }
//! ```

#![no_std]
#[macro_use]
mod utils;
mod consts;
pub mod traits;
mod sha1;
mod sha256;
mod sha512;
pub mod hash_state;

mod arith;
pub use self::sha1::Sha1;
pub use self::sha256::Sha256;
pub use self::sha512::Sha512;