From a1d6874544421cbe3db418a256ee93ce996de972 Mon Sep 17 00:00:00 2001 From: Austin Chandra Date: Wed, 14 Dec 2022 08:55:38 -0800 Subject: [PATCH 1/3] fix: update Ledger default algorithm to `EthSecp256k1` --- client/keys/add.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/keys/add.go b/client/keys/add.go index e1d0b8d2ad..e500a1aa59 100644 --- a/client/keys/add.go +++ b/client/keys/add.go @@ -155,7 +155,7 @@ func RunAddCmd(ctx client.Context, cmd *cobra.Command, args []string, inBuf *buf // If we're using ledger, only thing we need is the path and the bech32 prefix. if useLedger { bech32PrefixAccAddr := sdk.GetConfig().GetBech32AccountAddrPrefix() - k, err := kb.SaveLedgerKey(name, hd.Secp256k1, bech32PrefixAccAddr, coinType, account, index) + k, err := kb.SaveLedgerKey(name, etherminthd.EthSecp256k1, bech32PrefixAccAddr, coinType, account, index) if err != nil { return err } From 52cba8edc29fdf8d95e50922f35ca36bf4d7fbd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Federico=20Kunze=20K=C3=BCllmer?= <31522760+fedekunze@users.noreply.github.com> Date: Thu, 22 Dec 2022 09:39:43 +0100 Subject: [PATCH 2/3] fix ledger signing algo validation --- client/keys/add.go | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/client/keys/add.go b/client/keys/add.go index c2436e81dc..7ff3998b26 100644 --- a/client/keys/add.go +++ b/client/keys/add.go @@ -65,18 +65,32 @@ output - armor encrypted private key (saved to file) */ func RunAddCmd(ctx client.Context, cmd *cobra.Command, args []string, inBuf *bufio.Reader) error { - var err error - name := args[0] + interactive, _ := cmd.Flags().GetBool(flagInteractive) noBackup, _ := cmd.Flags().GetBool(flagNoBackup) + useLedger, _ := cmd.Flags().GetBool(flags.FlagUseLedger) + algoStr, _ := cmd.Flags().GetString(flags.FlagKeyAlgorithm) + showMnemonic := !noBackup kb := ctx.Keyring outputFormat := ctx.OutputFormat - keyringAlgos, _ := kb.SupportedAlgorithms() - algoStr, _ := cmd.Flags().GetString(flags.FlagKeyAlgorithm) - algo, err := keyring.NewSigningAlgoFromString(algoStr, keyringAlgos) + keyringAlgos, ledgerAlgos := kb.SupportedAlgorithms() + + var ( + algo keyring.SignatureAlgo + err error + ) + + // check if the provided signing algorithm is supported by the keyring or + // ledger + if useLedger { + algo, err = keyring.NewSigningAlgoFromString(algoStr, ledgerAlgos) + } else { + algo, err = keyring.NewSigningAlgoFromString(algoStr, keyringAlgos) + } + if err != nil { return err } @@ -159,7 +173,6 @@ func RunAddCmd(ctx client.Context, cmd *cobra.Command, args []string, inBuf *buf account, _ := cmd.Flags().GetUint32(flagAccount) index, _ := cmd.Flags().GetUint32(flagIndex) hdPath, _ := cmd.Flags().GetString(flagHDPath) - useLedger, _ := cmd.Flags().GetBool(flags.FlagUseLedger) if len(hdPath) == 0 { hdPath = hd.CreateHDPath(coinType, account, index).String() @@ -170,7 +183,9 @@ func RunAddCmd(ctx client.Context, cmd *cobra.Command, args []string, inBuf *buf // If we're using ledger, only thing we need is the path and the bech32 prefix. if useLedger { bech32PrefixAccAddr := sdk.GetConfig().GetBech32AccountAddrPrefix() - k, err := kb.SaveLedgerKey(name, etherminthd.EthSecp256k1, bech32PrefixAccAddr, coinType, account, index) + + // use the provided algo to save the ledger key + k, err := kb.SaveLedgerKey(name, algo, bech32PrefixAccAddr, coinType, account, index) if err != nil { return err } From f8583614bad7eef9e2c882590869262d6c20d84f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Federico=20Kunze=20K=C3=BCllmer?= <31522760+fedekunze@users.noreply.github.com> Date: Thu, 22 Dec 2022 09:45:17 +0100 Subject: [PATCH 3/3] changelog --- CHANGELOG.md | 1 + client/keys/add.go | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 68ad34f027..d5fbbb0adc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -90,6 +90,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Bug Fixes +* (cli) [#1550](https://github.com/evmos/ethermint/pull/1550) Fix signature algorithm validation and default for Ledger. * (eip712) [#1543](https://github.com/evmos/ethermint/pull/1543) Improve error handling for EIP-712 encoding config initialization. * (app) [#1505](https://github.com/evmos/ethermint/pull/1505) Setup gRPC node service with the application. * (server) [#1497](https://github.com/evmos/ethermint/pull/1497) Fix telemetry server setup for observability diff --git a/client/keys/add.go b/client/keys/add.go index 7ff3998b26..b8d2d3f53b 100644 --- a/client/keys/add.go +++ b/client/keys/add.go @@ -65,6 +65,11 @@ output - armor encrypted private key (saved to file) */ func RunAddCmd(ctx client.Context, cmd *cobra.Command, args []string, inBuf *bufio.Reader) error { + var ( + algo keyring.SignatureAlgo + err error + ) + name := args[0] interactive, _ := cmd.Flags().GetBool(flagInteractive) @@ -78,11 +83,6 @@ func RunAddCmd(ctx client.Context, cmd *cobra.Command, args []string, inBuf *buf keyringAlgos, ledgerAlgos := kb.SupportedAlgorithms() - var ( - algo keyring.SignatureAlgo - err error - ) - // check if the provided signing algorithm is supported by the keyring or // ledger if useLedger {