Skip to content

Commit e2260b5

Browse files
authored
Merge pull request #36 from multiformats/feat/base36
Base36 implementation
2 parents ee5c233 + 158c1de commit e2260b5

File tree

5 files changed

+19
-2
lines changed

5 files changed

+19
-2
lines changed

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@ go 1.11
55
require (
66
github.com/mr-tron/base58 v1.1.0
77
github.com/multiformats/go-base32 v0.0.3
8+
github.com/multiformats/go-base36 v0.1.0
89
)

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,5 @@ github.com/mr-tron/base58 v1.1.0 h1:Y51FGVJ91WBqCEabAi5OPUz38eAx8DakuAm5svLcsfQ=
22
github.com/mr-tron/base58 v1.1.0/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8=
33
github.com/multiformats/go-base32 v0.0.3 h1:tw5+NhuwaOjJCC5Pp82QuXbrmLzWg7uxlMFp8Nq/kkI=
44
github.com/multiformats/go-base32 v0.0.3/go.mod h1:pLiuGC8y0QR3Ue4Zug5UzK9LjgbkL8NSQj0zQ5Nz/AA=
5+
github.com/multiformats/go-base36 v0.1.0 h1:JR6TyF7JjGd3m6FbLU2cOxhC0Li8z8dLNGQ89tUg4F4=
6+
github.com/multiformats/go-base36 v0.1.0/go.mod h1:kFGE83c6s80PklsHO9sRn2NCoffoRdUUOENyW/Vv6sM=

multibase.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77

88
b58 "github.com/mr-tron/base58/base58"
99
b32 "github.com/multiformats/go-base32"
10+
b36 "github.com/multiformats/go-base36"
1011
)
1112

1213
// Encoding identifies the type of base-encoding that a multibase is carrying.
@@ -29,8 +30,10 @@ const (
2930
Base32hexUpper = 'V'
3031
Base32hexPad = 't'
3132
Base32hexPadUpper = 'T'
32-
Base58Flickr = 'Z'
33+
Base36 = 'k'
34+
Base36Upper = 'K'
3335
Base58BTC = 'z'
36+
Base58Flickr = 'Z'
3437
Base64 = 'm'
3538
Base64url = 'u'
3639
Base64pad = 'M'
@@ -52,6 +55,8 @@ var EncodingToStr = map[Encoding]string{
5255
'V': "base32hexupper",
5356
't': "base32hexpad",
5457
'T': "base32hexpadupper",
58+
'k': "base36",
59+
'K': "base36upper",
5560
'z': "base58btc",
5661
'Z': "base58flickr",
5762
'm': "base64",
@@ -102,6 +107,10 @@ func Encode(base Encoding, data []byte) (string, error) {
102107
return string(Base32hexPad) + base32HexLowerPad.EncodeToString(data), nil
103108
case Base32hexPadUpper:
104109
return string(Base32hexPadUpper) + base32HexUpperPad.EncodeToString(data), nil
110+
case Base36:
111+
return string(Base36) + b36.EncodeToStringLc(data), nil
112+
case Base36Upper:
113+
return string(Base36Upper) + b36.EncodeToStringUc(data), nil
105114
case Base58BTC:
106115
return string(Base58BTC) + b58.EncodeAlphabet(data, b58.BTCAlphabet), nil
107116
case Base58Flickr:
@@ -149,6 +158,9 @@ func Decode(data string) (Encoding, []byte, error) {
149158
case Base32hexPad, Base32hexPadUpper:
150159
bytes, err := b32.HexEncoding.DecodeString(data[1:])
151160
return enc, bytes, err
161+
case Base36, Base36Upper:
162+
bytes, err := b36.DecodeString(data[1:])
163+
return enc, bytes, err
152164
case Base58BTC:
153165
bytes, err := b58.DecodeAlphabet(data[1:], b58.BTCAlphabet)
154166
return Base58BTC, bytes, err

multibase_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ var encodedSamples = map[Encoding]string{
3636
Base32hexUpper: "V8HIM6PBEEHP62R39F9II0PBMCLP7IT38D5N6E89144",
3737
Base32hexPad: "t8him6pbeehp62r39f9ii0pbmclp7it38d5n6e89144======",
3838
Base32hexPadUpper: "T8HIM6PBEEHP62R39F9II0PBMCLP7IT38D5N6E89144======",
39+
Base36: "km552ng4dabi4neu1oo8l4i5mndwmpc3mkukwtxy9",
40+
Base36Upper: "KM552NG4DABI4NEU1OO8L4I5MNDWMPC3MKUKWTXY9",
3941
Base58BTC: "z36UQrhJq9fNDS7DiAHM9YXqDHMPfr4EMArvt",
4042
Base58Flickr: "Z36tpRGiQ9Endr7dHahm9xwQdhmoER4emaRVT",
4143
Base64: "mRGVjZW50cmFsaXplIGV2ZXJ5dGhpbmchISE",

0 commit comments

Comments
 (0)