OSDN Git Service

add package
[bytom/vapor.git] / vendor / github.com / multiformats / go-multihash / opts / coding.go
diff --git a/vendor/github.com/multiformats/go-multihash/opts/coding.go b/vendor/github.com/multiformats/go-multihash/opts/coding.go
new file mode 100644 (file)
index 0000000..0696102
--- /dev/null
@@ -0,0 +1,40 @@
+package opts
+
+import (
+       "encoding/base64"
+       "encoding/hex"
+       "fmt"
+
+       base58 "github.com/mr-tron/base58/base58"
+       mh "github.com/multiformats/go-multihash"
+)
+
+func Decode(encoding, digest string) (mh.Multihash, error) {
+       switch encoding {
+       case "raw":
+               return mh.Cast([]byte(digest))
+       case "hex":
+               return hex.DecodeString(digest)
+       case "base58":
+               return base58.Decode(digest)
+       case "base64":
+               return base64.StdEncoding.DecodeString(digest)
+       default:
+               return nil, fmt.Errorf("unknown encoding: %s", encoding)
+       }
+}
+
+func Encode(encoding string, hash mh.Multihash) (string, error) {
+       switch encoding {
+       case "raw":
+               return string(hash), nil
+       case "hex":
+               return hex.EncodeToString(hash), nil
+       case "base58":
+               return base58.Encode(hash), nil
+       case "base64":
+               return base64.StdEncoding.EncodeToString(hash), nil
+       default:
+               return "", fmt.Errorf("unknown encoding: %s", encoding)
+       }
+}