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  }