in protocol/src/pjc/company.rs [147:172]
fn sum_common_values(&self, feature_index: usize, values: TPayload) {
let _ = timer::Builder::new()
.label("company")
.silent(true)
.extra_label(format!("u_partner feature index {} he-sum", feature_index).as_str())
.build();
let masked_values: TPayload =
if let Ok(partner_mask) = self.partner_intersection_mask.clone().read() {
if partner_mask.is_empty() {
panic!("Partner mask is empty, send keys beforehand")
}
common::vectors::apply_mask(partner_mask.as_slice(), &values)
} else {
panic!("unable to get masked vals")
};
if let (Ok(public_key), Ok(mut enc_stats)) = (
self.partner_he_public_key.clone().read(),
self.encrypted_stats.clone().write(),
) {
let res = sum_reduce_with_key(&public_key, &masked_values);
enc_stats.push(vec![res]);
} else {
panic!("Unable to add additive shares with the intersection")
}
}