diff options
| author | Jack O'Connor <[email protected]> | 2020-06-14 14:08:08 -0400 |
|---|---|---|
| committer | Jack O'Connor <[email protected]> | 2020-06-14 14:35:47 -0400 |
| commit | 4c41a893a00a3ebe7b24529531ccf96d8593a57c (patch) | |
| tree | 169fcd3058e03d341ea1e275d009f81f3d6f21d8 /src/traits.rs | |
| parent | 1ecb14ce34790bb7b882449c77c36131af61add6 (diff) | |
a little bit of cleanup and more testing
Diffstat (limited to 'src/traits.rs')
| -rw-r--r-- | src/traits.rs | 44 |
1 files changed, 38 insertions, 6 deletions
diff --git a/src/traits.rs b/src/traits.rs index d49b5e3..9704e01 100644 --- a/src/traits.rs +++ b/src/traits.rs @@ -34,14 +34,12 @@ impl digest::FixedOutput for Hasher { #[inline] fn finalize_into(self, out: &mut GenericArray<u8, Self::OutputSize>) { - let bytes = self.finalize(); - out.as_mut_slice().clone_from_slice(bytes.as_bytes()); + out.copy_from_slice(self.finalize().as_bytes()); } + #[inline] fn finalize_into_reset(&mut self, out: &mut GenericArray<u8, Self::OutputSize>) { - let bytes = self.finalize(); - out.as_mut_slice().clone_from_slice(bytes.as_bytes()); - + out.copy_from_slice(self.finalize().as_bytes()); self.reset(); } } @@ -54,6 +52,7 @@ impl digest::ExtendableOutput for Hasher { Hasher::finalize_xof(&self) } + #[inline] fn finalize_xof_reset(&mut self) -> Self::Reader { let reader = Hasher::finalize_xof(self); self.reset(); @@ -99,6 +98,8 @@ impl crypto_mac::Mac for Hasher { #[cfg(test)] mod test { + use super::*; + #[test] fn test_digest_traits() { // Inherent methods. @@ -121,11 +122,42 @@ mod test { let out2 = digest::Digest::finalize(hasher2.clone()); let mut xof2 = [0; 301]; digest::XofReader::read( - &mut digest::ExtendableOutput::finalize_xof(hasher2), + &mut digest::ExtendableOutput::finalize_xof(hasher2.clone()), &mut xof2, ); assert_eq!(out1.as_bytes(), &out2[..]); assert_eq!(xof1[..], xof2[..]); + + // Again with the resetting variants. + let mut hasher3: crate::Hasher = digest::Digest::new(); + digest::Digest::update(&mut hasher3, b"foobarbaz"); + let mut out3 = [0; 32]; + digest::FixedOutput::finalize_into_reset( + &mut hasher3, + GenericArray::from_mut_slice(&mut out3), + ); + digest::Digest::update(&mut hasher3, b"foobarbaz"); + let mut out4 = [0; 32]; + digest::FixedOutput::finalize_into_reset( + &mut hasher3, + GenericArray::from_mut_slice(&mut out4), + ); + digest::Digest::update(&mut hasher3, b"foobarbaz"); + let mut xof3 = [0; 301]; + digest::XofReader::read( + &mut digest::ExtendableOutput::finalize_xof_reset(&mut hasher3), + &mut xof3, + ); + digest::Digest::update(&mut hasher3, b"foobarbaz"); + let mut xof4 = [0; 301]; + digest::XofReader::read( + &mut digest::ExtendableOutput::finalize_xof_reset(&mut hasher3), + &mut xof4, + ); + assert_eq!(out1.as_bytes(), &out3[..]); + assert_eq!(out1.as_bytes(), &out4[..]); + assert_eq!(xof1[..], xof3[..]); + assert_eq!(xof1[..], xof4[..]); } #[test] |
