refactor: update crypto/ledger to btcec/v2 (#14123)
* chore(crypto): update crypto/ledger to v2 * go mod tidy * updates * add comment
This commit is contained in:
parent
3f08dffc20
commit
417ce2511c
@ -4,11 +4,11 @@
|
||||
package ledger
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"github.com/btcsuite/btcd/btcec"
|
||||
"github.com/pkg/errors"
|
||||
|
||||
btcec "github.com/btcsuite/btcd/btcec/v2"
|
||||
"github.com/btcsuite/btcd/btcec/v2/ecdsa"
|
||||
"github.com/cosmos/go-bip39"
|
||||
secp256k1 "github.com/tendermint/btcd/btcec"
|
||||
"github.com/tendermint/tendermint/crypto"
|
||||
@ -73,7 +73,7 @@ func (mock LedgerSECP256K1Mock) GetAddressPubKeySECP256K1(derivationPath []uint3
|
||||
}
|
||||
|
||||
// re-serialize in the 33-byte compressed format
|
||||
cmp, err := btcec.ParsePubKey(pk[:], btcec.S256())
|
||||
cmp, err := btcec.ParsePubKey(pk[:])
|
||||
if err != nil {
|
||||
return nil, "", fmt.Errorf("error parsing public key: %v", err)
|
||||
}
|
||||
@ -108,8 +108,10 @@ func (mock LedgerSECP256K1Mock) SignSECP256K1(derivationPath []uint32, message [
|
||||
}
|
||||
|
||||
// Need to return DER as the ledger does
|
||||
sig2 := btcec.Signature{R: sig.R, S: sig.S}
|
||||
return sig2.Serialize(), nil
|
||||
var r, s btcec.ModNScalar
|
||||
r.SetByteSlice(sig.R.Bytes())
|
||||
s.SetByteSlice(sig.S.Bytes())
|
||||
return ecdsa.NewSignature(&r, &s).Serialize(), nil
|
||||
}
|
||||
|
||||
// ShowAddressSECP256K1 shows the address for the corresponding bip32 derivation path
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
package ledger
|
||||
|
||||
import (
|
||||
"github.com/pkg/errors"
|
||||
"errors"
|
||||
)
|
||||
|
||||
// If ledger support (build tag) has been enabled, which implies a CGO dependency,
|
||||
|
||||
@ -1,11 +1,13 @@
|
||||
package ledger
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"math/big"
|
||||
"os"
|
||||
|
||||
"github.com/btcsuite/btcd/btcec"
|
||||
"github.com/pkg/errors"
|
||||
btcec "github.com/btcsuite/btcd/btcec/v2"
|
||||
"github.com/btcsuite/btcd/btcec/v2/ecdsa"
|
||||
|
||||
tmbtcec "github.com/tendermint/btcd/btcec"
|
||||
|
||||
@ -210,11 +212,19 @@ func warnIfErrors(f func() error) {
|
||||
}
|
||||
|
||||
func convertDERtoBER(signatureDER []byte) ([]byte, error) {
|
||||
sigDER, err := btcec.ParseDERSignature(signatureDER, btcec.S256())
|
||||
sigDER, err := ecdsa.ParseDERSignature(signatureDER)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
sigBER := tmbtcec.Signature{R: sigDER.R, S: sigDER.S}
|
||||
|
||||
sigStr := sigDER.Serialize()
|
||||
var r, s big.Int
|
||||
// The format of a DER encoded signature is as follows:
|
||||
// 0x30 <total length> 0x02 <length of R> <R> 0x02 <length of S> <S>
|
||||
r.SetBytes(sigStr[4 : 4+sigStr[3]])
|
||||
s.SetBytes(sigStr[4+sigStr[3]+2:])
|
||||
sigBER := tmbtcec.Signature{R: &r, S: &s}
|
||||
|
||||
return sigBER.Serialize(), nil
|
||||
}
|
||||
|
||||
@ -225,7 +235,7 @@ func getDevice() (SECP256K1, error) {
|
||||
|
||||
device, err := options.discoverLedger()
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "ledger nano S")
|
||||
return nil, fmt.Errorf("ledger nano S: %w", err)
|
||||
}
|
||||
|
||||
return device, nil
|
||||
@ -283,7 +293,7 @@ func getPubKeyUnsafe(device SECP256K1, path hd.BIP44Params) (types.PubKey, error
|
||||
}
|
||||
|
||||
// re-serialize in the 33-byte compressed format
|
||||
cmp, err := btcec.ParsePubKey(publicKey, btcec.S256())
|
||||
cmp, err := btcec.ParsePubKey(publicKey)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error parsing public key: %v", err)
|
||||
}
|
||||
@ -307,7 +317,7 @@ func getPubKeyAddrSafe(device SECP256K1, path hd.BIP44Params, hrp string) (types
|
||||
}
|
||||
|
||||
// re-serialize in the 33-byte compressed format
|
||||
cmp, err := btcec.ParsePubKey(publicKey, btcec.S256())
|
||||
cmp, err := btcec.ParsePubKey(publicKey)
|
||||
if err != nil {
|
||||
return nil, "", fmt.Errorf("error parsing public key: %v", err)
|
||||
}
|
||||
|
||||
2
go.mod
2
go.mod
@ -11,7 +11,6 @@ require (
|
||||
github.com/99designs/keyring v1.2.1
|
||||
github.com/armon/go-metrics v0.4.1
|
||||
github.com/bgentry/speakeasy v0.1.0
|
||||
github.com/btcsuite/btcd v0.22.3
|
||||
github.com/btcsuite/btcd/btcec/v2 v2.3.2
|
||||
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e
|
||||
github.com/cockroachdb/apd/v2 v2.0.2
|
||||
@ -74,6 +73,7 @@ require (
|
||||
github.com/aws/aws-sdk-go v1.40.45 // indirect
|
||||
github.com/beorn7/perks v1.0.1 // indirect
|
||||
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect
|
||||
github.com/btcsuite/btcd v0.22.3 // indirect
|
||||
github.com/cenkalti/backoff/v4 v4.1.3 // indirect
|
||||
github.com/cespare/xxhash v1.1.0 // indirect
|
||||
github.com/cespare/xxhash/v2 v2.1.2 // indirect
|
||||
|
||||
@ -35,7 +35,6 @@ require (
|
||||
github.com/beorn7/perks v1.0.1 // indirect
|
||||
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect
|
||||
github.com/bgentry/speakeasy v0.1.0 // indirect
|
||||
github.com/btcsuite/btcd v0.22.3 // indirect
|
||||
github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect
|
||||
github.com/cenkalti/backoff/v4 v4.1.3 // indirect
|
||||
github.com/cespare/xxhash v1.1.0 // indirect
|
||||
|
||||
@ -113,7 +113,6 @@ github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQ
|
||||
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
|
||||
github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ=
|
||||
github.com/btcsuite/btcd v0.22.3 h1:kYNaWFvOw6xvqP0vR20RP1Zq1DVMBxEO8QN5d1/EfNg=
|
||||
github.com/btcsuite/btcd v0.22.3/go.mod h1:wqgTSL29+50LRkmOVknEdmt8ZojIzhuWvgu/iptuN7Y=
|
||||
github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U=
|
||||
github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04=
|
||||
github.com/btcsuite/btcd/btcutil v1.1.2 h1:XLMbX8JQEiwMcYft2EGi8zPUkoa0abKIU6/BJSRsjzQ=
|
||||
|
||||
@ -37,7 +37,6 @@ require (
|
||||
github.com/beorn7/perks v1.0.1 // indirect
|
||||
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect
|
||||
github.com/bgentry/speakeasy v0.1.0 // indirect
|
||||
github.com/btcsuite/btcd v0.22.3 // indirect
|
||||
github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect
|
||||
github.com/cenkalti/backoff/v4 v4.1.3 // indirect
|
||||
github.com/cespare/xxhash v1.1.0 // indirect
|
||||
|
||||
@ -111,7 +111,6 @@ github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQ
|
||||
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
|
||||
github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ=
|
||||
github.com/btcsuite/btcd v0.22.3 h1:kYNaWFvOw6xvqP0vR20RP1Zq1DVMBxEO8QN5d1/EfNg=
|
||||
github.com/btcsuite/btcd v0.22.3/go.mod h1:wqgTSL29+50LRkmOVknEdmt8ZojIzhuWvgu/iptuN7Y=
|
||||
github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U=
|
||||
github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04=
|
||||
github.com/btcsuite/btcd/btcutil v1.1.2 h1:XLMbX8JQEiwMcYft2EGi8zPUkoa0abKIU6/BJSRsjzQ=
|
||||
|
||||
Loading…
Reference in New Issue
Block a user