OSDN Git Service

add package
[bytom/vapor.git] / vendor / github.com / mr-tron / base58 / base58 / alphabet.go
diff --git a/vendor/github.com/mr-tron/base58/base58/alphabet.go b/vendor/github.com/mr-tron/base58/base58/alphabet.go
new file mode 100644 (file)
index 0000000..a0f8878
--- /dev/null
@@ -0,0 +1,31 @@
+package base58
+
+// Alphabet is a a b58 alphabet.
+type Alphabet struct {
+       decode [128]int8
+       encode [58]byte
+}
+
+// NewAlphabet creates a new alphabet from the passed string.
+//
+// It panics if the passed string is not 58 bytes long or isn't valid ASCII.
+func NewAlphabet(s string) *Alphabet {
+       if len(s) != 58 {
+               panic("base58 alphabets must be 58 bytes long")
+       }
+       ret := new(Alphabet)
+       copy(ret.encode[:], s)
+       for i := range ret.decode {
+               ret.decode[i] = -1
+       }
+       for i, b := range ret.encode {
+               ret.decode[b] = int8(i)
+       }
+       return ret
+}
+
+// BTCAlphabet is the bitcoin base58 alphabet.
+var BTCAlphabet = NewAlphabet("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz")
+
+// FlickrAlphabet is the flickr base58 alphabet.
+var FlickrAlphabet = NewAlphabet("123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ")