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