dpp/util/
hash.rs

1use dashcore::hashes::{ripemd160, sha256, Hash};
2use sha2::{Digest, Sha256};
3
4pub fn hash_double_to_vec(payload: impl AsRef<[u8]>) -> Vec<u8> {
5    Sha256::digest(Sha256::digest(payload)).to_vec()
6}
7
8pub fn hash_double(payload: impl AsRef<[u8]>) -> [u8; 32] {
9    Sha256::digest(Sha256::digest(payload)).into()
10}
11
12pub fn hash_single(payload: impl AsRef<[u8]>) -> [u8; 32] {
13    Sha256::digest(payload).into()
14}
15
16pub fn hash_to_hex_string(payload: impl AsRef<[u8]>) -> String {
17    hex::encode(hash_double(payload))
18}
19
20pub fn ripemd160_sha256(data: &[u8]) -> [u8; 20] {
21    let hash = sha256::Hash::hash(data).to_byte_array();
22    ripemd160::Hash::hash(&hash).to_byte_array()
23}