Sha256: 1cbabc651645c1e781d31825791132b4e3741f426e99d7e40988e2a5ee49bddd
Contents?: true
Size: 1.97 KB
Versions: 39
Compression:
Stored size: 1.97 KB
Contents
use crate::{Digest, FixedOutput, FixedOutputReset, HashMarker, Update}; use core::fmt::Debug; /// Fixed-output resettable digest test via the `Digest` trait pub fn fixed_reset_test<D>(input: &[u8], output: &[u8]) -> Option<&'static str> where D: FixedOutputReset + Debug + Clone + Default + Update + HashMarker, { let mut hasher = D::new(); // Test that it works when accepting the message all at once hasher.update(input); let mut hasher2 = hasher.clone(); if hasher.finalize()[..] != output[..] { return Some("whole message"); } // Test if reset works correctly hasher2.reset(); hasher2.update(input); if hasher2.finalize_reset()[..] != output[..] { return Some("whole message after reset"); } // Test that it works when accepting the message in chunks for n in 1..core::cmp::min(17, input.len()) { let mut hasher = D::new(); for chunk in input.chunks(n) { hasher.update(chunk); hasher2.update(chunk); } if hasher.finalize()[..] != output[..] { return Some("message in chunks"); } if hasher2.finalize_reset()[..] != output[..] { return Some("message in chunks"); } } None } /// Variable-output resettable digest test pub fn fixed_test<D>(input: &[u8], output: &[u8]) -> Option<&'static str> where D: FixedOutput + Default + Debug + Clone, { let mut hasher = D::default(); // Test that it works when accepting the message all at once hasher.update(input); if hasher.finalize_fixed()[..] != output[..] { return Some("whole message"); } // Test that it works when accepting the message in chunks for n in 1..core::cmp::min(17, input.len()) { let mut hasher = D::default(); for chunk in input.chunks(n) { hasher.update(chunk); } if hasher.finalize_fixed()[..] != output[..] { return Some("message in chunks"); } } None }
Version data entries
39 entries across 39 versions & 1 rubygems