fn create_id_map()

in protocol/src/private_id/partner.rs [139:183]


    fn create_id_map(&self, partner: TPayload, company: TPayload, na_val: Option<&str>) {
        match (
            self.permutation.clone().read(),
            self.plain_data.clone().read(),
            self.id_map.clone().write(),
        ) {
            (Ok(pm), Ok(plain_data), Ok(mut id_map)) => {
                let mut partner_encrypt = self
                    .ec_cipher
                    .to_points_encrypt(&partner, &self.private_keys.1);
                undo_permute(&pm, &mut partner_encrypt);

                for (k, v) in self
                    .ec_cipher
                    .to_bytes(&partner_encrypt)
                    .iter()
                    .zip(plain_data.get_plain_keys().iter())
                {
                    let record = plain_data.get_record_with_keys(k.to_string(), v);
                    id_map.push(record);
                }

                for k in self
                    .ec_cipher
                    .to_bytes(
                        &self
                            .ec_cipher
                            .to_points_encrypt(&company, &self.private_keys.1),
                    )
                    .iter()
                {
                    let record = plain_data.get_empty_record_with_key(
                        k.to_string(),
                        na_val.map(String::from).as_ref(),
                    );
                    id_map.push(record);
                }

                if !plain_data.headers.is_empty() {
                    id_map.insert(0, plain_data.headers.clone());
                }
            }
            _ => panic!("Cannot make v"),
        }
    }