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  }