cryptofun/bls/bls_test.go
bls/bls_test.goRaw
1package bls
2
3import (
4 "fmt"
5 "math/big"
6 "testing"
7
8 "github.com/stretchr/testify/assert"
9)
10
11func TestBls(t *testing.T) {
12 bls, err := NewBLS()
13 assert.Nil(t, err)
14 keys0, err := bls.NewKeys()
15 assert.Nil(t, err)
16
17 fmt.Println("privK:", keys0.PrivK)
18 fmt.Println("pubK:", keys0.PubK)
19
20 m0 := []byte("message0")
21 sig0 := bls.Sign(keys0.PrivK, m0)
22 fmt.Println("signature:", sig0)
23
24 verified := bls.Verify(m0, sig0, keys0.PubK)
25 fmt.Println("one signature verified:", verified)
26 assert.True(t, verified)
27
28 // signature aggregation
29 keys1, err := bls.NewKeys()
30 assert.Nil(t, err)
31 sig1 := bls.Sign(keys1.PrivK, m0)
32 assert.True(t, bls.Verify(m0, sig1, keys1.PubK))
33
34 keys2, err := bls.NewKeys()
35 assert.Nil(t, err)
36 sig2 := bls.Sign(keys2.PrivK, m0)
37
38 aggr := bls.AggregateSignatures(sig0, sig1, sig2)
39
40 pubKArray := [][3]*big.Int{keys0.PubK, keys1.PubK, keys2.PubK}
41 verified = bls.VerifyAggregatedSignatures(aggr, pubKArray, m0)
42 fmt.Println("signature aggregation verified:", verified)
43 assert.True(t, verified)
44
45}