From c5634a9405a54ee34525ad1f78e9b78589b49e15 Mon Sep 17 00:00:00 2001 From: Piotr Roslaniec Date: Wed, 18 Jan 2023 17:40:24 +0100 Subject: [PATCH] fix after rebase --- ferveo/src/lib.rs | 6 ++++-- ferveo/src/vss/pvss.rs | 16 +++++++++++----- tpke/benches/benchmarks.rs | 1 + tpke/benches/tpke.rs | 7 +++++-- tpke/src/combine.rs | 5 ++--- tpke/src/decryption.rs | 2 -- tpke/src/lib.rs | 14 +++++++++----- 7 files changed, 32 insertions(+), 19 deletions(-) diff --git a/ferveo/src/lib.rs b/ferveo/src/lib.rs index 2a9cfc55..cb125135 100644 --- a/ferveo/src/lib.rs +++ b/ferveo/src/lib.rs @@ -84,7 +84,8 @@ mod test_dkg_full { &ciphertext, aad, &shared_secret, - ); + ) + .unwrap(); assert_eq!(plaintext, msg); } @@ -130,7 +131,8 @@ mod test_dkg_full { &ciphertext, aad, &shared_secret, - ); + ) + .unwrap(); assert_eq!(plaintext, msg); } } diff --git a/ferveo/src/vss/pvss.rs b/ferveo/src/vss/pvss.rs index 2d39e1a6..b4d7d96c 100644 --- a/ferveo/src/vss/pvss.rs +++ b/ferveo/src/vss/pvss.rs @@ -8,7 +8,7 @@ use ark_ec::PairingEngine; use ark_ff::UniformRand; use ark_serialize::*; use ferveo_common::{Keypair, PublicKey}; -use group_threshold_cryptography::Ciphertext; +use group_threshold_cryptography::{Ciphertext, DecryptionShareSimple}; use itertools::{zip_eq, Itertools}; use subproductdomain::fast_multiexp; @@ -259,8 +259,8 @@ pub fn make_decryption_shares( ciphertext: &Ciphertext, validator_keypairs: Vec>, aggregate: Vec, -) -> Vec { - let decryption_shares = aggregate +) -> Vec> { + aggregate .iter() .zip_eq(validator_keypairs.iter()) .map(|(encrypted_share, keypair)| { @@ -270,8 +270,14 @@ pub fn make_decryption_shares( let u = ciphertext.commitment; E::pairing(u, z_i) }) - .collect::>(); - decryption_shares + .enumerate() + .map( + |(decrypter_index, decryption_share)| DecryptionShareSimple { + decrypter_index, + decryption_share, + }, + ) + .collect::>() } #[cfg(test)] diff --git a/tpke/benches/benchmarks.rs b/tpke/benches/benchmarks.rs index e69de29b..8b137891 100644 --- a/tpke/benches/benchmarks.rs +++ b/tpke/benches/benchmarks.rs @@ -0,0 +1 @@ + diff --git a/tpke/benches/tpke.rs b/tpke/benches/tpke.rs index 965b004b..1ab7d2a8 100644 --- a/tpke/benches/tpke.rs +++ b/tpke/benches/tpke.rs @@ -110,7 +110,8 @@ impl SetupSimple { .collect(); let pub_contexts = contexts[0].clone().public_decryption_contexts; - let lagrange = prepare_combine_simple::(&pub_contexts); + let domain: Vec = pub_contexts.iter().map(|c| c.domain).collect(); + let lagrange = prepare_combine_simple::(&domain); let shared_secret = share_combine_simple::(&decryption_shares, &lagrange); @@ -203,7 +204,9 @@ pub fn bench_share_prepare(c: &mut Criterion) { }; let simple = { let setup = SetupSimple::new(shares_num, msg_size, rng); - move || black_box(prepare_combine_simple(&setup.pub_contexts)) + let domain: Vec = + setup.pub_contexts.iter().map(|c| c.domain).collect(); + move || black_box(prepare_combine_simple::(&domain)) }; group.bench_function( diff --git a/tpke/src/combine.rs b/tpke/src/combine.rs index bc0b655c..d98bb7b6 100644 --- a/tpke/src/combine.rs +++ b/tpke/src/combine.rs @@ -44,12 +44,11 @@ pub fn prepare_combine_fast( } pub fn prepare_combine_simple( - pub_contexts: &[PublicDecryptionContextSimple], + domain: &[E::Fr], ) -> Vec { - let shares_x: Vec<_> = pub_contexts.iter().map(|c| c.domain).collect(); // See https://en.wikipedia.org/wiki/Lagrange_polynomial#Optimal_algorithm // In this formula x_i = 0, hence numerator is x_m - lagrange_basis_at::(&shares_x, &E::Fr::zero()) + lagrange_basis_at::(domain, &E::Fr::zero()) } /// Calculate lagrange coefficients using optimized formula diff --git a/tpke/src/decryption.rs b/tpke/src/decryption.rs index 910ff2d8..b00f7379 100644 --- a/tpke/src/decryption.rs +++ b/tpke/src/decryption.rs @@ -3,8 +3,6 @@ use crate::*; -use ark_ec::ProjectiveCurve; - #[derive(Debug, Clone)] pub struct DecryptionShareFast { pub decrypter_index: usize, diff --git a/tpke/src/lib.rs b/tpke/src/lib.rs index d72b2321..8908b8ef 100644 --- a/tpke/src/lib.rs +++ b/tpke/src/lib.rs @@ -482,11 +482,14 @@ mod tests { .iter() .map(|c| c.create_share(&ciphertext)) .collect(); - let lagrange = prepare_combine_simple::( - &contexts[0].public_decryption_contexts, - ); + let domain = contexts[0] + .public_decryption_contexts + .iter() + .map(|c| c.domain) + .collect::>(); + let lagrange = prepare_combine_simple::(&domain); - let shared_secret = + let shared_secret = share_combine_simple::(&decryption_shares, &lagrange); test_ciphertext_validation_fails(msg, aad, &ciphertext, &shared_secret); @@ -549,7 +552,8 @@ mod tests { pub_contexts: &[PublicDecryptionContextSimple], decryption_shares: &[DecryptionShareSimple], ) -> E::Fqk { - let lagrange = prepare_combine_simple::(pub_contexts); + let domain = pub_contexts.iter().map(|c| c.domain).collect::>(); + let lagrange = prepare_combine_simple::(&domain); share_combine_simple::(decryption_shares, &lagrange) }