|
|
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)
}
|