github.com/evdatsion/aphelion-dpos-bft@v0.32.1/crypto/secp256k1/secp256k1_cgo_test.go (about)

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