Documentation ¶
Index ¶
- Variables
- type GCPKMS
- func (g *GCPKMS) CreateImportJob(ctx context.Context) error
- func (g *GCPKMS) CreateKey(ctx context.Context) error
- func (g *GCPKMS) CreateKeyRing(ctx context.Context) error
- func (g *GCPKMS) ImportKey(ctx context.Context) error
- func (g *GCPKMS) ListKeyRingKeys(ctx context.Context) error
- func (g *GCPKMS) Sign(ctx context.Context, tx *ethtypes.Transaction) error
Constants ¶
This section is empty.
Variables ¶
View Source
var CreateCmd = &cobra.Command{ Use: "create", Short: "Create a new key", Long: createCmdUsage, Args: cobra.NoArgs, PreRunE: sanityCheck, RunE: func(cmd *cobra.Command, args []string) error { if *inputSignerOpts.keystore == "" && *inputSignerOpts.kms == "" { log.Info().Msg("Generating new private hex key and writing to stdout") pk, err := crypto.GenerateKey() if err != nil { return err } k := hex.EncodeToString(crypto.FromECDSA(pk)) fmt.Println(k) return nil } if *inputSignerOpts.keystore != "" { ks := keystore.NewKeyStore(*inputSignerOpts.keystore, keystore.StandardScryptN, keystore.StandardScryptP) pk, err := crypto.GenerateKey() if err != nil { return err } password, err := getKeystorePassword() if err != nil { return err } acc, err := ks.ImportECDSA(pk, password) if err != nil { return err } log.Info().Str("address", acc.Address.String()).Msg("imported new account") return nil } if *inputSignerOpts.kms == "GCP" { gcpKMS := GCPKMS{} err := gcpKMS.CreateKeyRing(cmd.Context()) if err != nil { return err } err = gcpKMS.CreateKey(cmd.Context()) if err != nil { return err } } return nil }, }
View Source
var ImportCmd = &cobra.Command{ Use: "import", Short: "Import a private key into the keyring / keystore", Long: importCmdUsage, Args: cobra.NoArgs, PreRunE: func(cmd *cobra.Command, args []string) error { if err := sanityCheck(cmd, args); err != nil { return err } if err := cmd.MarkFlagRequired("private-key"); err != nil { return err } return nil }, RunE: func(cmd *cobra.Command, args []string) error { if *inputSignerOpts.keystore != "" { ks := keystore.NewKeyStore(*inputSignerOpts.keystore, keystore.StandardScryptN, keystore.StandardScryptP) pk, err := crypto.HexToECDSA(*inputSignerOpts.privateKey) if err != nil { return err } pass, err := getKeystorePassword() if err != nil { return err } _, err = ks.ImportECDSA(pk, pass) return err } if *inputSignerOpts.kms == "GCP" { gcpKMS := GCPKMS{} if err := gcpKMS.CreateImportJob(cmd.Context()); err != nil { return err } return gcpKMS.ImportKey(cmd.Context()) } return fmt.Errorf("unable to import key") }, }
View Source
var ListCmd = &cobra.Command{ Use: "list", Short: "List the keys in the keyring / keystore", Long: listCmdUsage, Args: cobra.NoArgs, PreRunE: sanityCheck, RunE: func(cmd *cobra.Command, args []string) error { if *inputSignerOpts.keystore != "" { ks := keystore.NewKeyStore(*inputSignerOpts.keystore, keystore.StandardScryptN, keystore.StandardScryptP) accounts := ks.Accounts() for idx, a := range accounts { log.Info().Str("account", a.Address.String()).Int("index", idx).Msg("Account") } return nil } if *inputSignerOpts.kms == "GCP" { gcpKMS := GCPKMS{} return gcpKMS.ListKeyRingKeys(cmd.Context()) } return fmt.Errorf("unable to list accounts") }, }
View Source
var SignCmd = &cobra.Command{ Use: "sign", Short: "Sign tx data", Long: signCmdUsage, Args: cobra.NoArgs, PreRunE: sanityCheck, RunE: func(cmd *cobra.Command, args []string) error { if *inputSignerOpts.keystore == "" && *inputSignerOpts.privateKey == "" && *inputSignerOpts.kms == "" { return fmt.Errorf("no valid keystore was specified") } if *inputSignerOpts.keystore != "" { ks := keystore.NewKeyStore(*inputSignerOpts.keystore, keystore.StandardScryptN, keystore.StandardScryptP) accounts := ks.Accounts() var accountToUnlock *accounts2.Account for _, a := range accounts { if a.Address.String() == *inputSignerOpts.keyID { accountToUnlock = &a break } } if accountToUnlock == nil { accountStrings := "" for _, a := range accounts { accountStrings += a.Address.String() + " " } return fmt.Errorf("the account with address <%s> could not be found in list [%s]", *inputSignerOpts.keyID, accountStrings) } password, err := getKeystorePassword() if err != nil { return err } err = ks.Unlock(*accountToUnlock, password) if err != nil { return err } log.Info().Str("path", accountToUnlock.URL.Path).Msg("Unlocked account") encryptedKey, err := os.ReadFile(accountToUnlock.URL.Path) if err != nil { return err } privKey, err := gethkeystore.DecryptKeystoreFile(encryptedKey, password) if err != nil { return err } return sign(privKey) } if *inputSignerOpts.privateKey != "" { pk, err := crypto.HexToECDSA(*inputSignerOpts.privateKey) if err != nil { return err } return sign(pk) } if *inputSignerOpts.kms == "GCP" { tx, err := getTxDataToSign() if err != nil { return err } gcpKMS := GCPKMS{} return gcpKMS.Sign(cmd.Context(), tx) } return fmt.Errorf("not implemented") }, }
View Source
var SignerCmd = &cobra.Command{ Use: "signer", Short: "Utilities for security signing transactions", Long: signerUsage, Args: cobra.NoArgs, }
Functions ¶
This section is empty.
Types ¶
Click to show internal directories.
Click to hide internal directories.