mithril_common/crypto_helper/codec/
bech32.rs

1use anyhow::anyhow;
2use bech32::{self, Bech32, Hrp};
3
4use crate::StdResult;
5
6/// Encode to bech32 given Human Readable Part (hrp) and data
7pub fn encode_bech32(human_readable_part: &str, data: &[u8]) -> StdResult<String> {
8    let human_readable_part = Hrp::parse(human_readable_part).map_err(|e| anyhow!(e))?;
9    bech32::encode::<Bech32>(human_readable_part, data).map_err(|e| anyhow!(e))
10}
11
12#[cfg(test)]
13mod tests {
14    use hex::FromHex;
15
16    use super::encode_bech32;
17
18    #[test]
19    fn test_bech32_encode() {
20        let hrp = "pool";
21        let data =
22            Vec::from_hex("edfa208d441511f9595ba80e8f3a7b07b6a80cbc9dda9d8e9d1dc039").unwrap();
23        let encoded_data = encode_bech32(hrp, &data).unwrap();
24        let expected_encoded_data =
25            "pool1ahazpr2yz5gljk2m4q8g7wnmq7m2sr9unhdfmr5arhqrjnntwdz".to_string();
26
27        assert_eq!(expected_encoded_data, encoded_data);
28    }
29}