ex3-crypto 0.15.21

EX3 crypto crate.
Documentation
pub fn sha256(data: impl AsRef<[u8]>) -> [u8; 32] {
    use sha2::{Digest, Sha256};
    let mut sha = Sha256::new();
    sha.update(data);
    sha.finalize().into()
}

// #[cfg(test)]
// mod tests {
//     use super::sha256;
//     use bitcoin::consensus::encode;
//     use bitcoin::hashes::{sha256, Hash, HashEngine};
//     use bitcoin::secp256k1::ThirtyTwoByteHash;
//     #[test]
//     fn test_compute_hash() {
//         let data = b"Hello, world!";
//         let hash: [u8; 32] = sha256(data);
//         assert_eq!(
//             hash,
//             [
//                 49, 95, 91, 219, 118, 208, 120, 196, 59, 138, 192, 6, 78, 74, 1, 100, 97, 43, 31,
//                 206, 119, 200, 105, 52, 91, 252, 148, 199, 88, 148, 237, 211
//             ]
//         );
//     }
//     #[test]
//     fn test_compared_with_signed_msg_hash() {
//         let message = "HelloWorld";
//         let prefix = b"\x18Bitcoin Signed Message:\n";
//         let msg_len = encode::VarInt(message.len() as u64);
//         let mut prefixed_message = Vec::with_capacity(prefix.len() + msg_len.len() + message.len());
//         prefixed_message.extend_from_slice(prefix);
//         let _f: [u8; 1] = [0xFD];
//         let msg_len = message.len() as u8;
//         prefixed_message.extend_from_slice(&[msg_len]);
//         prefixed_message.extend_from_slice(message.as_bytes());
//         let mut engine = sha256::Hash::engine();
//         engine.input(&prefixed_message[..]);
//         let sha_1: [u8; 32] = sha256(prefixed_message.as_slice());
//         let sha_2: [u8; 32] = sha256(sha_1.as_slice());
//         let hash_2 = bitcoin::sign_message::signed_msg_hash(message);
//         assert_eq!(hex::encode(sha_2), hex::encode(hash_2.into_32()));
//     }
// }