package module
v0.2.0 Latest Latest

This package is not in the latest version of its module.

Go to latest
Published: Mar 15, 2023 License: MIT Imports: 9 Imported by: 437



Travis CI

Implementation of multibase -self identifying base encodings- in Go.


go-multibase is a standard Go module which can be installed with:

go get


Contributions welcome. Please check out the issues.

Check out our contributing document for more information on how we work, and about contributing in general. Please be aware that all interactions related to multiformats are subject to the IPFS Code of Conduct.

Small note: If editing the README, please conform to the standard-readme specification.


MIT © 2016 Protocol Labs Inc.




View Source
const (
	Identity          = 0x00
	Base2             = '0'
	Base8             = '7'
	Base10            = '9'
	Base16            = 'f'
	Base16Upper       = 'F'
	Base32            = 'b'
	Base32Upper       = 'B'
	Base32pad         = 'c'
	Base32padUpper    = 'C'
	Base32hex         = 'v'
	Base32hexUpper    = 'V'
	Base32hexPad      = 't'
	Base32hexPadUpper = 'T'
	Base36            = 'k'
	Base36Upper       = 'K'
	Base58BTC         = 'z'
	Base58Flickr      = 'Z'
	Base64            = 'm'
	Base64url         = 'u'
	Base64pad         = 'M'
	Base64urlPad      = 'U'
	Base256Emoji      = '🚀'

These are the encodings specified in the standard, not are all supported yet


View Source
var EncodingToStr = map[Encoding]string{
	0x00:         "identity",
	'0':          "base2",
	'f':          "base16",
	'F':          "base16upper",
	'b':          "base32",
	'B':          "base32upper",
	'c':          "base32pad",
	'C':          "base32padupper",
	'v':          "base32hex",
	'V':          "base32hexupper",
	't':          "base32hexpad",
	'T':          "base32hexpadupper",
	'k':          "base36",
	'K':          "base36upper",
	'z':          "base58btc",
	'Z':          "base58flickr",
	'm':          "base64",
	'u':          "base64url",
	'M':          "base64pad",
	'U':          "base64urlpad",
	Base256Emoji: "base256emoji",

EncodingToStr is a map of the supported encoding, unsupported encoding specified in standard are left out

View Source
var Encodings = map[string]Encoding{}
View Source
var ErrUnsupportedEncoding = fmt.Errorf("selected encoding not supported")

ErrUnsupportedEncoding is returned when the selected encoding is not known or implemented.


func Encode

func Encode(base Encoding, data []byte) (string, error)

Encode encodes a given byte slice with the selected encoding and returns a multibase string (<encoding><base-encoded-string>). It will return an error if the selected base is not known.


type Encoder

type Encoder struct {
	// contains filtered or unexported fields

Encoder is a multibase encoding that is verified to be supported and supports an Encode method that does not return an error

func EncoderByName

func EncoderByName(str string) (Encoder, error)

EncoderByName creates an encoder from a string, the string can either be the multibase name or single character multibase prefix

func MustNewEncoder

func MustNewEncoder(base Encoding) Encoder

MustNewEncoder is like NewEncoder but will panic if the encoding is invalid.

func NewEncoder

func NewEncoder(base Encoding) (Encoder, error)

NewEncoder create a new Encoder from an Encoding

func (Encoder) Encode

func (p Encoder) Encode(data []byte) string

Encode encodes the multibase using the given Encoder.

func (Encoder) Encoding

func (p Encoder) Encoding() Encoding

type Encoding

type Encoding int

Encoding identifies the type of base-encoding that a multibase is carrying.

func Decode

func Decode(data string) (Encoding, []byte, error)

Decode takes a multibase string and decodes into a bytes buffer. It will return an error if the selected base is not known.


Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL