mithril_common/crypto_helper/codec/
bech32.rs1use anyhow::Context;
2use bech32::{self, Bech32, Hrp};
3
4use crate::StdResult;
5
6pub fn encode_bech32(human_readable_part: &str, data: &[u8]) -> StdResult<String> {
8 let human_readable_part = Hrp::parse(human_readable_part)
9 .with_context(|| format!("Failed to parse HRP: '{human_readable_part}'"))?;
10 bech32::encode::<Bech32>(human_readable_part, data)
11 .with_context(|| format!("Failed to encode HRP to bech32: '{human_readable_part}'"))
12}
13
14#[cfg(test)]
15mod tests {
16 use hex::FromHex;
17
18 use super::encode_bech32;
19
20 #[test]
21 fn test_bech32_encode() {
22 let hrp = "pool";
23 let data =
24 Vec::from_hex("edfa208d441511f9595ba80e8f3a7b07b6a80cbc9dda9d8e9d1dc039").unwrap();
25 let encoded_data = encode_bech32(hrp, &data).unwrap();
26 let expected_encoded_data =
27 "pool1ahazpr2yz5gljk2m4q8g7wnmq7m2sr9unhdfmr5arhqrjnntwdz".to_string();
28
29 assert_eq!(expected_encoded_data, encoded_data);
30 }
31}