use cryptoutil::{add_bytes_to_bits, add_bytes_to_bits_tuple};
use digest::Digest;
+ use hex::FromHex;
/// Feed 1,000,000 'a's into the digest with varying input sizes and check that the result is
/// correct.
}
let result_str = digest.result_str();
+ let result_bytes = digest.result_bytes();
- assert!(expected == result_str);
+ assert_eq!(expected, result_str.as_slice());
+ assert_eq!(expected.from_hex().unwrap(), result_bytes);
}
// A normal addition - no overflow occurs
use std::vec;
+use hex::ToHex;
+
/**
* The Digest trait specifies an interface common to digest functions, such as SHA-1 and the SHA-2
/**
* Convenience function that retrieves the result of a digest as a
- * ~str in hexadecimal format.
+ * newly allocated vec of bytes.
*/
- fn result_str(&mut self) -> ~str {
+ fn result_bytes(&mut self) -> ~[u8] {
let mut buf = vec::from_elem((self.output_bits()+7)/8, 0u8);
self.result(buf);
- return to_hex(buf);
+ buf
}
-}
-fn to_hex(rr: &[u8]) -> ~str {
- let mut s = ~"";
- for b in rr.iter() {
- let hex = (*b as uint).to_str_radix(16u);
- if hex.len() == 1 {
- s.push_char('0');
- }
- s.push_str(hex);
+ /**
+ * Convenience function that retrieves the result of a digest as a
+ * ~str in hexadecimal format.
+ */
+ fn result_str(&mut self) -> ~str {
+ self.result_bytes().to_hex()
}
- return s;
}
+