mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2024-12-25 04:47:18 +00:00
d077483577
* v3 import renamings * tidy * fmt * rev * Update beacon-chain/core/epoch/precompute/reward_penalty_test.go * Update beacon-chain/core/helpers/validators_test.go * Update beacon-chain/db/alias.go * Update beacon-chain/db/alias.go * Update beacon-chain/db/alias.go * Update beacon-chain/db/iface/BUILD.bazel * Update beacon-chain/db/kv/kv.go * Update beacon-chain/db/kv/state.go * Update beacon-chain/rpc/prysm/v1alpha1/validator/attester_test.go * Update beacon-chain/rpc/prysm/v1alpha1/validator/attester_test.go * Update beacon-chain/sync/initial-sync/service.go * fix deps * fix bad replacements * fix bad replacements * change back * gohashtree version * fix deps Co-authored-by: Nishant Das <nishdas93@gmail.com> Co-authored-by: Potuz <potuz@prysmaticlabs.com>
48 lines
1.3 KiB
Go
48 lines
1.3 KiB
Go
package ecdsa
|
|
|
|
import (
|
|
"crypto/ecdsa"
|
|
"crypto/rand"
|
|
"math/big"
|
|
"testing"
|
|
|
|
"github.com/btcsuite/btcd/btcec/v2"
|
|
gcrypto "github.com/ethereum/go-ethereum/crypto"
|
|
"github.com/libp2p/go-libp2p-core/crypto"
|
|
"github.com/prysmaticlabs/prysm/v3/testing/assert"
|
|
"github.com/prysmaticlabs/prysm/v3/testing/require"
|
|
)
|
|
|
|
func TestConvertToInterfacePubkey(t *testing.T) {
|
|
privKey, err := gcrypto.GenerateKey()
|
|
require.NoError(t, err)
|
|
|
|
pubkey, ok := privKey.Public().(*ecdsa.PublicKey)
|
|
require.NotEqual(t, false, ok)
|
|
|
|
altPubkey, err := ConvertToInterfacePubkey(pubkey)
|
|
require.NoError(t, err)
|
|
|
|
nKey := *(altPubkey.(*crypto.Secp256k1PublicKey))
|
|
rawKey := btcec.PublicKey(nKey).SerializeUncompressed()
|
|
origRawKey := gcrypto.FromECDSAPub(pubkey)
|
|
assert.DeepEqual(t, origRawKey, rawKey)
|
|
}
|
|
|
|
func TestConvertToInterfacePrivkey_HandlesShorterKeys(t *testing.T) {
|
|
priv, _, err := crypto.GenerateSecp256k1Key(rand.Reader)
|
|
assert.NoError(t, err)
|
|
rawBytes, err := priv.Raw()
|
|
assert.NoError(t, err)
|
|
// Zero-out most significant byte so that the big int normalizes
|
|
// it by removing it.
|
|
rawBytes[0] = 0
|
|
privKey := new(ecdsa.PrivateKey)
|
|
k := new(big.Int).SetBytes(rawBytes)
|
|
privKey.D = k
|
|
privKey.Curve = gcrypto.S256()
|
|
privKey.X, privKey.Y = gcrypto.S256().ScalarBaseMult(rawBytes)
|
|
_, err = ConvertToInterfacePrivkey(privKey)
|
|
assert.NoError(t, err)
|
|
}
|