github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/client/keys/delete.go (about) 1 package keys 2 3 import ( 4 "bufio" 5 "errors" 6 7 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/client/flags" 8 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/client/input" 9 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/crypto/keys" 10 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 11 12 "github.com/spf13/cobra" 13 "github.com/spf13/viper" 14 ) 15 16 const ( 17 flagYes = "yes" 18 flagForce = "force" 19 ) 20 21 // DeleteKeyCommand deletes a key from the key store. 22 func DeleteKeyCommand() *cobra.Command { 23 cmd := &cobra.Command{ 24 Use: "delete <name>...", 25 Short: "Delete the given keys", 26 Long: `Delete keys from the Keybase backend. 27 28 Note that removing offline or ledger keys will remove 29 only the public key references stored locally, i.e. 30 private keys stored in a ledger device cannot be deleted with the CLI. 31 `, 32 RunE: runDeleteCmd, 33 Args: cobra.MinimumNArgs(1), 34 } 35 36 cmd.Flags().BoolP(flagYes, "y", false, 37 "Skip confirmation prompt when deleting offline or ledger key references") 38 cmd.Flags().BoolP(flagForce, "f", false, 39 "Remove the key unconditionally without asking for the passphrase. Deprecated.") 40 return cmd 41 } 42 43 func runDeleteCmd(cmd *cobra.Command, args []string) error { 44 buf := bufio.NewReader(cmd.InOrStdin()) 45 46 kb, err := keys.NewKeyring(sdk.KeyringServiceName(), viper.GetString(flags.FlagKeyringBackend), viper.GetString(flags.FlagHome), buf) 47 if err != nil { 48 return err 49 } 50 51 for _, name := range args { 52 info, err := kb.Get(name) 53 if err != nil { 54 return err 55 } 56 57 if info.GetType() == keys.TypeLedger || info.GetType() == keys.TypeOffline { 58 // confirm deletion, unless -y is passed 59 if !viper.GetBool(flagYes) { 60 if err := confirmDeletion(buf); err != nil { 61 return err 62 } 63 } 64 65 if err := kb.Delete(name, "", true); err != nil { 66 return err 67 } 68 cmd.PrintErrln("Public key reference deleted") 69 return nil 70 } 71 72 // old password and skip flag arguments are ignored 73 if err := kb.Delete(name, "", true); err != nil { 74 return err 75 } 76 cmd.PrintErrln("Key deleted forever (uh oh!)") 77 } 78 79 return nil 80 } 81 82 func confirmDeletion(buf *bufio.Reader) error { 83 answer, err := input.GetConfirmation("Key reference will be deleted. Continue?", buf) 84 if err != nil { 85 return err 86 } 87 if !answer { 88 return errors.New("aborted") 89 } 90 return nil 91 }