mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-26 06:36:43 +00:00
commit
8fc2a955a2
18 changed files with 143 additions and 81 deletions
|
|
@ -20,7 +20,6 @@ import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"crypto/aes"
|
"crypto/aes"
|
||||||
"crypto/cipher"
|
"crypto/cipher"
|
||||||
"crypto/elliptic"
|
|
||||||
"crypto/rand"
|
"crypto/rand"
|
||||||
"crypto/sha256"
|
"crypto/sha256"
|
||||||
"crypto/sha512"
|
"crypto/sha512"
|
||||||
|
|
@ -73,13 +72,11 @@ func NewSecureChannelSession(card *pcsc.Card, keyData []byte) (*SecureChannelSes
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("could not unmarshal public key from card: %v", err)
|
return nil, fmt.Errorf("could not unmarshal public key from card: %v", err)
|
||||||
}
|
}
|
||||||
|
secret, _ := crypto.S256().ScalarMult(cardPublic.X, cardPublic.Y, key.D.Bytes())
|
||||||
secret, _ := key.Curve.ScalarMult(cardPublic.X, cardPublic.Y, key.D.Bytes())
|
|
||||||
|
|
||||||
return &SecureChannelSession{
|
return &SecureChannelSession{
|
||||||
card: card,
|
card: card,
|
||||||
secret: secret.Bytes(),
|
secret: secret.Bytes(),
|
||||||
publicKey: elliptic.Marshal(crypto.S256(), key.PublicKey.X, key.PublicKey.Y),
|
publicKey: crypto.FromECDSAPub(&key.PublicKey),
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,22 +5,22 @@
|
||||||
# https://github.com/ethereum/execution-spec-tests/releases/download/v1.0.6/
|
# https://github.com/ethereum/execution-spec-tests/releases/download/v1.0.6/
|
||||||
485af7b66cf41eb3a8c1bd46632913b8eb95995df867cf665617bbc9b4beedd1 fixtures_develop.tar.gz
|
485af7b66cf41eb3a8c1bd46632913b8eb95995df867cf665617bbc9b4beedd1 fixtures_develop.tar.gz
|
||||||
|
|
||||||
# version:golang 1.21.5
|
# version:golang 1.22.1
|
||||||
# https://go.dev/dl/
|
# https://go.dev/dl/
|
||||||
285cbbdf4b6e6e62ed58f370f3f6d8c30825d6e56c5853c66d3c23bcdb09db19 go1.21.5.src.tar.gz
|
79c9b91d7f109515a25fc3ecdaad125d67e6bdb54f6d4d98580f46799caea321 go1.22.1.src.tar.gz
|
||||||
a2e1d5743e896e5fe1e7d96479c0a769254aed18cf216cf8f4c3a2300a9b3923 go1.21.5.darwin-amd64.tar.gz
|
3bc971772f4712fec0364f4bc3de06af22a00a12daab10b6f717fdcd13156cc0 go1.22.1.darwin-amd64.tar.gz
|
||||||
d0f8ac0c4fb3efc223a833010901d02954e3923cfe2c9a2ff0e4254a777cc9cc go1.21.5.darwin-arm64.tar.gz
|
f6a9cec6b8a002fcc9c0ee24ec04d67f430a52abc3cfd613836986bcc00d8383 go1.22.1.darwin-arm64.tar.gz
|
||||||
2c05bbe0dc62456b90b7ddd354a54f373b7c377a98f8b22f52ab694b4f6cca58 go1.21.5.freebsd-386.tar.gz
|
99f81c10d5a3f8a886faf8fa86aaa2aaf929fbed54a972ae5eec3c5e0bdb961a go1.22.1.freebsd-386.tar.gz
|
||||||
30b6c64e9a77129605bc12f836422bf09eec577a8c899ee46130aeff81567003 go1.21.5.freebsd-amd64.tar.gz
|
51c614ddd92ee4a9913a14c39bf80508d9cfba08561f24d2f075fd00f3cfb067 go1.22.1.freebsd-amd64.tar.gz
|
||||||
8f4dba9cf5c61757bbd7e9ebdb93b6a30a1b03f4a636a1ba0cc2f27b907ab8e1 go1.21.5.linux-386.tar.gz
|
8484df36d3d40139eaf0fe5e647b006435d826cc12f9ae72973bf7ec265e0ae4 go1.22.1.linux-386.tar.gz
|
||||||
e2bc0b3e4b64111ec117295c088bde5f00eeed1567999ff77bc859d7df70078e go1.21.5.linux-amd64.tar.gz
|
aab8e15785c997ae20f9c88422ee35d962c4562212bb0f879d052a35c8307c7f go1.22.1.linux-amd64.tar.gz
|
||||||
841cced7ecda9b2014f139f5bab5ae31785f35399f236b8b3e75dff2a2978d96 go1.21.5.linux-arm64.tar.gz
|
e56685a245b6a0c592fc4a55f0b7803af5b3f827aaa29feab1f40e491acf35b8 go1.22.1.linux-arm64.tar.gz
|
||||||
837f4bf4e22fcdf920ffeaa4abf3d02d1314e03725431065f4d44c46a01b42fe go1.21.5.linux-armv6l.tar.gz
|
8cb7a90e48c20daed39a6ac8b8a40760030ba5e93c12274c42191d868687c281 go1.22.1.linux-armv6l.tar.gz
|
||||||
907b8c6ec4be9b184952e5d3493be66b1746442394a8bc78556c56834cd7c38b go1.21.5.linux-ppc64le.tar.gz
|
ac775e19d93cc1668999b77cfe8c8964abfbc658718feccfe6e0eb87663cd668 go1.22.1.linux-ppc64le.tar.gz
|
||||||
9c4a81b72ebe44368813cd03684e1080a818bf915d84163abae2ed325a1b2dc0 go1.21.5.linux-s390x.tar.gz
|
7bb7dd8e10f95c9a4cc4f6bef44c816a6e7c9e03f56ac6af6efbb082b19b379f go1.22.1.linux-s390x.tar.gz
|
||||||
6da2418889dfb37763d0eb149c4a8d728c029e12f0cd54fbca0a31ae547e2d34 go1.21.5.windows-386.zip
|
0c5ebb7eb39b7884ec99f92b425d4c03a96a72443562aafbf6e7d15c42a3108a go1.22.1.windows-386.zip
|
||||||
bbe603cde7c9dee658f45164b4d06de1eff6e6e6b800100824e7c00d56a9a92f go1.21.5.windows-amd64.zip
|
cf9c66a208a106402a527f5b956269ca506cfe535fc388e828d249ea88ed28ba go1.22.1.windows-amd64.zip
|
||||||
9b7acca50e674294e43202df4fbc26d5af4d8bc3170a3342a1514f09a2dab5e9 go1.21.5.windows-arm64.zip
|
85b8511b298c9f4199ecae26afafcc3d46155bac934d43f2357b9224bcaa310f go1.22.1.windows-arm64.zip
|
||||||
|
|
||||||
# version:golangci 1.51.1
|
# version:golangci 1.51.1
|
||||||
# https://github.com/golangci/golangci-lint/releases/
|
# https://github.com/golangci/golangci-lint/releases/
|
||||||
|
|
|
||||||
|
|
@ -288,8 +288,6 @@ func main() {
|
||||||
// prepare manipulates memory cache allowance and setups metric system.
|
// prepare manipulates memory cache allowance and setups metric system.
|
||||||
// This function should be called before launching devp2p stack.
|
// This function should be called before launching devp2p stack.
|
||||||
func prepare(ctx *cli.Context) {
|
func prepare(ctx *cli.Context) {
|
||||||
const light = "light"
|
|
||||||
|
|
||||||
// If we're running a known preset, log it for convenience.
|
// If we're running a known preset, log it for convenience.
|
||||||
switch {
|
switch {
|
||||||
case ctx.IsSet(utils.GoerliFlag.Name):
|
case ctx.IsSet(utils.GoerliFlag.Name):
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,15 @@ var (
|
||||||
|
|
||||||
var errInvalidPubkey = errors.New("invalid secp256k1 public key")
|
var errInvalidPubkey = errors.New("invalid secp256k1 public key")
|
||||||
|
|
||||||
|
// EllipticCurve contains curve operations.
|
||||||
|
type EllipticCurve interface {
|
||||||
|
elliptic.Curve
|
||||||
|
|
||||||
|
// Point marshaling/unmarshaing.
|
||||||
|
Marshal(x, y *big.Int) []byte
|
||||||
|
Unmarshal(data []byte) (x, y *big.Int)
|
||||||
|
}
|
||||||
|
|
||||||
// KeccakState wraps sha3.state. In addition to the usual hash methods, it also supports
|
// KeccakState wraps sha3.state. In addition to the usual hash methods, it also supports
|
||||||
// Read to get a variable amount of data from the hash state. Read is faster than Sum
|
// Read to get a variable amount of data from the hash state. Read is faster than Sum
|
||||||
// because it doesn't copy the internal state, but also modifies the internal state.
|
// because it doesn't copy the internal state, but also modifies the internal state.
|
||||||
|
|
@ -157,7 +166,7 @@ func toECDSA(d []byte, strict bool) (*ecdsa.PrivateKey, error) {
|
||||||
return nil, errors.New("invalid private key, zero or negative")
|
return nil, errors.New("invalid private key, zero or negative")
|
||||||
}
|
}
|
||||||
|
|
||||||
priv.PublicKey.X, priv.PublicKey.Y = priv.PublicKey.Curve.ScalarBaseMult(d)
|
priv.PublicKey.X, priv.PublicKey.Y = S256().ScalarBaseMult(d)
|
||||||
if priv.PublicKey.X == nil {
|
if priv.PublicKey.X == nil {
|
||||||
return nil, errors.New("invalid private key")
|
return nil, errors.New("invalid private key")
|
||||||
}
|
}
|
||||||
|
|
@ -176,7 +185,7 @@ func FromECDSA(priv *ecdsa.PrivateKey) []byte {
|
||||||
|
|
||||||
// UnmarshalPubkey converts bytes to a secp256k1 public key.
|
// UnmarshalPubkey converts bytes to a secp256k1 public key.
|
||||||
func UnmarshalPubkey(pub []byte) (*ecdsa.PublicKey, error) {
|
func UnmarshalPubkey(pub []byte) (*ecdsa.PublicKey, error) {
|
||||||
x, y := elliptic.Unmarshal(S256(), pub)
|
x, y := S256().Unmarshal(pub)
|
||||||
if x == nil {
|
if x == nil {
|
||||||
return nil, errInvalidPubkey
|
return nil, errInvalidPubkey
|
||||||
}
|
}
|
||||||
|
|
@ -188,8 +197,7 @@ func FromECDSAPub(pub *ecdsa.PublicKey) []byte {
|
||||||
if pub == nil || pub.X == nil || pub.Y == nil {
|
if pub == nil || pub.X == nil || pub.Y == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
return S256().Marshal(pub.X, pub.Y)
|
||||||
return elliptic.Marshal(S256(), pub.X, pub.Y)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// HexToECDSA parses a secp256k1 private key.
|
// HexToECDSA parses a secp256k1 private key.
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,8 @@ import (
|
||||||
"hash"
|
"hash"
|
||||||
"io"
|
"io"
|
||||||
"math/big"
|
"math/big"
|
||||||
|
|
||||||
|
"github.com/ethereum/go-ethereum/crypto"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|
@ -96,17 +98,16 @@ func ImportECDSA(prv *ecdsa.PrivateKey) *PrivateKey {
|
||||||
// Generate an elliptic curve public / private keypair. If params is nil,
|
// Generate an elliptic curve public / private keypair. If params is nil,
|
||||||
// the recommended default parameters for the key will be chosen.
|
// the recommended default parameters for the key will be chosen.
|
||||||
func GenerateKey(rand io.Reader, curve elliptic.Curve, params *ECIESParams) (prv *PrivateKey, err error) {
|
func GenerateKey(rand io.Reader, curve elliptic.Curve, params *ECIESParams) (prv *PrivateKey, err error) {
|
||||||
pb, x, y, err := elliptic.GenerateKey(curve, rand)
|
sk, err := ecdsa.GenerateKey(curve, rand)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
prv = new(PrivateKey)
|
prv = new(PrivateKey)
|
||||||
prv.PublicKey.X = x
|
prv.PublicKey.X = sk.X
|
||||||
prv.PublicKey.Y = y
|
prv.PublicKey.Y = sk.Y
|
||||||
prv.PublicKey.Curve = curve
|
prv.PublicKey.Curve = curve
|
||||||
prv.D = new(big.Int).SetBytes(pb)
|
prv.D = new(big.Int).Set(sk.D)
|
||||||
|
|
||||||
if params == nil {
|
if params == nil {
|
||||||
params = ParamsFromCurve(curve)
|
params = ParamsFromCurve(curve)
|
||||||
}
|
}
|
||||||
|
|
@ -271,13 +272,15 @@ func Encrypt(rand io.Reader, pub *PublicKey, m, s1, s2 []byte) (ct []byte, err e
|
||||||
|
|
||||||
d := messageTag(params.Hash, Km, em, s2)
|
d := messageTag(params.Hash, Km, em, s2)
|
||||||
|
|
||||||
Rb := elliptic.Marshal(pub.Curve, R.PublicKey.X, R.PublicKey.Y)
|
if curve, ok := pub.Curve.(crypto.EllipticCurve); ok {
|
||||||
ct = make([]byte, len(Rb)+len(em)+len(d))
|
Rb := curve.Marshal(R.PublicKey.X, R.PublicKey.Y)
|
||||||
copy(ct, Rb)
|
ct = make([]byte, len(Rb)+len(em)+len(d))
|
||||||
copy(ct[len(Rb):], em)
|
copy(ct, Rb)
|
||||||
copy(ct[len(Rb)+len(em):], d)
|
copy(ct[len(Rb):], em)
|
||||||
|
copy(ct[len(Rb)+len(em):], d)
|
||||||
return ct, nil
|
return ct, nil
|
||||||
|
}
|
||||||
|
return nil, ErrInvalidCurve
|
||||||
}
|
}
|
||||||
|
|
||||||
// Decrypt decrypts an ECIES ciphertext.
|
// Decrypt decrypts an ECIES ciphertext.
|
||||||
|
|
@ -315,23 +318,24 @@ func (prv *PrivateKey) Decrypt(c, s1, s2 []byte) (m []byte, err error) {
|
||||||
|
|
||||||
R := new(PublicKey)
|
R := new(PublicKey)
|
||||||
R.Curve = prv.PublicKey.Curve
|
R.Curve = prv.PublicKey.Curve
|
||||||
R.X, R.Y = elliptic.Unmarshal(R.Curve, c[:rLen])
|
|
||||||
|
|
||||||
if R.X == nil {
|
if curve, ok := R.Curve.(crypto.EllipticCurve); ok {
|
||||||
return nil, ErrInvalidPublicKey
|
R.X, R.Y = curve.Unmarshal(c[:rLen])
|
||||||
|
if R.X == nil {
|
||||||
|
return nil, ErrInvalidPublicKey
|
||||||
|
}
|
||||||
|
|
||||||
|
z, err := prv.GenerateShared(R, params.KeyLen, params.KeyLen)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
Ke, Km := deriveKeys(hash, z, s1, params.KeyLen)
|
||||||
|
|
||||||
|
d := messageTag(params.Hash, Km, c[mStart:mEnd], s2)
|
||||||
|
if subtle.ConstantTimeCompare(c[mEnd:], d) != 1 {
|
||||||
|
return nil, ErrInvalidMessage
|
||||||
|
}
|
||||||
|
return symDecrypt(params, Ke, c[mStart:mEnd])
|
||||||
}
|
}
|
||||||
|
return nil, ErrInvalidCurve
|
||||||
z, err := prv.GenerateShared(R, params.KeyLen, params.KeyLen)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
Ke, Km := deriveKeys(hash, z, s1, params.KeyLen)
|
|
||||||
|
|
||||||
d := messageTag(params.Hash, Km, c[mStart:mEnd], s2)
|
|
||||||
if subtle.ConstantTimeCompare(c[mEnd:], d) != 1 {
|
|
||||||
return nil, ErrInvalidMessage
|
|
||||||
}
|
|
||||||
|
|
||||||
return symDecrypt(params, Ke, c[mStart:mEnd])
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,6 @@ package secp256k1
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"crypto/ecdsa"
|
"crypto/ecdsa"
|
||||||
"crypto/elliptic"
|
|
||||||
"crypto/rand"
|
"crypto/rand"
|
||||||
"encoding/hex"
|
"encoding/hex"
|
||||||
"io"
|
"io"
|
||||||
|
|
@ -24,8 +23,7 @@ func generateKeyPair() (pubkey, privkey []byte) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
pubkey = S256().Marshal(key.X, key.Y)
|
||||||
pubkey = elliptic.Marshal(S256(), key.X, key.Y)
|
|
||||||
|
|
||||||
privkey = make([]byte, 32)
|
privkey = make([]byte, 32)
|
||||||
blob := key.D.Bytes()
|
blob := key.D.Bytes()
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,6 @@ package crypto
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/ecdsa"
|
"crypto/ecdsa"
|
||||||
"crypto/elliptic"
|
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
|
@ -40,10 +39,7 @@ func SigToPub(hash, sig []byte) (*ecdsa.PublicKey, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
return UnmarshalPubkey(s)
|
||||||
x, y := elliptic.Unmarshal(S256(), s)
|
|
||||||
|
|
||||||
return &ecdsa.PublicKey{Curve: S256(), X: x, Y: y}, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sign calculates an ECDSA signature.
|
// Sign calculates an ECDSA signature.
|
||||||
|
|
@ -88,6 +84,6 @@ func CompressPubkey(pubkey *ecdsa.PublicKey) []byte {
|
||||||
}
|
}
|
||||||
|
|
||||||
// S256 returns an instance of the secp256k1 curve.
|
// S256 returns an instance of the secp256k1 curve.
|
||||||
func S256() elliptic.Curve {
|
func S256() EllipticCurve {
|
||||||
return secp256k1.S256()
|
return secp256k1.S256()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,9 +21,9 @@ package crypto
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/ecdsa"
|
"crypto/ecdsa"
|
||||||
"crypto/elliptic"
|
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"math/big"
|
||||||
|
|
||||||
"github.com/btcsuite/btcd/btcec/v2"
|
"github.com/btcsuite/btcd/btcec/v2"
|
||||||
btc_ecdsa "github.com/btcsuite/btcd/btcec/v2/ecdsa"
|
btc_ecdsa "github.com/btcsuite/btcd/btcec/v2/ecdsa"
|
||||||
|
|
@ -58,7 +58,13 @@ func SigToPub(hash, sig []byte) (*ecdsa.PublicKey, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return pub.ToECDSA(), nil
|
// We need to explicitly set the curve here, because we're wrapping
|
||||||
|
// the original curve to add (un-)marshalling
|
||||||
|
return &ecdsa.PublicKey{
|
||||||
|
Curve: S256(),
|
||||||
|
X: pub.X(),
|
||||||
|
Y: pub.Y(),
|
||||||
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sign calculates an ECDSA signature.
|
// Sign calculates an ECDSA signature.
|
||||||
|
|
@ -73,7 +79,7 @@ func Sign(hash []byte, prv *ecdsa.PrivateKey) ([]byte, error) {
|
||||||
if len(hash) != 32 {
|
if len(hash) != 32 {
|
||||||
return nil, fmt.Errorf("hash is required to be exactly 32 bytes (%d)", len(hash))
|
return nil, fmt.Errorf("hash is required to be exactly 32 bytes (%d)", len(hash))
|
||||||
}
|
}
|
||||||
if prv.Curve != btcec.S256() {
|
if prv.Curve != S256() {
|
||||||
return nil, errors.New("private key curve is not secp256k1")
|
return nil, errors.New("private key curve is not secp256k1")
|
||||||
}
|
}
|
||||||
// ecdsa.PrivateKey -> btcec.PrivateKey
|
// ecdsa.PrivateKey -> btcec.PrivateKey
|
||||||
|
|
@ -128,7 +134,13 @@ func DecompressPubkey(pubkey []byte) (*ecdsa.PublicKey, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return key.ToECDSA(), nil
|
// We need to explicitly set the curve here, because we're wrapping
|
||||||
|
// the original curve to add (un-)marshalling
|
||||||
|
return &ecdsa.PublicKey{
|
||||||
|
Curve: S256(),
|
||||||
|
X: key.X(),
|
||||||
|
Y: key.Y(),
|
||||||
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// CompressPubkey encodes a public key to the 33-byte compressed format. The
|
// CompressPubkey encodes a public key to the 33-byte compressed format. The
|
||||||
|
|
@ -147,6 +159,38 @@ func CompressPubkey(pubkey *ecdsa.PublicKey) []byte {
|
||||||
}
|
}
|
||||||
|
|
||||||
// S256 returns an instance of the secp256k1 curve.
|
// S256 returns an instance of the secp256k1 curve.
|
||||||
func S256() elliptic.Curve {
|
func S256() EllipticCurve {
|
||||||
return btcec.S256()
|
return btCurve{btcec.S256()}
|
||||||
|
}
|
||||||
|
|
||||||
|
type btCurve struct {
|
||||||
|
*btcec.KoblitzCurve
|
||||||
|
}
|
||||||
|
|
||||||
|
// Marshall converts a point given as (x, y) into a byte slice.
|
||||||
|
func (curve btCurve) Marshal(x, y *big.Int) []byte {
|
||||||
|
byteLen := (curve.Params().BitSize + 7) / 8
|
||||||
|
|
||||||
|
ret := make([]byte, 1+2*byteLen)
|
||||||
|
ret[0] = 4 // uncompressed point
|
||||||
|
|
||||||
|
x.FillBytes(ret[1 : 1+byteLen])
|
||||||
|
y.FillBytes(ret[1+byteLen : 1+2*byteLen])
|
||||||
|
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unmarshal converts a point, serialised by Marshal, into an x, y pair. On
|
||||||
|
// error, x = nil.
|
||||||
|
func (curve btCurve) Unmarshal(data []byte) (x, y *big.Int) {
|
||||||
|
byteLen := (curve.Params().BitSize + 7) / 8
|
||||||
|
if len(data) != 1+2*byteLen {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
if data[0] != 4 { // uncompressed form
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
x = new(big.Int).SetBytes(data[1 : 1+byteLen])
|
||||||
|
y = new(big.Int).SetBytes(data[1+byteLen:])
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -464,7 +464,6 @@ func (s *Server) loggingServerInterceptor(ctx context.Context, req interface{},
|
||||||
}
|
}
|
||||||
|
|
||||||
func setupLogger(logLevel int, loggingInfo LoggingConfig) {
|
func setupLogger(logLevel int, loggingInfo LoggingConfig) {
|
||||||
|
|
||||||
output := io.Writer(os.Stderr)
|
output := io.Writer(os.Stderr)
|
||||||
|
|
||||||
if loggingInfo.Json {
|
if loggingInfo.Json {
|
||||||
|
|
|
||||||
17
internal/ethapi/testdata/eth_getTransactionReceipt-state-sync-tx.json
vendored
Normal file
17
internal/ethapi/testdata/eth_getTransactionReceipt-state-sync-tx.json
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
{
|
||||||
|
"blockHash": "0x4d780246cde52e535f40603d47af8fa1aea807dd3065e1acd97127bea0922b3e",
|
||||||
|
"blockNumber": "0x6",
|
||||||
|
"contractAddress": null,
|
||||||
|
"cumulativeGasUsed": "0xe01c",
|
||||||
|
"effectiveGasPrice": "0x1ecb3fb4",
|
||||||
|
"from": "0x703c4b2bd70c169f5717101caee543299fc946c7",
|
||||||
|
"gasUsed": "0xe01c",
|
||||||
|
"logs": [],
|
||||||
|
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
||||||
|
"status": "0x1",
|
||||||
|
"to": null,
|
||||||
|
"transactionHash": "0xb5a1148819cfdfff9bfe70035524fec940eb735d89b76960b97751d01ae2a9f2",
|
||||||
|
"transactionIndex": "0x0",
|
||||||
|
"type": "0x1"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -22,7 +22,6 @@ import (
|
||||||
"crypto/aes"
|
"crypto/aes"
|
||||||
"crypto/cipher"
|
"crypto/cipher"
|
||||||
"crypto/ecdsa"
|
"crypto/ecdsa"
|
||||||
"crypto/elliptic"
|
|
||||||
"crypto/hmac"
|
"crypto/hmac"
|
||||||
"crypto/rand"
|
"crypto/rand"
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
|
|
@ -717,8 +716,10 @@ func exportPubkey(pub *ecies.PublicKey) []byte {
|
||||||
if pub == nil {
|
if pub == nil {
|
||||||
panic("nil pubkey")
|
panic("nil pubkey")
|
||||||
}
|
}
|
||||||
|
if curve, ok := pub.Curve.(crypto.EllipticCurve); ok {
|
||||||
return elliptic.Marshal(pub.Curve, pub.X, pub.Y)[1:]
|
return curve.Marshal(pub.X, pub.Y)[1:]
|
||||||
|
}
|
||||||
|
return []byte{}
|
||||||
}
|
}
|
||||||
|
|
||||||
func xor(one, other []byte) (xor []byte) {
|
func xor(one, other []byte) (xor []byte) {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
Source: bor
|
Source: bor
|
||||||
Version: 1.3.0
|
Version: 1.3.1
|
||||||
Section: develop
|
Section: develop
|
||||||
Priority: standard
|
Priority: standard
|
||||||
Maintainer: Polygon <release-team@polygon.technology>
|
Maintainer: Polygon <release-team@polygon.technology>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
Source: bor
|
Source: bor
|
||||||
Version: 1.3.0
|
Version: 1.3.1
|
||||||
Section: develop
|
Section: develop
|
||||||
Priority: standard
|
Priority: standard
|
||||||
Maintainer: Polygon <release-team@polygon.technology>
|
Maintainer: Polygon <release-team@polygon.technology>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
Source: bor-profile
|
Source: bor-profile
|
||||||
Version: 1.3.0
|
Version: 1.3.1
|
||||||
Section: develop
|
Section: develop
|
||||||
Priority: standard
|
Priority: standard
|
||||||
Maintainer: Polygon <release-team@polygon.technology>
|
Maintainer: Polygon <release-team@polygon.technology>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
Source: bor-profile
|
Source: bor-profile
|
||||||
Version: 1.3.0
|
Version: 1.3.1
|
||||||
Section: develop
|
Section: develop
|
||||||
Priority: standard
|
Priority: standard
|
||||||
Maintainer: Polygon <release-team@polygon.technology>
|
Maintainer: Polygon <release-team@polygon.technology>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
Source: bor-profile
|
Source: bor-profile
|
||||||
Version: 1.3.0
|
Version: 1.3.1
|
||||||
Section: develop
|
Section: develop
|
||||||
Priority: standard
|
Priority: standard
|
||||||
Maintainer: Polygon <release-team@polygon.technology>
|
Maintainer: Polygon <release-team@polygon.technology>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
Source: bor-profile
|
Source: bor-profile
|
||||||
Version: 1.3.0
|
Version: 1.3.1
|
||||||
Section: develop
|
Section: develop
|
||||||
Priority: standard
|
Priority: standard
|
||||||
Maintainer: Polygon <release-team@polygon.technology>
|
Maintainer: Polygon <release-team@polygon.technology>
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ import (
|
||||||
const (
|
const (
|
||||||
VersionMajor = 1 // Major version component of the current release
|
VersionMajor = 1 // Major version component of the current release
|
||||||
VersionMinor = 3 // Minor version component of the current release
|
VersionMinor = 3 // Minor version component of the current release
|
||||||
VersionPatch = 0 // Patch version component of the current release
|
VersionPatch = 1 // Patch version component of the current release
|
||||||
VersionMeta = "" // Version metadata to append to the version string
|
VersionMeta = "" // Version metadata to append to the version string
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue