fn calculate_set_diff()

in protocol/src/private_id/company.rs [229:264]


    fn calculate_set_diff(&self) -> Result<(), ProtocolError> {
        match (
            self.e_partner.clone().read(),
            self.e_company.clone().read(),
            self.s_prime_company.clone().write(),
            self.s_prime_partner.clone().write(),
        ) {
            (Ok(e_partner), Ok(e_company), Ok(mut s_prime_company), Ok(mut s_prime_partner)) => {
                let e_company_bytes = self
                    .ec_cipher
                    .encrypt_to_bytes(&e_company, &self.private_keys.1);
                let e_partner_bytes = self
                    .ec_cipher
                    .encrypt_to_bytes(&e_partner, &self.private_keys.1);

                s_prime_partner.clear();
                s_prime_partner.extend(common::vectors::subtract_set(
                    &e_partner_bytes,
                    &e_company_bytes,
                ));

                s_prime_company.clear();
                s_prime_company.extend(common::vectors::subtract_set(
                    &e_company_bytes,
                    &e_partner_bytes,
                ));
                Ok(())
            }
            _ => {
                error!("Unable to obtain locks to buffers for set diff operation");
                Err(ProtocolError::ErrorCalcSetDiff(
                    "cannot calculate set difference".to_string(),
                ))
            }
        }
    }