From 4b1e6eecb75261f8b5c8fee4dc9b8dad9bcf089b Mon Sep 17 00:00:00 2001 From: Fletcher Haynes Date: Tue, 18 Sep 2018 09:36:38 -0700 Subject: [PATCH] Add benchmark for combining signatures --- benches/bench.rs | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/benches/bench.rs b/benches/bench.rs index bc67fdb..5cf4f90 100644 --- a/benches/bench.rs +++ b/benches/bench.rs @@ -9,6 +9,7 @@ use pairing::bls12_381::Fr; use threshold_crypto::poly::Poly; const TEST_DEGREES: [usize; 4] = [5, 10, 20, 40]; +const TEST_THRESHOLDS: [usize; 4] = [5, 10, 20, 40]; const RNG_SEED: [u32; 4] = [1, 2, 3, 4]; mod poly_benches { @@ -86,4 +87,45 @@ mod poly_benches { } } -criterion_main!(poly_benches::poly_benches); +mod public_key_set_benches { + use super::*; + use rand::{SeedableRng, XorShiftRng}; + use std::collections::BTreeMap; + use threshold_crypto::SecretKeySet; + + /// Benchmarks combining signatures + fn combine_signatures(c: &mut Criterion) { + let mut rng = XorShiftRng::from_seed(RNG_SEED); + let msg = "Test message"; + c.bench_function_over_inputs( + "Combine Signatures", + move |b, &&threshold| { + let sk_set = SecretKeySet::random(threshold, &mut rng); + let pk_set = sk_set.public_keys(); + let mut sig_parts: Vec = (0..threshold+1).collect(); + let pieces: &mut [usize] = &mut sig_parts; + let sigs: BTreeMap<_, _> = pieces + .iter() + .map(|&i| { + let sig = sk_set.secret_key_share(i).sign(msg); + (i, sig) + }).collect(); + b.iter(|| { + pk_set.combine_signatures(&sigs).expect("could not combine signatures"); + }) + }, + &TEST_THRESHOLDS, + ); + } + + criterion_group!{ + name = public_key_set_benches; + config = Criterion::default(); + targets = combine_signatures, + } +} + +criterion_main!( + //poly_benches::poly_benches, + public_key_set_benches::public_key_set_benches +);