--- /dev/null
+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)
+ }
+}