github.com/gnolang/gno@v0.0.0-20240520182011-228e9d0192ce/tm2/pkg/bech32/bech32.go (about) 1 package bech32 2 3 import ( 4 "github.com/btcsuite/btcd/btcutil/bech32" 5 "github.com/gnolang/gno/tm2/pkg/errors" 6 ) 7 8 // ConvertAndEncode encodes []byte to bech32. 9 // DEPRECATED use Encode 10 func ConvertAndEncode(hrp string, data []byte) (string, error) { 11 converted, err := bech32.ConvertBits(data, 8, 5, true) 12 if err != nil { 13 return "", errors.Wrap(err, "encoding bech32 failed") 14 } 15 return bech32.Encode(hrp, converted) 16 } 17 18 func Encode(hrp string, data []byte) (string, error) { 19 return ConvertAndEncode(hrp, data) 20 } 21 22 // DecodeAndConvert decodes bech32 to []byte. 23 // DEPRECATED use Decode 24 func DecodeAndConvert(bech string) (string, []byte, error) { 25 hrp, data, err := bech32.DecodeNoLimit(bech) 26 if err != nil { 27 return "", nil, errors.Wrap(err, "decoding bech32 failed") 28 } 29 converted, err := bech32.ConvertBits(data, 5, 8, false) 30 if err != nil { 31 return "", nil, errors.Wrap(err, "decoding bech32 failed") 32 } 33 return hrp, converted, nil 34 } 35 36 func Decode(bech string) (string, []byte, error) { 37 return DecodeAndConvert(bech) 38 }