use sha2::Digest as _;
pub const PREIMAGE_SIZE: usize = 32;
pub fn sha256(input: &[u8]) -> [u8; 32] {
sha2::Sha256::new().chain_update(input).finalize().into()
}
pub type Preimage = [u8; PREIMAGE_SIZE];
pub fn preimage_random<R: rand::RngCore + rand::CryptoRng>(rng: &mut R) -> Preimage {
let mut preimage = [0u8; PREIMAGE_SIZE];
rng.fill_bytes(&mut preimage);
preimage
}
pub fn preimage_from_hex(s: &str) -> Result<Preimage, hex::FromHexError> {
let mut preimage = [0u8; PREIMAGE_SIZE];
hex::decode_to_slice(s, &mut preimage)?;
Ok(preimage)
}