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 }