xrpl_binary_codec/
hash.rs1use sha2::Digest;
2use sha2::Sha512;
3use xrpl_types::Hash256;
4
5pub const HASH_PREFIX_UNSIGNED_TRANSACTION_SINGLE: [u8; 4] = [0x53, 0x54, 0x58, 0x00];
7
8pub const HASH_PREFIX_SIGNED_TRANSACTION: [u8; 4] = [0x54, 0x58, 0x4E, 0x00];
10
11pub fn hash(prefix: [u8; 4], data: &[u8]) -> Hash256 {
13 let mut hasher = Sha512::new_with_prefix(prefix);
15 hasher.update(data);
16 let hash: [u8; 64] = hasher.finalize().into();
17 Hash256(hash[0..32].try_into().expect("length 64"))
18}