From 4565c6e1e285b368a6d1ca2e7d977de4467ee6de Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Fri, 8 Dec 2017 16:02:43 +0100 Subject: [PATCH] crypto: add random test for pubkey compression --- crypto/signature_test.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/crypto/signature_test.go b/crypto/signature_test.go index e7e2b67db3..2e67f6f76f 100644 --- a/crypto/signature_test.go +++ b/crypto/signature_test.go @@ -19,6 +19,7 @@ package crypto import ( "bytes" "crypto/ecdsa" + "reflect" "testing" "github.com/ethereum/go-ethereum/common" @@ -100,6 +101,24 @@ func TestCompressPubkey(t *testing.T) { } } +func TestPubkeyRandom(t *testing.T) { + const runs = 200 + + for i := 0; i < runs; i++ { + key, err := GenerateKey() + if err != nil { + t.Fatalf("iteration %d: %v", i, err) + } + pubkey2, err := DecompressPubkey(CompressPubkey(&key.PublicKey)) + if err != nil { + t.Fatalf("iteration %d: %v", i, err) + } + if !reflect.DeepEqual(key.PublicKey, *pubkey2) { + t.Fatalf("iteration %d: keys not equal", i) + } + } +} + func BenchmarkEcrecoverSignature(b *testing.B) { for i := 0; i < b.N; i++ { if _, err := Ecrecover(testmsg, testsig); err != nil {