arnaucube
arnaucube/cryptofunPublic Self-hosted repository
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}