From 7b6cf27fe3a673d43e75bb193f61cef20717492d Mon Sep 17 00:00:00 2001 From: lauener Date: Fri, 16 Aug 2024 15:15:45 +0200 Subject: [PATCH] Update benchmark --- pairing/bls12381/bls12381_test.go | 36 +++++++++++++++++++++++-------- util/test/benchmark.go | 17 +++++++++------ 2 files changed, 37 insertions(+), 16 deletions(-) diff --git a/pairing/bls12381/bls12381_test.go b/pairing/bls12381/bls12381_test.go index 5b9e007ee..38d3a1f1d 100644 --- a/pairing/bls12381/bls12381_test.go +++ b/pairing/bls12381/bls12381_test.go @@ -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" @@ -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) @@ -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 { @@ -730,23 +732,39 @@ 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) } @@ -754,7 +772,7 @@ func BLSBenchmark(b *testing.B, curveOption string) { }) 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) } diff --git a/util/test/benchmark.go b/util/test/benchmark.go index a1c1f69d5..f66730bed 100644 --- a/util/test/benchmark.go +++ b/util/test/benchmark.go @@ -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) @@ -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++ { @@ -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 { @@ -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) + } + } } }