fn sum_common_values()

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