github.com/evdatsion/aphelion-dpos-bft@v0.32.1/libs/bech32/bech32.go (about) 1 package bech32 2 3 import ( 4 "github.com/btcsuite/btcutil/bech32" 5 "github.com/pkg/errors" 6 ) 7 8 //ConvertAndEncode converts from a base64 encoded byte string to base32 encoded byte string and then to bech32 9 func ConvertAndEncode(hrp string, data []byte) (string, error) { 10 converted, err := bech32.ConvertBits(data, 8, 5, true) 11 if err != nil { 12 return "", errors.Wrap(err, "encoding bech32 failed") 13 } 14 return bech32.Encode(hrp, converted) 15 16 } 17 18 //DecodeAndConvert decodes a bech32 encoded string and converts to base64 encoded bytes 19 func DecodeAndConvert(bech string) (string, []byte, error) { 20 hrp, data, err := bech32.Decode(bech) 21 if err != nil { 22 return "", nil, errors.Wrap(err, "decoding bech32 failed") 23 } 24 converted, err := bech32.ConvertBits(data, 5, 8, false) 25 if err != nil { 26 return "", nil, errors.Wrap(err, "decoding bech32 failed") 27 } 28 return hrp, converted, nil 29 }