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 }, }