github.com/gnolang/gno@v0.0.0-20240520182011-228e9d0192ce/tm2/pkg/crypto/secp256k1/secp256k1_nocgo_test.go (about) 1 //go:build !libsecp256k1 2 3 package secp256k1 4 5 import ( 6 "testing" 7 8 "github.com/stretchr/testify/require" 9 ) 10 11 // Ensure that signature verification works, and that 12 // non-canonical signatures fail. 13 // Note: run with CGO_ENABLED=0 or go test -tags !cgo. 14 func TestSignatureVerificationAndRejectUpperS(t *testing.T) { 15 t.Parallel() 16 17 msg := []byte("We have lingered long enough on the shores of the cosmic ocean.") 18 for i := 0; i < 500; i++ { 19 priv := GenPrivKey() 20 sigStr, err := priv.Sign(msg) 21 require.NoError(t, err) 22 _, ok := signatureFromBytes(sigStr) 23 require.True(t, ok) 24 25 pub := priv.PubKey() 26 require.True(t, pub.VerifyBytes(msg, sigStr)) 27 } 28 } 29 30 func BenchmarkVerify(b *testing.B) { 31 priv := GenPrivKey() 32 msg := []byte("We have lingered long enough on the shores of the cosmic ocean.") 33 sigStr, err := priv.Sign(msg) 34 require.NoError(b, err) 35 36 pub := priv.PubKey() 37 b.ResetTimer() 38 39 for i := 0; i < b.N; i++ { 40 ok := pub.VerifyBytes(msg, sigStr) 41 require.True(b, ok) 42 } 43 }