package commands import ( "os" "github.com/spf13/cobra" jww "github.com/spf13/jwalterweatherman" "github.com/vapor/crypto/ed25519/chainkd" "github.com/vapor/util" ) var createKeyCmd = &cobra.Command{ Use: "create-key ", Short: "Create a key", Args: cobra.ExactArgs(2), Run: func(cmd *cobra.Command, args []string) { var key = struct { Alias string `json:"alias"` Password string `json:"password"` }{Alias: args[0], Password: args[1]} data, exitCode := util.ClientCall("/create-key", &key) if exitCode != util.Success { os.Exit(exitCode) } printJSON(data) }, } var deleteKeyCmd = &cobra.Command{ Use: "delete-key ", Short: "Delete a key", Args: cobra.ExactArgs(2), Run: func(cmd *cobra.Command, args []string) { xpub := new(chainkd.XPub) if err := xpub.UnmarshalText([]byte(args[0])); err != nil { jww.ERROR.Println("delete-key:", err) os.Exit(util.ErrLocalExe) } var key = struct { Password string XPub chainkd.XPub `json:"xpub"` }{XPub: *xpub, Password: args[1]} if _, exitCode := util.ClientCall("/delete-key", &key); exitCode != util.Success { os.Exit(exitCode) } jww.FEEDBACK.Println("Successfully delete key") }, } var listKeysCmd = &cobra.Command{ Use: "list-keys", Short: "List the existing keys", Args: cobra.NoArgs, Run: func(cmd *cobra.Command, args []string) { data, exitCode := util.ClientCall("/list-keys") if exitCode != util.Success { os.Exit(exitCode) } printJSONList(data) }, } var resetKeyPwdCmd = &cobra.Command{ Use: "reset-key-password ", Short: "Reset key password", Args: cobra.ExactArgs(3), Run: func(cmd *cobra.Command, args []string) { xpub := new(chainkd.XPub) if err := xpub.UnmarshalText([]byte(args[0])); err != nil { jww.ERROR.Println("reset-key-password args not valid:", err) os.Exit(util.ErrLocalExe) } ins := struct { XPub chainkd.XPub `json:"xpub"` OldPassword string `json:"old_password"` NewPassword string `json:"new_password"` }{XPub: *xpub, OldPassword: args[1], NewPassword: args[2]} data, exitCode := util.ClientCall("/reset-key-password", &ins) if exitCode != util.Success { os.Exit(exitCode) } printJSON(data) }, } var checkKeyPwdCmd = &cobra.Command{ Use: "check-key-password ", Short: "check key password", Args: cobra.ExactArgs(2), Run: func(cmd *cobra.Command, args []string) { xpub := new(chainkd.XPub) if err := xpub.UnmarshalText([]byte(args[0])); err != nil { jww.ERROR.Println("check-key-password args not valid:", err) os.Exit(util.ErrLocalExe) } ins := struct { XPub chainkd.XPub `json:"xpub"` Password string `json:"password"` }{XPub: *xpub, Password: args[1]} data, exitCode := util.ClientCall("/check-key-password", &ins) if exitCode != util.Success { os.Exit(exitCode) } printJSON(data) }, } var signMsgCmd = &cobra.Command{ Use: "sign-message
", Short: "sign message to generate signature", Args: cobra.ExactArgs(3), Run: func(cmd *cobra.Command, args []string) { var req = struct { Address string `json:"address"` Message string `json:"message"` Password string `json:"password"` }{Address: args[0], Message: args[1], Password: args[2]} data, exitCode := util.ClientCall("/sign-message", &req) if exitCode != util.Success { os.Exit(exitCode) } printJSON(data) }, } var verifyMsgCmd = &cobra.Command{ Use: "verify-message
", Short: "verify signature for specified message", Args: cobra.ExactArgs(4), Run: func(cmd *cobra.Command, args []string) { xpub := chainkd.XPub{} if err := xpub.UnmarshalText([]byte(args[1])); err != nil { jww.ERROR.Println(err) os.Exit(util.ErrLocalExe) } var req = struct { Address string `json:"address"` DerivedXPub chainkd.XPub `json:"derived_xpub"` Message string `json:"message"` Signature string `json:"signature"` }{Address: args[0], DerivedXPub: xpub, Message: args[2], Signature: args[3]} data, exitCode := util.ClientCall("/verify-message", &req) if exitCode != util.Success { os.Exit(exitCode) } printJSON(data) }, }