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  }