github.com/vipernet-xyz/tendermint-core@v0.32.0/crypto/secp256k1/secp256k1_cgo_test.go (about)

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