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	m1 := []byte("message1")
32	sig1 := bls.Sign(keys1.PrivK, m1)
33
34	keys2, err := bls.NewKeys()
35	assert.Nil(t, err)
36	m2 := []byte("message2")
37	sig2 := bls.Sign(keys2.PrivK, m2)
38
39	aggr := bls.AggregateSignatures(sig0, sig1, sig2)
40
41	pubKArray := [][3]*big.Int{keys0.PubK, keys1.PubK, keys2.PubK}
42	mArray := [][]byte{m0, m1, m2}
43	verified = bls.VerifyAggregatedSignatures(aggr, pubKArray, mArray)
44	fmt.Println("signature aggregation verified:", verified)
45	assert.True(t, verified)
46
47}