7 "github.com/spf13/cobra"
8 jww "github.com/spf13/jwalterweatherman"
10 "github.com/vapor/crypto/ed25519/chainkd"
11 chainjson "github.com/vapor/encoding/json"
12 "github.com/vapor/util"
15 var createKeyCmd = &cobra.Command{
16 Use: "create-key <alias> <password>",
17 Short: "Create a key",
18 Args: cobra.ExactArgs(2),
19 Run: func(cmd *cobra.Command, args []string) {
21 Alias string `json:"alias"`
22 Password string `json:"password"`
23 }{Alias: args[0], Password: args[1]}
25 data, exitCode := util.ClientCall("/create-key", &key)
26 if exitCode != util.Success {
34 var deleteKeyCmd = &cobra.Command{
35 Use: "delete-key <xpub> <password>",
36 Short: "Delete a key",
37 Args: cobra.ExactArgs(2),
38 Run: func(cmd *cobra.Command, args []string) {
39 xpub := new(chainkd.XPub)
40 if err := xpub.UnmarshalText([]byte(args[0])); err != nil {
41 jww.ERROR.Println("delete-key:", err)
42 os.Exit(util.ErrLocalExe)
47 XPub chainkd.XPub `json:"xpub"`
48 }{XPub: *xpub, Password: args[1]}
50 if _, exitCode := util.ClientCall("/delete-key", &key); exitCode != util.Success {
53 jww.FEEDBACK.Println("Successfully delete key")
57 var listKeysCmd = &cobra.Command{
59 Short: "List the existing keys",
61 Run: func(cmd *cobra.Command, args []string) {
62 data, exitCode := util.ClientCall("/list-keys")
63 if exitCode != util.Success {
71 var updateKeyAliasCmd = &cobra.Command{
72 Use: "update-key-alias <xpub> <new-alias>",
73 Short: "Update key alias",
74 Args: cobra.ExactArgs(2),
75 Run: func(cmd *cobra.Command, args []string) {
76 xpub := new(chainkd.XPub)
77 if err := xpub.UnmarshalText([]byte(args[0])); err != nil {
78 jww.ERROR.Println("update-key-alias xpub not valid:", err)
79 os.Exit(util.ErrLocalExe)
83 XPub chainkd.XPub `json:"xpub"`
84 NewAlias string `json:"new_alias"`
85 }{XPub: *xpub, NewAlias: args[1]}
87 if _, exitCode := util.ClientCall("/update-key-alias", &ins); exitCode != util.Success {
90 jww.FEEDBACK.Println("Successfully update key alias")
94 var resetKeyPwdCmd = &cobra.Command{
95 Use: "reset-key-password <xpub> <old-password> <new-password>",
96 Short: "Reset key password",
97 Args: cobra.ExactArgs(3),
98 Run: func(cmd *cobra.Command, args []string) {
99 xpub := new(chainkd.XPub)
100 if err := xpub.UnmarshalText([]byte(args[0])); err != nil {
101 jww.ERROR.Println("reset-key-password args not valid:", err)
102 os.Exit(util.ErrLocalExe)
106 XPub chainkd.XPub `json:"xpub"`
107 OldPassword string `json:"old_password"`
108 NewPassword string `json:"new_password"`
109 }{XPub: *xpub, OldPassword: args[1], NewPassword: args[2]}
111 data, exitCode := util.ClientCall("/reset-key-password", &ins)
112 if exitCode != util.Success {
120 var checkKeyPwdCmd = &cobra.Command{
121 Use: "check-key-password <xpub> <password>",
122 Short: "check key password",
123 Args: cobra.ExactArgs(2),
124 Run: func(cmd *cobra.Command, args []string) {
125 xpub := new(chainkd.XPub)
126 if err := xpub.UnmarshalText([]byte(args[0])); err != nil {
127 jww.ERROR.Println("check-key-password args not valid:", err)
128 os.Exit(util.ErrLocalExe)
132 XPub chainkd.XPub `json:"xpub"`
133 Password string `json:"password"`
134 }{XPub: *xpub, Password: args[1]}
136 data, exitCode := util.ClientCall("/check-key-password", &ins)
137 if exitCode != util.Success {
145 var signMsgCmd = &cobra.Command{
146 Use: "sign-message <address> <message> <password>",
147 Short: "sign message to generate signature",
148 Args: cobra.ExactArgs(3),
149 Run: func(cmd *cobra.Command, args []string) {
150 message, err := hex.DecodeString(args[1])
152 jww.ERROR.Println("sign-message args not valid:", err)
153 os.Exit(util.ErrLocalExe)
157 Address string `json:"address"`
158 Message chainjson.HexBytes `json:"message"`
159 Password string `json:"password"`
160 }{Address: args[0], Message: message, Password: args[2]}
162 data, exitCode := util.ClientCall("/sign-message", &req)
163 if exitCode != util.Success {
170 var verifyMsgCmd = &cobra.Command{
171 Use: "verify-message <address> <xpub> <message> <signature>",
172 Short: "verify signature for specified message",
173 Args: cobra.ExactArgs(4),
174 Run: func(cmd *cobra.Command, args []string) {
175 xpub := chainkd.XPub{}
176 if err := xpub.UnmarshalText([]byte(args[1])); err != nil {
177 jww.ERROR.Println(err)
178 os.Exit(util.ErrLocalExe)
181 message, err := hex.DecodeString(args[2])
183 jww.ERROR.Println("sign-message args not valid:", err)
184 os.Exit(util.ErrLocalExe)
188 Address string `json:"address"`
189 DerivedXPub chainkd.XPub `json:"derived_xpub"`
190 Message chainjson.HexBytes `json:"message"`
191 Signature string `json:"signature"`
192 }{Address: args[0], DerivedXPub: xpub, Message: message, Signature: args[3]}
194 data, exitCode := util.ClientCall("/verify-message", &req)
195 if exitCode != util.Success {