github.com/okex/exchain@v1.8.0/libs/tendermint/crypto/secp256k1/secp256k1_cgo_test.go (about) 1 //go:build libsecp256k1 2 // +build libsecp256k1 3 4 package secp256k1 5 6 import ( 7 "testing" 8 9 "github.com/magiconair/properties/assert" 10 11 "github.com/stretchr/testify/require" 12 ) 13 14 func TestPrivKeySecp256k1SignVerify(t *testing.T) { 15 msg := []byte("A.1.2 ECC Key Pair Generation by Testing Candidates") 16 priv := GenPrivKey() 17 tests := []struct { 18 name string 19 privKey PrivKeySecp256k1 20 wantSignErr bool 21 wantVerifyPasses bool 22 }{ 23 {name: "valid sign-verify round", privKey: priv, wantSignErr: false, wantVerifyPasses: true}, 24 {name: "invalid private key", privKey: [32]byte{}, wantSignErr: true, wantVerifyPasses: false}, 25 } 26 for _, tt := range tests { 27 t.Run(tt.name, func(t *testing.T) { 28 got, err := tt.privKey.Sign(msg) 29 if tt.wantSignErr { 30 require.Error(t, err) 31 t.Logf("Got error: %s", err) 32 return 33 } 34 require.NoError(t, err) 35 require.NotNil(t, got) 36 37 pub := tt.privKey.PubKey() 38 assert.Equal(t, tt.wantVerifyPasses, pub.VerifyBytes(msg, got)) 39 }) 40 } 41 }