def METHOD_NAME(self, data_instances, keep_key=True):
    self.init_curve()
    LOGGER.info(f"curve instance obtained")
    # 1st ID encrypt: (Eh, (h, Instance))
    self.id_local_first = self._encrypt_id(data_instances,
                                           self.curve_instance,
                                           reserve_original_key=keep_key,
                                           hash_operator=self.hash_operator,
                                           salt=self.salt,
                                           reserve_original_value=keep_key)
    LOGGER.info("encrypted local id for the 1st time")
    # send (Eh, -1), get (Eg, -1)
    id_remote_first = self._exchange_id(self.id_local_first, keep_key)
    # 2nd ID encrypt & send doubly encrypted guest ID list to guest
    id_remote_second = self._sign_id(id_remote_first,
                                     self.curve_instance,
                                     reserve_original_key=keep_key)  # (EEg, Eg)
    LOGGER.info("encrypted guest id for the 2nd time")
    self._sync_doubly_encrypted_id(id_remote_second)