diff --git a/cmd/lotus-shed/cid.go b/cmd/lotus-shed/cid.go new file mode 100644 index 000000000..7839ec601 --- /dev/null +++ b/cmd/lotus-shed/cid.go @@ -0,0 +1,48 @@ +package main + +import ( + "encoding/base64" + "encoding/hex" + "fmt" + + "github.com/urfave/cli/v2" + + "github.com/ipfs/go-cid" + mh "github.com/multiformats/go-multihash" +) + +var cidCmd = &cli.Command{ + Name: "cid", + Subcommands: cli.Commands{ + cidIdCmd, + }, +} + +var cidIdCmd = &cli.Command{ + Name: "id", + Usage: "create identity CID from hex or base64 data", + Action: func(cctx *cli.Context) error { + if !cctx.Args().Present() { + return fmt.Errorf("must specify data") + } + + dec, err := hex.DecodeString(cctx.Args().First()) + if err != nil { + dec, err = base64.StdEncoding.DecodeString(cctx.Args().First()) + if err != nil { + return err + } + + } + + builder := cid.V1Builder{Codec: cid.Raw, MhType: mh.IDENTITY} + + c, err := builder.Sum(dec) + if err != nil { + return err + } + + fmt.Println(c) + return nil + }, +} diff --git a/cmd/lotus-shed/main.go b/cmd/lotus-shed/main.go index 33c7a159c..5da5c0188 100644 --- a/cmd/lotus-shed/main.go +++ b/cmd/lotus-shed/main.go @@ -48,6 +48,7 @@ func main() { msgCmd, electionCmd, rpcCmd, + cidCmd, } app := &cli.App{