Skip to content

Commit

Permalink
Update benchmark
Browse files Browse the repository at this point in the history
  • Loading branch information
K1li4nL committed Aug 16, 2024
1 parent d804bae commit 7b6cf27
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 16 deletions.
36 changes: 27 additions & 9 deletions pairing/bls12381/bls12381_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ import (
"go.dedis.ch/kyber/v4/pairing"
circl "go.dedis.ch/kyber/v4/pairing/bls12381/circl"
kilic "go.dedis.ch/kyber/v4/pairing/bls12381/kilic"
"go.dedis.ch/kyber/v4/sign"
"go.dedis.ch/kyber/v4/sign/bdn"
"go.dedis.ch/kyber/v4/sign/bls"
"go.dedis.ch/kyber/v4/sign/tbls"
"go.dedis.ch/kyber/v4/util/random"
Expand Down Expand Up @@ -665,14 +667,14 @@ var (
var result interface{}

func BenchmarkKilic(b *testing.B) {
BLSBenchmark(b, "kilic")
BDNBenchmark(b, "kilic")
}

func BenchmarkCircl(b *testing.B) {
BLSBenchmark(b, "circl")
BDNBenchmark(b, "circl")
}

func BLSBenchmark(b *testing.B, curveOption string) {
func BDNBenchmark(b *testing.B, curveOption string) {
b.Logf("----------------------")
b.Logf("Payload to sign: %d bytes\n", dataSize)
b.Logf("Numbers of signatures: %v\n", numSigs)
Expand Down Expand Up @@ -700,8 +702,8 @@ func BLSBenchmark(b *testing.B, curveOption string) {
panic(fmt.Errorf("invalid curve option: %s", curveOption))
}

schemeOnG1 := bls.NewSchemeOnG1(suite)
schemeOnG2 := bls.NewSchemeOnG2(suite)
schemeOnG1 := bdn.NewSchemeOnG1(suite)
schemeOnG2 := bdn.NewSchemeOnG2(suite)

maxN := 1
for _, s := range numSigs {
Expand Down Expand Up @@ -730,31 +732,47 @@ func BLSBenchmark(b *testing.B, curveOption string) {
}
}

// Prepare masks for aggregation
maskG1, err := sign.NewMask(pubKeysOnG1, pubKeysOnG1[0])
if err != nil {
panic(err)
}
maskG2, err := sign.NewMask(pubKeysOnG2, pubKeysOnG2[0])
if err != nil {
panic(err)
}
for _, n := range numSigs {

// Benchmark aggregation of public keys
b.Run(fmt.Sprintf("AggregatePublicKeys-G1 on %d signs", n), func(bb *testing.B) {
for j := 0; j < bb.N; j++ {
result = schemeOnG1.AggregatePublicKeys(pubKeysOnG1[:n]...)
result, err = schemeOnG1.AggregatePublicKeys(maskG1)
if err != nil {
panic(err)
}
}
})
b.Run(fmt.Sprintf("AggregatePublicKeys-G2 on %d signs", n), func(bb *testing.B) {
for j := 0; j < bb.N; j++ {
result = schemeOnG2.AggregatePublicKeys(pubKeysOnG2[:n]...)
result, err = schemeOnG2.AggregatePublicKeys(maskG2)
if err != nil {
panic(err)
}
}
})

// Benchmark aggregation of signatures
b.Run(fmt.Sprintf("AggregateSign-G1 on %d signs", n), func(bb *testing.B) {
for j := 0; j < bb.N; j++ {
result, err = schemeOnG1.AggregateSignatures(sigsOnG1[:n]...)
result, err = schemeOnG1.AggregateSignatures(sigsOnG1[:n], maskG1)
if err != nil {
panic(err)
}
}
})
b.Run(fmt.Sprintf("AggregateSign-G1 on %d signs", n), func(bb *testing.B) {
for j := 0; j < bb.N; j++ {
result, err = schemeOnG2.AggregateSignatures(sigsOnG2[:n]...)
result, err = schemeOnG2.AggregateSignatures(sigsOnG2[:n], maskG2)
if err != nil {
panic(err)
}
Expand Down
17 changes: 10 additions & 7 deletions util/test/benchmark.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import (
"go.dedis.ch/kyber/v4/util/random"
)

func PrepareBLS(numSigs int) (suite *bn256.Suite, scheme sign.AggregatableScheme,
func PrepareBLS(numSigs int) (suite *bn256.Suite, scheme sign.Scheme,
publics []kyber.Point, privates []kyber.Scalar, msgs [][]byte, sigs [][]byte) {
suite = bn256.NewSuite()
scheme = bls.NewSchemeOnG1(suite)
Expand Down Expand Up @@ -40,7 +40,7 @@ func PrepareBLS(numSigs int) (suite *bn256.Suite, scheme sign.AggregatableScheme
return suite, scheme, publics, privates, msgs, sigs
}

func BenchCreateKeys(b *testing.B, scheme sign.AggregatableScheme, n int) {
func BenchCreateKeys(b *testing.B, scheme sign.Scheme, n int) {
b.ResetTimer()
for i := 0; i < b.N; i++ {
for j := 0; j < n; j++ {
Expand All @@ -49,7 +49,7 @@ func BenchCreateKeys(b *testing.B, scheme sign.AggregatableScheme, n int) {
}
}

func BenchSign(b *testing.B, scheme sign.AggregatableScheme, msg []byte, privates []kyber.Scalar) {
func BenchSign(b *testing.B, scheme sign.Scheme, msg []byte, privates []kyber.Scalar) {
b.ResetTimer()
for i := 0; i < b.N; i++ {
for _, private := range privates {
Expand All @@ -59,12 +59,15 @@ func BenchSign(b *testing.B, scheme sign.AggregatableScheme, msg []byte, private
}
}

func BLSBenchVerify(b *testing.B, sigs [][]byte, scheme sign.AggregatableScheme,
func BLSBenchVerify(b *testing.B, sigs [][]byte, scheme sign.Scheme,
suite *bn256.Suite, publics []kyber.Point, msgs [][]byte) {
b.ResetTimer()
for i := 0; i < b.N; i++ {
aggregateSig, _ := scheme.AggregateSignatures(sigs...)
err := bls.BatchVerify(suite, publics, msgs, aggregateSig)
require.NoError(b, err)
for _, p := range publics {
for j, sig := range sigs {
err := scheme.Verify(p, msgs[j], sig)
require.NoError(b, err)
}
}
}
}

0 comments on commit 7b6cf27

Please sign in to comment.