Browse Source

fix apis for mp-interactive

par-agg-key-shares
Janmajaya Mall 9 months ago
parent
commit
2239fbe004
3 changed files with 14 additions and 26 deletions
  1. +2
    -5
      examples/interactive_fheuint8.rs
  2. +6
    -9
      src/bool/mp_api.rs
  3. +6
    -12
      src/bool/print_noise.rs

+ 2
- 5
examples/interactive_fheuint8.rs

@ -43,10 +43,7 @@ fn main() {
// After receiving others public key shares clients independently aggregate
// the shares and produce the collective public key `pk`
let pk_shares = cks
.iter()
.map(|k| interactive_multi_party_round1_share(k))
.collect_vec();
let pk_shares = cks.iter().map(|k| collective_pk_share(k)).collect_vec();
// Clients aggregate public key shares to produce collective public key `pk`
let pk = aggregate_public_key_shares(&pk_shares);
@ -67,7 +64,7 @@ fn main() {
let server_key_shares = cks
.iter()
.enumerate()
.map(|(user_id, k)| gen_mp_keys_phase2(k, user_id, no_of_parties, &pk))
.map(|(user_id, k)| collective_server_key_share(k, user_id, no_of_parties, &pk))
.collect_vec();
// Each client encrypts their private inputs using the collective public key

+ 6
- 9
src/bool/mp_api.rs

@ -61,9 +61,9 @@ pub fn gen_client_key() -> ClientKey {
BoolEvaluator::with_local(|e| e.client_key())
}
/// Generate client's share for collective public key, i.e round 1 share, in
/// round 1 of the 2 round protocol
pub fn interactive_multi_party_round1_share(
/// Generate client's share for collective public key, i.e round 1 share, of the
/// 2 round protocol
pub fn collective_pk_share(
ck: &ClientKey,
) -> CommonReferenceSeededCollectivePublicKeyShare<Vec<u64>, [u8; 32], BoolParameters<u64>> {
BoolEvaluator::with_local(|e| {
@ -73,8 +73,8 @@ pub fn interactive_multi_party_round1_share(
}
/// Generate clients share for collective server key, i.e. round 2, of the
/// protocol
pub fn gen_mp_keys_phase2<R, ModOp>(
/// 2 round protocol
pub fn collective_server_key_share<R, ModOp>(
ck: &ClientKey,
user_id: usize,
total_users: usize,
@ -322,10 +322,7 @@ mod tests {
let cks = (0..parties).map(|_| gen_client_key()).collect_vec();
// round 1
let pk_shares = cks
.iter()
.map(|k| interactive_multi_party_round1_share(k))
.collect_vec();
let pk_shares = cks.iter().map(|k| collective_pk_share(k)).collect_vec();
// collective pk
let pk = aggregate_public_key_shares(&pk_shares);

+ 6
- 12
src/bool/print_noise.rs

@ -392,7 +392,7 @@ mod tests {
evaluator::InteractiveMultiPartyCrs,
keys::{key_size::KeySize, ServerKeyEvaluationDomain},
},
gen_client_key, gen_mp_keys_phase2, interactive_multi_party_round1_share,
collective_pk_share, collective_server_key_share, gen_client_key,
parameters::CiphertextModulus,
random::DefaultSecureRng,
set_common_reference_seed, set_parameter_set,
@ -411,16 +411,13 @@ mod tests {
for i in 0..2 {
let cks = (0..parties).map(|_| gen_client_key()).collect_vec();
let pk_shares = cks
.iter()
.map(|k| interactive_multi_party_round1_share(k))
.collect_vec();
let pk_shares = cks.iter().map(|k| collective_pk_share(k)).collect_vec();
let pk = aggregate_public_key_shares(&pk_shares);
let server_key_shares = cks
.iter()
.enumerate()
.map(|(index, k)| gen_mp_keys_phase2(k, index, parties, &pk))
.map(|(index, k)| collective_server_key_share(k, index, parties, &pk))
.collect_vec();
// In 0th iteration measure server key size
@ -490,7 +487,7 @@ mod tests {
},
print_noise::collect_server_key_stats,
},
gen_client_key, gen_mp_keys_phase2, interactive_multi_party_round1_share,
collective_pk_share, collective_server_key_share, gen_client_key,
parameters::CiphertextModulus,
random::DefaultSecureRng,
set_common_reference_seed, set_parameter_set,
@ -510,10 +507,7 @@ mod tests {
let cks = (0..no_of_parties).map(|_| gen_client_key()).collect_vec();
// round 1
let pk_shares = cks
.iter()
.map(|k| interactive_multi_party_round1_share(k))
.collect_vec();
let pk_shares = cks.iter().map(|k| collective_pk_share(k)).collect_vec();
let pk = aggregate_public_key_shares(&pk_shares);
@ -521,7 +515,7 @@ mod tests {
let server_key_shares = cks
.iter()
.enumerate()
.map(|(user_id, k)| gen_mp_keys_phase2(k, user_id, no_of_parties, &pk))
.map(|(user_id, k)| collective_server_key_share(k, user_id, no_of_parties, &pk))
.collect_vec();
let server_key = aggregate_server_key_shares(&server_key_shares);

Loading…
Cancel
Save