struct GNUNET_IDENTITY_ATTRIBUTE_ClaimListEntry *le;
struct GNUNET_IDENTITY_ATTRIBUTE_ClaimListEntry *result_le;
struct GNUNET_IDENTITY_ATTRIBUTE_ClaimList *result;
- size_t len;
result = GNUNET_new (struct GNUNET_IDENTITY_ATTRIBUTE_ClaimList);
for (le = attrs->list_head; NULL != le; le = le->next)
{
result_le = GNUNET_new (struct GNUNET_IDENTITY_ATTRIBUTE_ClaimListEntry);
- len = sizeof (struct GNUNET_IDENTITY_ATTRIBUTE_Claim) + le->claim->data_size;
- result_le->claim = GNUNET_malloc (len);
- GNUNET_memcpy (result_le->claim,
- le->claim,
- len);
- result_le->claim->name = (const char*)&result_le->claim[1];
+ result_le->claim = GNUNET_IDENTITY_ATTRIBUTE_claim_new (le->claim->name,
+ le->claim->type,
+ le->claim->data,
+ le->claim->data_size);
GNUNET_CONTAINER_DLL_insert (result->list_head,
result->list_tail,
result_le);
cleanup_revoke_ticket_handle (rh);
}
+
+/**
+ * Revoke next attribte by reencryption with
+ * new ABE master
+ */
+static void
+reenc_next_attribute (void *cls);
+
/**
* Check for existing attribute and overwrite
*/
size_t buf_size;
char* policy;
uint32_t attr_ver;
-
+
+ if (1 != rd_count) {
+ GNUNET_SCHEDULER_add_now (&reenc_next_attribute,
+ rh);
+ return;
+ }
buf_size = GNUNET_IDENTITY_ATTRIBUTE_serialize_get_size (rh->attrs->list_head->claim);
buf = GNUNET_malloc (buf_size);
* new ABE master
*/
static void
-reenc_next_attribute (struct TicketRevocationHandle *rh)
+reenc_next_attribute (void *cls)
{
+ struct TicketRevocationHandle *rh = cls;
if (NULL == rh->attrs->list_head)
{
revocation_reissue_tickets (rh);