prysm-pulse/crypto/ecdsa/utils_test.go
Preston Van Loon 6bea17cb54
Update libp2p to support go 1.19 (#11309)
* Update libp2p to support go 1.19

* gaz

* go mod tidy

* Only update the minimum deps

* go mod tidy

* revert .bazelrc

* Update go-libp2p to v0.22.0 and update import paths (#11440)

* Fix import paths

* Fix go-libp2p-peerstore import

* Bazel updates

* fix

* revert some comments changes

* revert some comment stuff

* fix dependency issues

* vendor problematic library

* use your brain

* remove

* tests

Co-authored-by: Marco Munizaga <marco@marcopolo.io>
Co-authored-by: Nishant Das <nishdas93@gmail.com>
2022-10-07 15:24:51 +08:00

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)
}