package bls import ( "fmt" "math/big" "testing" "github.com/stretchr/testify/assert" ) func TestBls(t *testing.T) { bls, err := NewBLS() assert.Nil(t, err) keys0, err := bls.NewKeys() assert.Nil(t, err) fmt.Println("privK:", keys0.PrivK) fmt.Println("pubK:", keys0.PubK) m0 := []byte("message0") sig0 := bls.Sign(keys0.PrivK, m0) fmt.Println("signature:", sig0) verified := bls.Verify(m0, sig0, keys0.PubK) fmt.Println("one signature verified:", verified) assert.True(t, verified) // signature aggregation keys1, err := bls.NewKeys() assert.Nil(t, err) sig1 := bls.Sign(keys1.PrivK, m0) assert.True(t, bls.Verify(m0, sig1, keys1.PubK)) keys2, err := bls.NewKeys() assert.Nil(t, err) sig2 := bls.Sign(keys2.PrivK, m0) aggr := bls.AggregateSignatures(sig0, sig1, sig2) pubKArray := [][3]*big.Int{keys0.PubK, keys1.PubK, keys2.PubK} verified = bls.VerifyAggregatedSignatures(aggr, pubKArray, m0) fmt.Println("signature aggregation verified:", verified) assert.True(t, verified) }