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