@@ -25,8 +25,8 @@ import (
2525 "fmt"
2626 "math/big"
2727
28- "github.com/btcsuite/btcd/btcec/v2 "
29- btc_ecdsa "github.com/btcsuite/btcd/btcec/v2 /ecdsa"
28+ "github.com/decred/dcrd/dcrec/secp256k1/v4 "
29+ decred_ecdsa "github.com/decred/dcrd/dcrec/secp256k1/v4 /ecdsa"
3030)
3131
3232// Ecrecover returns the uncompressed public key that created the given signature.
@@ -39,16 +39,16 @@ func Ecrecover(hash, sig []byte) ([]byte, error) {
3939 return bytes , err
4040}
4141
42- func sigToPub (hash , sig []byte ) (* btcec .PublicKey , error ) {
42+ func sigToPub (hash , sig []byte ) (* secp256k1 .PublicKey , error ) {
4343 if len (sig ) != SignatureLength {
4444 return nil , errors .New ("invalid signature" )
4545 }
46- // Convert to btcec input format with 'recovery id' v at the beginning.
46+ // Convert to secp256k1 input format with 'recovery id' v at the beginning.
4747 btcsig := make ([]byte , SignatureLength )
4848 btcsig [0 ] = sig [RecoveryIDOffset ] + 27
4949 copy (btcsig [1 :], sig )
5050
51- pub , _ , err := btc_ecdsa .RecoverCompact (btcsig , hash )
51+ pub , _ , err := decred_ecdsa .RecoverCompact (btcsig , hash )
5252 return pub , err
5353}
5454
@@ -82,13 +82,13 @@ func Sign(hash []byte, prv *ecdsa.PrivateKey) ([]byte, error) {
8282 if prv .Curve != S256 () {
8383 return nil , errors .New ("private key curve is not secp256k1" )
8484 }
85- // ecdsa.PrivateKey -> btcec .PrivateKey
86- var priv btcec .PrivateKey
85+ // ecdsa.PrivateKey -> secp256k1 .PrivateKey
86+ var priv secp256k1 .PrivateKey
8787 if overflow := priv .Key .SetByteSlice (prv .D .Bytes ()); overflow || priv .Key .IsZero () {
8888 return nil , errors .New ("invalid private key" )
8989 }
9090 defer priv .Zero ()
91- sig := btc_ecdsa .SignCompact (& priv , hash , false ) // ref uncompressed pubkey
91+ sig := decred_ecdsa .SignCompact (& priv , hash , false ) // ref uncompressed pubkey
9292 // Convert to Ethereum signature format with 'recovery id' v at the end.
9393 v := sig [0 ] - 27
9494 copy (sig , sig [1 :])
@@ -103,19 +103,19 @@ func VerifySignature(pubkey, hash, signature []byte) bool {
103103 if len (signature ) != 64 {
104104 return false
105105 }
106- var r , s btcec .ModNScalar
106+ var r , s secp256k1 .ModNScalar
107107 if r .SetByteSlice (signature [:32 ]) {
108108 return false // overflow
109109 }
110110 if s .SetByteSlice (signature [32 :]) {
111111 return false
112112 }
113- sig := btc_ecdsa .NewSignature (& r , & s )
114- key , err := btcec .ParsePubKey (pubkey )
113+ sig := decred_ecdsa .NewSignature (& r , & s )
114+ key , err := secp256k1 .ParsePubKey (pubkey )
115115 if err != nil {
116116 return false
117117 }
118- // Reject malleable signatures. libsecp256k1 does this check but btcec doesn't.
118+ // Reject malleable signatures. libsecp256k1 does this check but decred doesn't.
119119 if s .IsOverHalfOrder () {
120120 return false
121121 }
@@ -127,7 +127,7 @@ func DecompressPubkey(pubkey []byte) (*ecdsa.PublicKey, error) {
127127 if len (pubkey ) != 33 {
128128 return nil , errors .New ("invalid compressed public key length" )
129129 }
130- key , err := btcec .ParsePubKey (pubkey )
130+ key , err := secp256k1 .ParsePubKey (pubkey )
131131 if err != nil {
132132 return nil , err
133133 }
@@ -148,20 +148,20 @@ func DecompressPubkey(pubkey []byte) (*ecdsa.PublicKey, error) {
148148// when constructing a PrivateKey.
149149func CompressPubkey (pubkey * ecdsa.PublicKey ) []byte {
150150 // NOTE: the coordinates may be validated with
151- // btcec .ParsePubKey(FromECDSAPub(pubkey))
152- var x , y btcec .FieldVal
151+ // secp256k1 .ParsePubKey(FromECDSAPub(pubkey))
152+ var x , y secp256k1 .FieldVal
153153 x .SetByteSlice (pubkey .X .Bytes ())
154154 y .SetByteSlice (pubkey .Y .Bytes ())
155- return btcec .NewPublicKey (& x , & y ).SerializeCompressed ()
155+ return secp256k1 .NewPublicKey (& x , & y ).SerializeCompressed ()
156156}
157157
158158// S256 returns an instance of the secp256k1 curve.
159159func S256 () EllipticCurve {
160- return btCurve {btcec .S256 ()}
160+ return btCurve {secp256k1 .S256 ()}
161161}
162162
163163type btCurve struct {
164- * btcec .KoblitzCurve
164+ * secp256k1 .KoblitzCurve
165165}
166166
167167// Marshal converts a point given as (x, y) into a byte slice.
0 commit comments