Fix Display for hashes to include leading zeros.
Test: cargo test --features "insecure"
Change-Id: I45f0cd58ae0749fa3a4e856714bedd076f68a6ef
Reviewed-on: https://fuchsia-review.googlesource.com/c/mundane/+/410079
Reviewed-by: Joshua Liebow-Feeser <joshlf@google.com>
diff --git a/src/hash.rs b/src/hash.rs
index a3ab286..db4a118 100644
--- a/src/hash.rs
+++ b/src/hash.rs
@@ -286,7 +286,7 @@
impl Display for $digest_name {
fn fmt(&self, f: &mut Formatter) -> Result<(), fmt::Error> {
for byte in &self.0[..] {
- write!(f, "{:x}", byte)?;
+ write!(f, "{:02x}", byte)?;
}
Ok(())
}
@@ -4465,4 +4465,27 @@
),
];
}
+
+ #[test]
+ fn test_display() {
+ assert_eq!(
+ Sha256::hash(&[]).to_string(),
+ "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
+ );
+ assert_eq!(
+ Sha384::hash(&[]).to_string(),
+ "38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b"
+ );
+ assert_eq!(
+ Sha512::hash(&[]).to_string(),
+ "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e"
+ );
+
+ #[cfg(feature = "insecure")]
+ {
+ #[allow(deprecated)]
+ let hash = InsecureSha1::hash(&[]).to_string();
+ assert_eq!(hash, "da39a3ee5e6b4b0d3255bfef95601890afd80709");
+ }
+ }
}