github.com/platonnetwork/platon-go@v0.7.6/crypto/vrf/vrf_test.go (about) 1 package vrf 2 3 import ( 4 "crypto/ecdsa" 5 "crypto/rand" 6 "io" 7 "testing" 8 ) 9 10 func TestVrf(t *testing.T) { 11 for i := 0; i < 10; i++ { 12 sk, err := ecdsa.GenerateKey(curve, rand.Reader) 13 if nil != err { 14 t.Fatal("GenerateKey fail", err) 15 } 16 sk2, err := ecdsa.GenerateKey(curve, rand.Reader) 17 if nil != err { 18 t.Fatal("GenerateKey fail", err) 19 } 20 data := make([]byte, 32) 21 io.ReadFull(rand.Reader, data) 22 pi, err := Prove(sk, data) 23 if nil != err { 24 t.Fatal("Generate vrf proof failed", err) 25 } 26 ok, err := Verify(&sk.PublicKey, pi, data) 27 if nil != err || !ok { 28 t.Fatal("verification failed", err) 29 } 30 ok2, err := Verify(&sk2.PublicKey, pi, data) 31 if nil != err || ok2 { 32 t.Fatal("verification failed", err) 33 } 34 data = append(data, []byte("message")...) 35 ok3, err := Verify(&sk.PublicKey, pi, data) 36 if nil != err || ok3 { 37 t.Fatal("verification failed", err) 38 } 39 } 40 }