github.com/zhiqiangxu/util@v0.0.0-20230112053021-0a7aee056cd5/crypto/signature/signature_test.go (about)

     1  package signature
     2  
     3  import (
     4  	"testing"
     5  
     6  	"gotest.tools/assert"
     7  )
     8  
     9  func TestSignature(t *testing.T) {
    10  	pri, pub, err := GenerateKeypair()
    11  
    12  	assert.Assert(t, err == nil)
    13  
    14  	msg := []byte("hello msg")
    15  	sig, err := Sign(pri, msg)
    16  	assert.Assert(t, err == nil)
    17  
    18  	ok, err := Verify(pub, msg, sig)
    19  	assert.Assert(t, err == nil && ok)
    20  
    21  	sigbytes, err := sig.Marshal()
    22  	assert.Assert(t, err == nil)
    23  	var sig2 Signature
    24  	err = sig2.Unmarshal(sigbytes)
    25  	assert.Assert(t, err == nil)
    26  	ok, err = Verify(pub, msg, &sig2)
    27  	assert.Assert(t, err == nil && ok)
    28  }
    29  
    30  func BenchmarkSignature(b *testing.B) {
    31  	pri, pub, _ := GenerateKeypair()
    32  	msg := []byte("hello msg")
    33  	b.RunParallel(func(pb *testing.PB) {
    34  		for pb.Next() {
    35  			sig, _ := Sign(pri, msg)
    36  
    37  			Verify(pub, msg, sig)
    38  		}
    39  
    40  	})
    41  }