saa_common/
utils.rs

1use crate::{hashes::{ripemd160, sha256}, AuthError, String};
2use bech32::{hrp::Hrp, Bech32};
3
4
5pub fn pubkey_to_address(pubkey: &[u8], hrp: &str) -> Result<String, AuthError> {
6    let base32_addr = ripemd160(&sha256(pubkey));
7    let account: String = bech32::encode::<Bech32>(Hrp::parse(hrp)?, &base32_addr)?;
8    Ok(account)
9}
10
11
12#[cfg(feature = "wasm")]
13pub fn prefix_from_address(address: &str) -> String {
14    address.split("1").next().unwrap().to_string()
15}
16
17
18#[cfg(feature = "wasm")]
19pub fn pubkey_to_canonical(pubkey: &[u8]) -> crate::wasm::CanonicalAddr {
20    crate::wasm::CanonicalAddr::from(ripemd160(&sha256(pubkey))).into()
21}
22
23