move to 256-bit identifier; some cleanups
authorSchanzenbach, Martin <mschanzenbach@posteo.de>
Mon, 3 Feb 2020 20:51:57 +0000 (21:51 +0100)
committerSchanzenbach, Martin <mschanzenbach@posteo.de>
Mon, 3 Feb 2020 20:51:57 +0000 (21:51 +0100)
src/include/gnunet_reclaim_attribute_lib.h
src/include/gnunet_reclaim_service.h
src/reclaim-attribute/reclaim_attribute.c
src/reclaim-attribute/reclaim_attribute.h
src/reclaim/gnunet-reclaim.c
src/reclaim/gnunet-service-reclaim.c
src/reclaim/gnunet-service-reclaim_tickets.c
src/reclaim/json_reclaim.c
src/reclaim/oidc_helper.c
src/reclaim/plugin_rest_reclaim.c
src/reclaim/reclaim_api.c

index 004f2bd10cf2a3b3d41d3d4295b14f9020be51c9..93b4f8a137ddef84516baba7af0650380ee9f4d1 100644 (file)
@@ -60,6 +60,37 @@ extern "C" {
 */
 #define GNUNET_RECLAIM_ATTESTATION_TYPE_JWT 11
 
+/**
+ * We want an ID to be a 256-bit symmetric key
+ */
+#define GNUNET_RECLAIM_ID_LENGTH (256 / 8)
+
+/**
+ * A reclaim identifier
+ * FIXME maybe put this in a different namespace
+ */
+struct GNUNET_RECLAIM_Identifier
+{
+  char id[GNUNET_RECLAIM_ID_LENGTH];
+};
+
+static const struct GNUNET_RECLAIM_Identifier GNUNET_RECLAIM_ID_ZERO;
+
+#define GNUNET_RECLAIM_id_is_equal(a,b) ((0 == \
+                                   memcmp (a,\
+                                           b,\
+                                           sizeof (GNUNET_RECLAIM_ID_ZERO))) ?\
+                                           GNUNET_YES : GNUNET_NO)
+
+
+#define GNUNET_RECLAIM_id_is_zero(a) GNUNET_RECLAIM_id_is_equal(a,\
+                                                                &GNUNET_RECLAIM_ID_ZERO)
+
+#define GNUNET_RECLAIM_id_generate(id) \
+  (GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_STRONG,\
+                               id,\
+                               sizeof (GNUNET_RECLAIM_ID_ZERO)))
+
 /**
  * An attribute.
  */
@@ -68,7 +99,7 @@ struct GNUNET_RECLAIM_ATTRIBUTE_Claim
   /**
    * ID
    */
-  uint64_t id;
+  struct GNUNET_RECLAIM_Identifier id;
 
   /**
    * Type of Claim
@@ -106,7 +137,7 @@ struct GNUNET_RECLAIM_ATTESTATION_Claim
   /**
    * ID
    */
-  uint64_t id;
+  struct GNUNET_RECLAIM_Identifier id;
 
   /**
    * Type/Format of Claim
@@ -114,9 +145,9 @@ struct GNUNET_RECLAIM_ATTESTATION_Claim
   uint32_t type;
 
   /**
-   * Version
+   * Flag
    */
-  uint32_t version;
+  uint32_t flag;
 
   /**
    * The name of the attribute. Note "name" must never be individually
@@ -145,12 +176,12 @@ struct GNUNET_RECLAIM_ATTESTATION_REFERENCE
   /**
    * ID
    */
-  uint64_t id;
+  struct GNUNET_RECLAIM_Identifier id;
 
   /**
    * Referenced ID of Attestation
    */
-  uint64_t id_attest;
+  struct GNUNET_RECLAIM_Identifier id_attest;
 
   /**
    * The name of the attribute/attestation reference value. Note "name" must never be individually
index 214cdba690dc7ff2f4979e779bd7dfcd681e96a4..b20809a492d4006f8852b2bba516d6fe6f3ede92 100644 (file)
@@ -77,9 +77,9 @@ struct GNUNET_RECLAIM_Ticket
   struct GNUNET_CRYPTO_EcdsaPublicKey audience;
 
   /**
-   * The ticket random (NBO)
+   * The ticket random identifier
    */
-  uint64_t rnd;
+  struct GNUNET_RECLAIM_Identifier rnd;
 };
 
 
index 43199c1081770af61817513b0bd1e4190f69b7ac..07d8200c6d45c97cf8c104bc9187243c646ddff7 100644 (file)
@@ -389,7 +389,7 @@ GNUNET_RECLAIM_ATTESTATION_claim_new (const char *attr_name,
                         + strlen (attr_name_tmp) + 1 + data_size);
   attr->type = type;
   attr->data_size = data_size;
-  attr->version = 0;
+  attr->flag = 0;
   write_ptr = (char *) &attr[1];
   GNUNET_memcpy (write_ptr, attr_name_tmp, strlen (attr_name_tmp) + 1);
   attr->name = write_ptr;
@@ -797,8 +797,8 @@ GNUNET_RECLAIM_ATTRIBUTE_serialize (
 
   attr_ser = (struct Attribute *) result;
   attr_ser->attribute_type = htons (attr->type);
-  attr_ser->attribute_version = htonl (attr->flag);
-  attr_ser->attribute_id = GNUNET_htonll (attr->id);
+  attr_ser->attribute_flag = htonl (attr->flag);
+  attr_ser->attribute_id = attr->id;
   name_len = strlen (attr->name);
   attr_ser->name_len = htons (name_len);
   write_ptr = (char *) &attr_ser[1];
@@ -847,8 +847,8 @@ GNUNET_RECLAIM_ATTRIBUTE_deserialize (const char *data, size_t data_size)
   attr = GNUNET_malloc (sizeof(struct GNUNET_RECLAIM_ATTRIBUTE_Claim)
                         + data_len + name_len + 1);
   attr->type = ntohs (attr_ser->attribute_type);
-  attr->flag = ntohl (attr_ser->attribute_version);
-  attr->id = GNUNET_ntohll (attr_ser->attribute_id);
+  attr->flag = ntohl (attr_ser->attribute_flag);
+  attr->id = attr_ser->attribute_id;
   attr->data_size = data_len;
 
   write_ptr = (char *) &attr[1];
@@ -895,8 +895,8 @@ GNUNET_RECLAIM_ATTESTATION_serialize (
 
   attr_ser = (struct Attestation *) result;
   attr_ser->attestation_type = htons (attr->type);
-  attr_ser->attestation_version = htonl (attr->version);
-  attr_ser->attestation_id = GNUNET_htonll (attr->id);
+  attr_ser->attestation_flag = htonl (attr->flag);
+  attr_ser->attestation_id = attr->id;
   name_len = strlen (attr->name);
   attr_ser->name_len = htons (name_len);
   write_ptr = (char *) &attr_ser[1];
@@ -944,8 +944,8 @@ GNUNET_RECLAIM_ATTESTATION_deserialize (const char *data, size_t data_size)
   attr = GNUNET_malloc (sizeof(struct GNUNET_RECLAIM_ATTESTATION_Claim)
                         + data_len + name_len + 1);
   attr->type = ntohs (attr_ser->attestation_type);
-  attr->version = ntohl (attr_ser->attestation_version);
-  attr->id = GNUNET_ntohll (attr_ser->attestation_id);
+  attr->flag = ntohl (attr_ser->attestation_flag);
+  attr->id = attr_ser->attestation_id;
   attr->data_size = data_len;
 
   write_ptr = (char *) &attr[1];
@@ -991,8 +991,8 @@ GNUNET_RECLAIM_ATTESTATION_REF_serialize (
   struct Attestation_Reference *attr_ser;
   char *write_ptr;
   attr_ser = (struct Attestation_Reference *) result;
-  attr_ser->reference_id = GNUNET_htonll (attr->id);
-  attr_ser->attestation_id = GNUNET_htonll (attr->id_attest);
+  attr_ser->reference_id = attr->id;
+  attr_ser->attestation_id = attr->id_attest;
   name_len = strlen (attr->name);
   refval_len = strlen (attr->reference_value);
   attr_ser->name_len = htons (name_len);
@@ -1038,8 +1038,8 @@ GNUNET_RECLAIM_ATTESTATION_REF_deserialize (const char *data, size_t data_size)
   attr = GNUNET_malloc (sizeof(struct GNUNET_RECLAIM_ATTESTATION_REFERENCE)
                         + refval_len + name_len + 2);
 
-  attr->id = GNUNET_ntohll (attr_ser->reference_id);
-  attr->id_attest = GNUNET_ntohll (attr_ser->attestation_id);
+  attr->id = attr_ser->reference_id;
+  attr->id_attest = attr_ser->attestation_id;
 
   write_ptr = (char *) &attr[1];
   GNUNET_memcpy (write_ptr, &attr_ser[1], name_len);
index 80f1e5aacfdc5c291f23cad21e24033ab6e2876e..0746df48e827cfe401542b1405b39568d729b6a2 100644 (file)
@@ -39,14 +39,14 @@ struct Attribute
   uint32_t attribute_type;
 
   /**
-   * Attribute version
+   * Attribute flag
    */
-  uint32_t attribute_version;
+  uint32_t attribute_flag;
 
   /**
    * Attribute ID
    */
-  uint64_t attribute_id;
+  struct GNUNET_RECLAIM_Identifier attribute_id;
 
   /**
    * Name length
@@ -72,14 +72,14 @@ struct Attestation
   uint32_t attestation_type;
 
   /**
-   * Attestation version
+   * Attestation flag
    */
-  uint32_t attestation_version;
+  uint32_t attestation_flag;
 
   /**
    * Attestation ID
    */
-  uint64_t attestation_id;
+  struct GNUNET_RECLAIM_Identifier attestation_id;
 
   /**
    * Name length
@@ -102,12 +102,12 @@ struct Attestation_Reference
   /**
    * Reference ID
    */
-  uint64_t reference_id;
+  struct GNUNET_RECLAIM_Identifier reference_id;
 
   /**
    * The ID of the referenced attestation
    */
-  uint64_t attestation_id;
+  struct GNUNET_RECLAIM_Identifier attestation_id;
 
   /**
    * Claim Name length
index 5f9170f059b38cc9d5f9ca799084bce1a77c3d2a..c3d305eb51bfa1010244efaf33f41a9c489d49a1 100644 (file)
@@ -227,7 +227,7 @@ static void
 process_attrs (void *cls,
                const struct GNUNET_CRYPTO_EcdsaPublicKey *identity,
                const struct GNUNET_RECLAIM_ATTRIBUTE_Claim *attr,
-               const struct GNUNET_RECLAIM_ATTESTATION_Claim *attest, 
+               const struct GNUNET_RECLAIM_ATTESTATION_Claim *attest,
                const struct GNUNET_RECLAIM_ATTESTATION_REFERENCE *reference)
 {
   char *value_str;
@@ -249,9 +249,9 @@ process_attrs (void *cls,
                                                         attr->data,
                                                         attr->data_size);
   attr_type = GNUNET_RECLAIM_ATTRIBUTE_number_to_typename (attr->type);
-  id = GNUNET_STRINGS_data_to_string_alloc (&attr->id, sizeof(uint64_t));
+  id = GNUNET_STRINGS_data_to_string_alloc (&attr->id, sizeof(attr->id));
   fprintf (stdout,
-           "Name: %s; Value: %s (%s); Version %u; ID: %s\n",
+           "Name: %s; Value: %s (%s); Flag %u; ID: %s\n",
            attr->name,
            value_str,
            attr_type,
@@ -289,7 +289,7 @@ ticket_iter (void *cls, const struct GNUNET_RECLAIM_Ticket *ticket)
     GNUNET_STRINGS_data_to_string_alloc (&ticket->audience,
                                          sizeof(struct
                                                 GNUNET_CRYPTO_EcdsaPublicKey));
-  ref = GNUNET_STRINGS_data_to_string_alloc (&ticket->rnd, sizeof(uint64_t));
+  ref = GNUNET_STRINGS_data_to_string_alloc (&ticket->rnd, sizeof(ticket->rnd));
   tkt =
     GNUNET_STRINGS_data_to_string_alloc (ticket,
                                          sizeof(struct GNUNET_RECLAIM_Ticket));
@@ -495,7 +495,7 @@ iter_cb (void *cls,
   }
   else if (attr_delete && (NULL == attr_to_delete))
   {
-    label = GNUNET_STRINGS_data_to_string_alloc (&attr->id, sizeof(uint64_t));
+    label = GNUNET_STRINGS_data_to_string_alloc (&attr->id, sizeof(attr->id));
     if (0 == strcasecmp (attr_delete, label))
     {
       attr_to_delete = GNUNET_RECLAIM_ATTRIBUTE_claim_new (attr->name,
@@ -512,9 +512,9 @@ iter_cb (void *cls,
                                                          attr->data,
                                                          attr->data_size);
     attr_type = GNUNET_RECLAIM_ATTRIBUTE_number_to_typename (attr->type);
-    id = GNUNET_STRINGS_data_to_string_alloc (&attr->id, sizeof(uint64_t));
+    id = GNUNET_STRINGS_data_to_string_alloc (&attr->id, sizeof(attr->id));
     fprintf (stdout,
-             "Name: %s; Value: %s (%s); Version %u; ID: %s\n",
+             "Name: %s; Value: %s (%s); Flag %u; ID: %s\n",
              attr->name,
              attr_str,
              attr_type,
index 556006af08f7a8beeabd6aa1755c53651e6c0b6d..a00bc57305a7fb4de602168c61f3d5c07743b7f7 100644 (file)
@@ -968,12 +968,12 @@ attr_store_task (void *cls)
   buf_size = GNUNET_RECLAIM_ATTRIBUTE_serialize_get_size (ash->claim);
   buf = GNUNET_malloc (buf_size);
   // Give the ash a new id if unset
-  if (0 == ash->claim->id)
-    ash->claim->id
-      = GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_STRONG, UINT64_MAX);
+  if (GNUNET_YES == GNUNET_RECLAIM_id_is_zero (&ash->claim->id))
+    GNUNET_RECLAIM_id_generate (&ash->claim->id);
   GNUNET_RECLAIM_ATTRIBUTE_serialize (ash->claim, buf);
   label
-    = GNUNET_STRINGS_data_to_string_alloc (&ash->claim->id, sizeof(uint64_t));
+    = GNUNET_STRINGS_data_to_string_alloc (&ash->claim->id,
+                                           sizeof (ash->reference->id));
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Encrypting with label %s\n", label);
 
   rd[0].data_size = buf_size;
@@ -1086,6 +1086,7 @@ attest_store_cont (void *cls, int32_t success, const char *emsg)
   cleanup_as_handle (ash);
 }
 
+
 /**
      * Send a reference error response
      *
@@ -1111,6 +1112,7 @@ send_ref_error (struct AttributeStoreHandle  *ash)
   cleanup_as_handle (ash);
 }
 
+
 /**
  * Error looking up potential attestation. Abort.
  *
@@ -1127,6 +1129,7 @@ attest_error (void *cls)
   return;
 }
 
+
 /**
 * Check for existing record before storing reference
 *
@@ -1149,7 +1152,7 @@ attest_add_cb (void *cls,
   buf_size = GNUNET_RECLAIM_ATTESTATION_serialize_get_size (ash->attest);
   buf = GNUNET_malloc (buf_size);
   GNUNET_RECLAIM_ATTESTATION_serialize (ash->attest, buf);
-  if (0 == rd_count )
+  if (0 == rd_count)
   {
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
                 "Storing new Attestation\n");
@@ -1198,6 +1201,7 @@ attest_add_cb (void *cls,
   GNUNET_free (buf);
 }
 
+
 /**
  * Add a new attestation
  *
@@ -1210,11 +1214,10 @@ attest_store_task (void *cls)
   char *label;
 
   // Give the ash a new id if unset
-  if (0 == ash->attest->id)
-    ash->attest->id
-      = GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_STRONG, UINT64_MAX);
+  if (GNUNET_YES == GNUNET_RECLAIM_id_is_zero (&ash->attest->id))
+    GNUNET_RECLAIM_id_generate (&ash->attest->id);
   label = GNUNET_STRINGS_data_to_string_alloc (&ash->attest->id,
-                                               sizeof(uint64_t));
+                                               sizeof (ash->attest->id));
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "Looking up existing data under label %s\n", label);
 // Test for the content of the existing ID
@@ -1228,6 +1231,7 @@ attest_store_task (void *cls)
   GNUNET_free (label);
 }
 
+
 /**
  * Check an attestation store message
  *
@@ -1249,6 +1253,7 @@ check_attestation_store_message (void *cls,
   return GNUNET_OK;
 }
 
+
 /**
 * Handle an attestation store message
 *
@@ -1282,6 +1287,7 @@ handle_attestation_store_message (void *cls,
   GNUNET_SCHEDULER_add_now (&attest_store_task, ash);
 }
 
+
 /**
  * Error looking up potential reference value. Abort.
  *
@@ -1298,6 +1304,7 @@ ref_error (void *cls)
   return;
 }
 
+
 /**
  * Error looking up potential reference value. Abort.
  *
@@ -1313,6 +1320,8 @@ ref_del_error (void *cls)
   GNUNET_SCHEDULER_add_now (&do_shutdown, NULL);
   return;
 }
+
+
 /**
 * Reference store result handler
 *
@@ -1375,7 +1384,7 @@ ref_add_cb (void *cls,
   GNUNET_RECLAIM_ATTESTATION_REF_serialize (ash->reference, buf);
   struct GNUNET_RECLAIM_ATTESTATION_REFERENCE *ref;
   char *data_tmp;
-  if (0 == rd_count )
+  if (0 == rd_count)
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
                 "Failed to find Attestation entry for Attestation reference\n");
@@ -1398,7 +1407,7 @@ ref_add_cb (void *cls,
     ref = GNUNET_RECLAIM_ATTESTATION_REF_deserialize (data_tmp, htons (
                                                         rd[i].data_size));
     rd_new[i] = rd[i];
-    if ((strcmp (ash->reference->name,ref->name) == 0)&&
+    if ((strcmp (ash->reference->name,ref->name) == 0) &&
         (strcmp (ash->reference->reference_value,ref->reference_value)==0) )
     {
       GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
@@ -1423,6 +1432,7 @@ ref_add_cb (void *cls,
   GNUNET_free (buf);
 }
 
+
 /**
  * Add a new reference
  *
@@ -1437,13 +1447,11 @@ reference_store_task (void *cls)
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Storing reference\n");
 
   // Give the ash a new id if unset
-  if (0 == ash->reference->id)
+  if (GNUNET_YES == GNUNET_RECLAIM_id_is_zero (&ash->reference->id))
   {
-    if (0 == ash->reference->id_attest)
+    if (GNUNET_YES == GNUNET_RECLAIM_id_is_zero (&ash->reference->id_attest))
     {
-      ash->reference->id = GNUNET_CRYPTO_random_u64 (
-        GNUNET_CRYPTO_QUALITY_STRONG,
-        UINT64_MAX);
+      GNUNET_RECLAIM_id_generate (&ash->reference->id);
     }
     else
     {
@@ -1452,7 +1460,7 @@ reference_store_task (void *cls)
   }
 
   label = GNUNET_STRINGS_data_to_string_alloc (&ash->reference->id,
-                                               sizeof(uint64_t));
+                                               sizeof (ash->reference->id));
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "Looking up existing data under label %s\n", label);
 // Test for the content of the existing ID
@@ -1467,6 +1475,7 @@ reference_store_task (void *cls)
   GNUNET_free (label);
 }
 
+
 /**
      * Check an attestation reference store message
      *
@@ -1521,6 +1530,8 @@ handle_reference_store_message (void *cls,
   GNUNET_CONTAINER_DLL_insert (idp->store_op_head, idp->store_op_tail, ash);
   GNUNET_SCHEDULER_add_now (&reference_store_task, ash);
 }
+
+
 /**
  * Send a deletion success response
  *
@@ -1570,13 +1581,16 @@ ticket_iter (void *cls,
     if (GNUNET_GNSRECORD_TYPE_RECLAIM_ATTR_REF != rd[i].record_type)
       continue;
     if (adh->claim != NULL)
-      if (0 != memcmp (rd[i].data, &adh->claim->id, sizeof(uint64_t)))
+      if (GNUNET_YES != GNUNET_RECLAIM_id_is_equal (rd[i].data,
+                                                    &adh->claim->id))
         continue;
     if (adh->attest != NULL)
-      if (0 != memcmp (rd[i].data, &adh->attest->id, sizeof(uint64_t)))
+      if (GNUNET_YES != GNUNET_RECLAIM_id_is_equal (rd[i].data,
+                                                    &adh->attest->id))
         continue;
     if (adh->reference != NULL)
-      if (0 != memcmp (rd[i].data, &adh->reference->id, sizeof(uint64_t)))
+      if (GNUNET_YES != GNUNET_RECLAIM_id_is_equal (rd[i].data,
+                                                    &adh->reference->id))
         continue;
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
                 "Attribute or Attestation/Reference to delete found (%s)\n",
@@ -1671,15 +1685,18 @@ update_tickets (void *cls)
   {
     if (adh->claim != NULL)
       if ((GNUNET_GNSRECORD_TYPE_RECLAIM_ATTR_REF == rd[i].record_type)
-          && (0 == memcmp (rd[i].data, &adh->claim->id, sizeof(uint64_t))))
+          && (GNUNET_YES == GNUNET_RECLAIM_id_is_equal (rd[i].data,
+                                                        &adh->claim->id)))
         continue;
     if (adh->attest != NULL)
       if ((GNUNET_GNSRECORD_TYPE_RECLAIM_ATTR_REF == rd[i].record_type)
-          && (0 == memcmp (rd[i].data, &adh->attest->id, sizeof(uint64_t))))
+          && (GNUNET_YES == GNUNET_RECLAIM_id_is_equal (rd[i].data,
+                                                        &adh->attest->id)))
         continue;
     if (adh->reference != NULL)
       if ((GNUNET_GNSRECORD_TYPE_RECLAIM_ATTR_REF == rd[i].record_type)
-          && (0 == memcmp (rd[i].data, &adh->reference->id, sizeof(uint64_t))))
+          && (GNUNET_YES == GNUNET_RECLAIM_id_is_equal (rd[i].data,
+                                                        &adh->reference->id)))
         continue;
     rd_new[j] = rd[i];
     j++;
@@ -1828,7 +1845,8 @@ handle_attribute_delete_message (void *cls,
   adh->r_id = ntohl (dam->id);
   adh->identity = dam->identity;
   adh->label
-    = GNUNET_STRINGS_data_to_string_alloc (&adh->claim->id, sizeof(uint64_t));
+    = GNUNET_STRINGS_data_to_string_alloc (&adh->claim->id,
+                                           sizeof(adh->claim->id));
   GNUNET_SERVICE_client_continue (idp->client);
   adh->client = idp;
   GNUNET_CONTAINER_DLL_insert (idp->delete_op_head, idp->delete_op_tail, adh);
@@ -1841,6 +1859,7 @@ handle_attribute_delete_message (void *cls,
                                                adh);
 }
 
+
 /**
    * Attestation deleted callback
    *
@@ -1867,6 +1886,7 @@ attest_delete_cont (void *cls, int32_t success, const char *emsg)
   GNUNET_SCHEDULER_add_now (&start_ticket_update, adh);
 }
 
+
 /**
  * Check attestation delete message format
  *
@@ -1916,7 +1936,8 @@ handle_attestation_delete_message (void *cls,
   adh->r_id = ntohl (dam->id);
   adh->identity = dam->identity;
   adh->label
-    = GNUNET_STRINGS_data_to_string_alloc (&adh->attest->id, sizeof(uint64_t));
+    = GNUNET_STRINGS_data_to_string_alloc (&adh->attest->id,
+                                           sizeof(adh->attest->id));
   GNUNET_SERVICE_client_continue (idp->client);
   adh->client = idp;
   GNUNET_CONTAINER_DLL_insert (idp->delete_op_head, idp->delete_op_tail, adh);
@@ -1930,7 +1951,6 @@ handle_attestation_delete_message (void *cls,
 }
 
 
-
 /**
 * Reference deleted callback
 *
@@ -1954,12 +1974,13 @@ reference_delete_cont (void *cls, int32_t success, const char *emsg)
     return;
   }
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Updating tickets...\n");
-  //GNUNET_SCHEDULER_add_now (&start_ticket_update, adh);
+  // GNUNET_SCHEDULER_add_now (&start_ticket_update, adh);
   send_delete_response (adh, GNUNET_OK);
   cleanup_adh (adh);
   return;
 }
 
+
 static void
 ref_del_cb (void *cls,
             const struct GNUNET_CRYPTO_EcdsaPrivateKey *zone,
@@ -1974,7 +1995,7 @@ ref_del_cb (void *cls,
   struct GNUNET_RECLAIM_ATTESTATION_REFERENCE *ref;
   size_t attr_len;
 
-  if (0 == rd_count )
+  if (0 == rd_count)
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
                 "Failed to find Attestation entry for Attestation reference\n");
@@ -1999,7 +2020,7 @@ ref_del_cb (void *cls,
     GNUNET_memcpy (data_tmp, rd[i].data, rd[i].data_size);
     attr_len = htons (rd[i].data_size);
     ref = GNUNET_RECLAIM_ATTESTATION_REF_deserialize (data_tmp, attr_len);
-    if (NULL == ref )
+    if (NULL == ref)
     {
       GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
                   "Unable to parse attestation reference from %s\n",
@@ -2008,7 +2029,7 @@ ref_del_cb (void *cls,
       j += 1;
       continue;
     }
-    if ((strcmp (adh->reference->name,ref->name) == 0)&&
+    if ((strcmp (adh->reference->name,ref->name) == 0) &&
         (strcmp (adh->reference->reference_value,ref->reference_value)==0) )
     {
       GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
@@ -2030,6 +2051,7 @@ ref_del_cb (void *cls,
                                                adh);
 }
 
+
 /**
  * Check an attestation reference delete message
  *
@@ -2051,6 +2073,7 @@ check_reference_delete_message (void *cls,
   return GNUNET_OK;
 }
 
+
 /**
  * Handle reference deletion
  *
@@ -2077,7 +2100,7 @@ handle_reference_delete_message (void *cls,
   adh->identity = dam->identity;
   adh->label
     = GNUNET_STRINGS_data_to_string_alloc (&adh->reference->id,
-                                           sizeof(uint64_t));
+                                           sizeof(adh->reference->id));
   GNUNET_SERVICE_client_continue (idp->client);
   adh->client = idp;
   GNUNET_CONTAINER_DLL_insert (idp->delete_op_head, idp->delete_op_tail, adh);
@@ -2091,7 +2114,6 @@ handle_reference_delete_message (void *cls,
 }
 
 
-
 /*************************************************
 * Attrubute iteration
 *************************************************/
@@ -2190,7 +2212,7 @@ attr_iter_cb (void *cls,
       return;
     }
 
-    if (GNUNET_GNSRECORD_TYPE_RECLAIM_ATTR == rd[i].record_type )
+    if (GNUNET_GNSRECORD_TYPE_RECLAIM_ATTR == rd[i].record_type)
     {
       struct AttributeResultMessage *arm;
       GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Found attribute under: %s\n",
@@ -2209,7 +2231,7 @@ attr_iter_cb (void *cls,
     }
     else
     {
-      if (GNUNET_GNSRECORD_TYPE_RECLAIM_ATTEST_ATTR == rd[i].record_type )
+      if (GNUNET_GNSRECORD_TYPE_RECLAIM_ATTEST_ATTR == rd[i].record_type)
       {
         struct AttributeResultMessage *arm;
         GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Found attestation under: %s\n",
@@ -2250,6 +2272,7 @@ attr_iter_cb (void *cls,
   }
 }
 
+
 /**
  * Iterate over zone to get attributes
  *
index b022225b886d81eaa392b0928f8b9c535c2fa997..bdb9e6dd99d5f6f69e3ccba44fe9c4ac6520e1c6 100644 (file)
@@ -236,12 +236,12 @@ struct RevokedAttributeEntry
   /**
    * Old ID of the attribute
    */
-  uint64_t old_id;
+  struct GNUNET_RECLAIM_Identifier old_id;
 
   /**
    * New ID of the attribute
    */
-  uint64_t new_id;
+  struct GNUNET_RECLAIM_Identifier new_id;
 };
 
 
@@ -435,7 +435,7 @@ process_tickets (void *cls)
       continue;
     for (ae = rvk->attrs_head; NULL != ae; ae = ae->next)
     {
-      if (0 != memcmp (rd[i].data, &ae->old_id, sizeof(uint64_t)))
+      if (0 != memcmp (rd[i].data, &ae->old_id, sizeof(ae->old_id)))
         continue;
       rd[i].data = &ae->new_id;
     }
@@ -497,7 +497,7 @@ rvk_ticket_update (void *cls,
       continue;
     for (ae = rvk->attrs_head; NULL != ae; ae = ae->next)
     {
-      if (0 != memcmp (rd[i].data, &ae->old_id, sizeof(uint64_t)))
+      if (0 != memcmp (rd[i].data, &ae->old_id, sizeof(ae->old_id)))
         continue;
       has_changed = GNUNET_YES;
       break;
@@ -532,9 +532,6 @@ rvk_ns_iter_err (void *cls)
   struct RECLAIM_TICKETS_RevokeHandle *rvk = cls;
 
   rvk->ns_it = NULL;
-  GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-              "Namestore error on revocation (id=%" PRIu64 "\n",
-              rvk->move_attr->old_id);
   rvk->cb (rvk->cb_cls, GNUNET_SYSERR);
   cleanup_rvk (rvk);
 }
@@ -551,9 +548,6 @@ rvk_ns_err (void *cls)
   struct RECLAIM_TICKETS_RevokeHandle *rvk = cls;
 
   rvk->ns_qe = NULL;
-  GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-              "Namestore error on revocation (id=%" PRIu64 "\n",
-              rvk->move_attr->old_id);
   rvk->cb (rvk->cb_cls, GNUNET_SYSERR);
   cleanup_rvk (rvk);
 }
@@ -636,7 +630,7 @@ move_attr_finished (void *cls, int32_t success, const char *emsg)
     return;
   }
   label = GNUNET_STRINGS_data_to_string_alloc (&rvk->move_attr->old_id,
-                                               sizeof(uint64_t));
+                                               sizeof(rvk->move_attr->old_id));
   GNUNET_assert (NULL != label);
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Removing attribute %s\n", label);
   rvk->ns_qe = GNUNET_NAMESTORE_records_store (nsh,
@@ -685,67 +679,80 @@ rvk_move_attr_cb (void *cls,
     GNUNET_SCHEDULER_add_now (&move_attrs_cont, rvk);
     return;
   }
-  rvk->move_attr->new_id =GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_STRONG, UINT64_MAX);
-  new_label=NULL;
-  attr_data=NULL;
-  //new_rd = *rd;
+  GNUNET_RECLAIM_id_generate (&rvk->move_attr->new_id);
+  new_label = NULL;
+  attr_data = NULL;
+  // new_rd = *rd;
   for (int i = 0; i < rd_count; i++)
   {
     if (GNUNET_GNSRECORD_TYPE_RECLAIM_ATTR == rd[i].record_type)
     {
       /** find a new place for this attribute **/
       struct GNUNET_RECLAIM_ATTRIBUTE_Claim *claim;
-      claim = GNUNET_RECLAIM_ATTRIBUTE_deserialize (rd[i].data, rd[i].data_size);
+      claim = GNUNET_RECLAIM_ATTRIBUTE_deserialize (rd[i].data,
+                                                    rd[i].data_size);
       GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                  "Attribute to update: Name=%s, ID=%" PRIu64 "\n",
-                  claim->name,
-                  claim->id);
+                  "Attribute to update: Name=%s\n",
+                  claim->name);
       claim->id = rvk->move_attr->new_id;
       new_rd[i].data_size = GNUNET_RECLAIM_ATTRIBUTE_serialize_get_size (claim);
       attr_data = GNUNET_malloc (rd[i].data_size);
-      new_rd[i].data_size = GNUNET_RECLAIM_ATTRIBUTE_serialize (claim, attr_data);
+      new_rd[i].data_size = GNUNET_RECLAIM_ATTRIBUTE_serialize (claim,
+                                                                attr_data);
       new_rd[i].data = attr_data;
       new_rd[i].record_type = rd[i].record_type;
       new_rd[i].flags = rd[i].flags;
       new_rd[i].expiration_time = rd[i].expiration_time;
       new_label = GNUNET_STRINGS_data_to_string_alloc (&rvk->move_attr->new_id,
-                                                       sizeof(uint64_t));
+                                                       sizeof (rvk->move_attr->
+                                                               new_id));
       GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Adding attribute %s\n", new_label);
       GNUNET_free (claim);
-    } else if (GNUNET_GNSRECORD_TYPE_RECLAIM_ATTEST_ATTR == rd[i].record_type) 
+    }
+    else if (GNUNET_GNSRECORD_TYPE_RECLAIM_ATTEST_ATTR == rd[i].record_type)
     {
       struct GNUNET_RECLAIM_ATTESTATION_Claim *attest;
-      attest=GNUNET_RECLAIM_ATTESTATION_deserialize(rd[i].data, rd[i].data_size);
+      attest = GNUNET_RECLAIM_ATTESTATION_deserialize (rd[i].data,
+                                                       rd[i].data_size);
       GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                  "Attestation to update: Name=%s, ID=%" PRIu64 "\n",
-                  attest->name,
-                  attest->id);
+                  "Attestation to update: Name=%s\n",
+                  attest->name);
       attest->id = rvk->move_attr->new_id;
-      new_rd[i].data_size = GNUNET_RECLAIM_ATTESTATION_serialize_get_size (attest);
+      new_rd[i].data_size = GNUNET_RECLAIM_ATTESTATION_serialize_get_size (
+        attest);
       attr_data = GNUNET_malloc (rd[i].data_size);
-      new_rd[i].data_size = GNUNET_RECLAIM_ATTESTATION_serialize (attest, attr_data);
+      new_rd[i].data_size = GNUNET_RECLAIM_ATTESTATION_serialize (attest,
+                                                                  attr_data);
       new_rd[i].data = attr_data;
       new_rd[i].record_type = rd[i].record_type;
       new_rd[i].flags = rd[i].flags;
       new_rd[i].expiration_time = rd[i].expiration_time;
-      new_label = GNUNET_STRINGS_data_to_string_alloc (&rvk->move_attr->new_id, sizeof(uint64_t));
-      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Adding attestation %s\n", new_label);
+      new_label = GNUNET_STRINGS_data_to_string_alloc (&rvk->move_attr->new_id,
+                                                       sizeof (rvk->move_attr->
+                                                               new_id));
+      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Adding attestation %s\n",
+                  new_label);
       GNUNET_free (attest);
-    } else if (GNUNET_GNSRECORD_TYPE_RECLAIM_REFERENCE == rd[i].record_type)
+    }
+    else if (GNUNET_GNSRECORD_TYPE_RECLAIM_REFERENCE == rd[i].record_type)
     {
       struct GNUNET_RECLAIM_ATTESTATION_REFERENCE *reference;
-      reference=GNUNET_RECLAIM_ATTESTATION_REF_deserialize(rd[i].data, rd[i].data_size);
+      reference = GNUNET_RECLAIM_ATTESTATION_REF_deserialize (rd[i].data,
+                                                              rd[i].data_size);
       GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                  "Reference to update: Name=%s, ID=%" PRIu64 "\n",
-                  reference->name,
-                  reference->id);
+                  "Reference to update: Name=%s\n",
+                  reference->name);
       reference->id = rvk->move_attr->new_id;
       reference->id_attest = rvk->move_attr->new_id;
-      new_rd[i].data_size = GNUNET_RECLAIM_ATTESTATION_REF_serialize_get_size (reference);
+      new_rd[i].data_size = GNUNET_RECLAIM_ATTESTATION_REF_serialize_get_size (
+        reference);
       attr_data = GNUNET_malloc (rd[i].data_size);
-      new_rd[i].data_size = GNUNET_RECLAIM_ATTESTATION_REF_serialize (reference, attr_data);
+      new_rd[i].data_size = GNUNET_RECLAIM_ATTESTATION_REF_serialize (reference,
+                                                                      attr_data);
       new_rd[i].data = attr_data;
-      new_label = GNUNET_STRINGS_data_to_string_alloc (&rvk->move_attr->new_id, sizeof(uint64_t));
+      new_label = GNUNET_STRINGS_data_to_string_alloc (&rvk->move_attr->new_id,
+                                                       sizeof (rvk->move_attr->
+                                                               new_id));
       new_rd[i].record_type = rd[i].record_type;
       new_rd[i].flags = rd[i].flags;
       new_rd[i].expiration_time = rd[i].expiration_time;
@@ -754,12 +761,12 @@ rvk_move_attr_cb (void *cls,
     }
   }
   rvk->ns_qe = GNUNET_NAMESTORE_records_store (nsh,
-                                           &rvk->identity,
-                                           new_label,
-                                           rd_count,
-                                           new_rd,
-                                           &move_attr_finished,
-                                           rvk);
+                                               &rvk->identity,
+                                               new_label,
+                                               rd_count,
+                                               new_rd,
+                                               &move_attr_finished,
+                                               rvk);
   GNUNET_free (new_label);
   GNUNET_free (attr_data);
 }
@@ -793,7 +800,7 @@ move_attrs (struct RECLAIM_TICKETS_RevokeHandle *rvk)
     return;
   }
   label = GNUNET_STRINGS_data_to_string_alloc (&rvk->move_attr->old_id,
-                                               sizeof(uint64_t));
+                                               sizeof (rvk->move_attr->old_id));
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Moving claim %s\n", label);
 
   rvk->ns_qe = GNUNET_NAMESTORE_records_lookup (nsh,
@@ -876,7 +883,7 @@ revoke_attrs_cb (void *cls,
     if (GNUNET_GNSRECORD_TYPE_RECLAIM_ATTR_REF != rd[i].record_type)
       continue;
     le = GNUNET_new (struct RevokedAttributeEntry);
-    le->old_id = *((uint64_t *) rd[i].data);
+    le->old_id = *((struct GNUNET_RECLAIM_Identifier *) rd[i].data);
     GNUNET_CONTAINER_DLL_insert (rvk->attrs_head, rvk->attrs_tail, le);
     rvk->ticket_attrs++;
   }
@@ -934,7 +941,8 @@ RECLAIM_TICKETS_revoke (const struct GNUNET_RECLAIM_Ticket *ticket,
   rvk->ticket = *ticket;
   GNUNET_CRYPTO_ecdsa_key_get_public (&rvk->identity, &rvk->ticket.identity);
   /** Get shared attributes **/
-  label = GNUNET_STRINGS_data_to_string_alloc (&ticket->rnd, sizeof(uint64_t));
+  label = GNUNET_STRINGS_data_to_string_alloc (&ticket->rnd,
+                                               sizeof(ticket->rnd));
   GNUNET_assert (NULL != label);
   rvk->ns_qe = GNUNET_NAMESTORE_records_lookup (nsh,
                                                 identity,
@@ -1231,7 +1239,8 @@ RECLAIM_TICKETS_consume (const struct GNUNET_CRYPTO_EcdsaPrivateKey *id,
   cth->cb = cb;
   cth->cb_cls = cb_cls;
   label =
-    GNUNET_STRINGS_data_to_string_alloc (&cth->ticket.rnd, sizeof(uint64_t));
+    GNUNET_STRINGS_data_to_string_alloc (&cth->ticket.rnd,
+                                         sizeof(cth->ticket.rnd));
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "Looking for AuthZ info under %s\n",
               label);
@@ -1393,7 +1402,8 @@ issue_ticket (struct TicketIssueHandle *ih)
     GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION | GNUNET_GNSRECORD_RF_PRIVATE;
 
   label =
-    GNUNET_STRINGS_data_to_string_alloc (&ih->ticket.rnd, sizeof(uint64_t));
+    GNUNET_STRINGS_data_to_string_alloc (&ih->ticket.rnd,
+                                         sizeof(ih->ticket.rnd));
   // Publish record
   ih->ns_qe = GNUNET_NAMESTORE_records_store (nsh,
                                               &ih->identity,
@@ -1488,29 +1498,21 @@ filter_tickets_cb (void *cls,
       // cmp attr_ref id with requested attr id
       if (NULL !=le->claim)
       {
-        GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                    " %" PRIu64 "\n  %" PRIu64 "\n",
-                    *((uint64_t *) rd[i].data),
-                    le->claim->id);
-        if (0 == memcmp (rd[i].data, &le->claim->id, sizeof(uint64_t)))
+        if (0 == memcmp (rd[i].data, &le->claim->id, sizeof(le->claim->id)))
           found_attrs_cnt++;
       }
       else if (NULL !=le->attest)
       {
-        GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                    " %" PRIu64 "\n  %" PRIu64 "\n",
-                    *((uint64_t *) rd[i].data),
-                    le->attest->id);
-        if (0 == memcmp (rd[i].data, &le->attest->id, sizeof(uint64_t)))
+        if (0 == memcmp (rd[i].data,
+                         &le->attest->id,
+                         sizeof(le->attest->id)))
           found_attrs_cnt++;
       }
       else if (NULL != le->reference)
       {
-        GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                    " %" PRIu64 "\n  %" PRIu64 "\n",
-                    *((uint64_t *) rd[i].data),
-                    le->reference->id);
-        if (0 == memcmp (rd[i].data, &le->reference->id, sizeof(uint64_t)))
+        if (0 == memcmp (rd[i].data,
+                         &le->reference->id,
+                         sizeof(le->reference->id)))
           found_attrs_cnt++;
       }
 
@@ -1547,8 +1549,7 @@ filter_tickets_finished_cb (void *cls)
   struct TicketIssueHandle *tih = cls;
 
   GNUNET_CRYPTO_ecdsa_key_get_public (&tih->identity, &tih->ticket.identity);
-  tih->ticket.rnd =
-    GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_STRONG, UINT64_MAX);
+  GNUNET_RECLAIM_id_generate (&tih->ticket.rnd);
   issue_ticket (tih);
 }
 
index a464a9088c37ae49afb7d91931e8850d76409869..6ac60a70416db46c7d8d566306848bc5ab1c844f 100644 (file)
@@ -94,12 +94,12 @@ parse_attr (void *cls, json_t *root, struct GNUNET_JSON_Specification *spec)
   }
   attr = GNUNET_RECLAIM_ATTRIBUTE_claim_new (name_str, type, data, data_size);
   if ((NULL == id_str) || (0 == strlen (id_str)))
-    attr->id = 0;
+    memset (&attr->id, 0, sizeof (attr->id));
   else
     GNUNET_STRINGS_string_to_data (id_str,
                                    strlen (id_str),
                                    &attr->id,
-                                   sizeof(uint64_t));
+                                   sizeof(attr->id));
 
   *(struct GNUNET_RECLAIM_ATTRIBUTE_Claim **) spec->ptr = attr;
   return GNUNET_OK;
@@ -192,7 +192,7 @@ parse_ticket (void *cls, json_t *root, struct GNUNET_JSON_Specification *spec)
   if (GNUNET_OK != GNUNET_STRINGS_string_to_data (rnd_str,
                                                   strlen (rnd_str),
                                                   &ticket->rnd,
-                                                  sizeof(uint64_t)))
+                                                  sizeof(ticket->rnd)))
   {
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Rnd invalid\n");
     GNUNET_free (ticket);
@@ -327,12 +327,12 @@ parse_attest (void *cls, json_t *root, struct GNUNET_JSON_Specification *spec)
   }
   attr = GNUNET_RECLAIM_ATTESTATION_claim_new (name_str, type, data, data_size);
   if ((NULL == id_str) || (0 == strlen (id_str)))
-    attr->id = 0;
+    memset (&attr->id, 0, sizeof (attr->id));
   else
     GNUNET_STRINGS_string_to_data (id_str,
                                    strlen (id_str),
                                    &attr->id,
-                                   sizeof(uint64_t));
+                                   sizeof(attr->id));
 
   *(struct GNUNET_RECLAIM_ATTESTATION_Claim **) spec->ptr = attr;
   return GNUNET_OK;
@@ -425,16 +425,15 @@ parse_attest_ref (void *cls, json_t *root, struct
   }
 
   attr = GNUNET_RECLAIM_ATTESTATION_reference_new (name_str, ref_val_str);
-
-  attr->id = 0;
+  memset (&attr->id, 0, sizeof (attr->id));
 
   if ((NULL == ref_id_str) || (0 == strlen (ref_id_str)))
-    attr->id_attest = 0;
+    memset (&attr->id_attest, 0, sizeof (attr->id_attest));
   else
     GNUNET_STRINGS_string_to_data (ref_id_str,
                                    strlen (ref_id_str),
                                    &attr->id_attest,
-                                   sizeof(uint64_t));
+                                   sizeof(attr->id_attest));
 
   *(struct GNUNET_RECLAIM_ATTESTATION_REFERENCE **) spec->ptr = attr;
   return GNUNET_OK;
@@ -480,4 +479,4 @@ GNUNET_RECLAIM_JSON_spec_claim_attest_ref (struct
 
   *attr = NULL;
   return ret;
-}
\ No newline at end of file
+}
index 2ce4628546486a9ebe085f978e25481845d4cdbe..1d23003ab917bf608c47a620de92aeb3e83838bf 100644 (file)
@@ -146,7 +146,7 @@ OIDC_id_token_new (const struct GNUNET_CRYPTO_EcdsaPublicKey *aud_key,
   json_t *aggr_names;
   json_t *aggr_sources;
   json_t *aggr_sources_jwt;
-  uint64_t attest_arr[GNUNET_RECLAIM_ATTRIBUTE_list_count_attest (attrs)];
+  struct GNUNET_RECLAIM_Identifier attest_arr[GNUNET_RECLAIM_ATTRIBUTE_list_count_attest (attrs)];
 
   // iat REQUIRED time now
   time_now = GNUNET_TIME_absolute_get ();
@@ -216,7 +216,8 @@ OIDC_id_token_new (const struct GNUNET_CRYPTO_EcdsaPublicKey *aud_key,
       int j = 0;
       while (j<i)
       {
-        if (attest_arr[j] == le->reference->id_attest)
+        if (GNUNET_YES == GNUNET_RECLAIM_id_is_equal (&attest_arr[j],
+                                                      &le->reference->id_attest))
           break;
         j++;
       }
@@ -245,7 +246,8 @@ OIDC_id_token_new (const struct GNUNET_CRYPTO_EcdsaPublicKey *aud_key,
       int j = 0;
       while (j<i)
       {
-        if (attest_arr[j] == le->attest->id)
+        if (GNUNET_YES == GNUNET_RECLAIM_id_is_equal (&attest_arr[j],
+                                                      &le->attest->id))
           break;
         j++;
       }
index dcda75b657ece93323bb4d36a6a517219364e16d..9a6af6bcfa4fb073963c442279a017a8f91365c1 100644 (file)
@@ -428,7 +428,7 @@ ticket_collect (void *cls, const struct GNUNET_RECLAIM_Ticket *ticket)
   char *tmp;
 
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Adding ticket\n");
-  tmp = GNUNET_STRINGS_data_to_string_alloc (&ticket->rnd, sizeof(uint64_t));
+  tmp = GNUNET_STRINGS_data_to_string_alloc (&ticket->rnd, sizeof(ticket->rnd));
   json_resource = json_object ();
   GNUNET_free (tmp);
   json_array_append (handle->resp_object, json_resource);
@@ -447,7 +447,7 @@ ticket_collect (void *cls, const struct GNUNET_RECLAIM_Ticket *ticket)
   value = json_string (tmp);
   json_object_set_new (json_resource, "audience", value);
   GNUNET_free (tmp);
-  tmp = GNUNET_STRINGS_data_to_string_alloc (&ticket->rnd, sizeof(uint64_t));
+  tmp = GNUNET_STRINGS_data_to_string_alloc (&ticket->rnd, sizeof(ticket->rnd));
   value = json_string (tmp);
   json_object_set_new (json_resource, "rnd", value);
   GNUNET_free (tmp);
@@ -521,7 +521,7 @@ add_attestation_ref_cont (struct GNUNET_REST_RequestHandle *con_handle,
   /**
    * New ID for attribute
    */
-  if (0 == attribute->id)
+  if (GNUNET_YES == GNUNET_RECLAIM_id_is_zero (&attribute->id))
     attribute->id = attribute->id_attest;
   handle->idp = GNUNET_RECLAIM_connect (cfg);
   exp = GNUNET_TIME_UNIT_HOURS;
@@ -692,9 +692,8 @@ add_attestation_cont (struct GNUNET_REST_RequestHandle *con_handle,
   /**
    * New ID for attribute
    */
-  if (0 == attribute->id)
-    attribute->id =
-      GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_STRONG, UINT64_MAX);
+  if (GNUNET_YES == GNUNET_RECLAIM_id_is_zero (&attribute->id))
+    GNUNET_RECLAIM_id_generate (&attribute->id);
   handle->idp = GNUNET_RECLAIM_connect (cfg);
   exp = GNUNET_TIME_UNIT_HOURS;
   handle->idp_op = GNUNET_RECLAIM_attestation_store (handle->idp,
@@ -740,9 +739,9 @@ ref_collect (void *cls,
   json_object_set_new (attr_obj, "ref_value", json_string (
                          reference->reference_value));
   id_str = GNUNET_STRINGS_data_to_string_alloc (&reference->id,
-                                                sizeof(uint64_t));
+                                                sizeof(reference->id));
   id_attest_str = GNUNET_STRINGS_data_to_string_alloc (&reference->id_attest,
-                                                       sizeof(uint64_t));
+                                                       sizeof(reference->id_attest));
   json_object_set_new (attr_obj, "id", json_string (id_str));
   json_object_set_new (attr_obj, "ref_id", json_string (id_attest_str));
   json_array_append (handle->resp_object, attr_obj);
@@ -856,7 +855,7 @@ attest_collect (void *cls,
   json_object_set_new (attr_obj, "name", json_string (attest->name));
   type = GNUNET_RECLAIM_ATTESTATION_number_to_typename (attest->type);
   json_object_set_new (attr_obj, "type", json_string (type));
-  id_str = GNUNET_STRINGS_data_to_string_alloc (&attest->id, sizeof(uint64_t));
+  id_str = GNUNET_STRINGS_data_to_string_alloc (&attest->id, sizeof(attest->id));
   json_object_set_new (attr_obj, "id", json_string (id_str));
   json_array_append (handle->resp_object, attr_obj);
   json_decref (attr_obj);
@@ -1017,7 +1016,7 @@ delete_attestation_ref_cont (struct GNUNET_REST_RequestHandle *con_handle,
     GNUNET_SCHEDULER_add_now (&do_error, handle);
     return;
   }
-  GNUNET_STRINGS_string_to_data (id, strlen (id), &attr->id, sizeof(uint64_t));
+  GNUNET_STRINGS_string_to_data (id, strlen (id), &attr->id, sizeof(attr->id));
 
   handle->idp = GNUNET_RECLAIM_connect (cfg);
   handle->idp_op = GNUNET_RECLAIM_attestation_reference_delete (handle->idp,
@@ -1100,7 +1099,7 @@ delete_attestation_cont (struct GNUNET_REST_RequestHandle *con_handle,
   priv_key = GNUNET_IDENTITY_ego_get_private_key (ego_entry->ego);
   handle->idp = GNUNET_RECLAIM_connect (cfg);
   memset (&attr, 0, sizeof(struct GNUNET_RECLAIM_ATTESTATION_Claim));
-  GNUNET_STRINGS_string_to_data (id, strlen (id), &attr.id, sizeof(uint64_t));
+  GNUNET_STRINGS_string_to_data (id, strlen (id), &attr.id, sizeof(attr.id));
   attr.name = "";
   handle->idp_op = GNUNET_RECLAIM_attestation_delete (handle->idp,
                                                       priv_key,
@@ -1230,9 +1229,8 @@ add_attribute_cont (struct GNUNET_REST_RequestHandle *con_handle,
   /**
    * New ID for attribute
    */
-  if (0 == attribute->id)
-    attribute->id =
-      GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_STRONG, UINT64_MAX);
+  if (GNUNET_YES == GNUNET_RECLAIM_id_is_zero (&attribute->id))
+    GNUNET_RECLAIM_id_generate (&attribute->id);
   handle->idp = GNUNET_RECLAIM_connect (cfg);
   exp = GNUNET_TIME_UNIT_HOURS;
   handle->idp_op = GNUNET_RECLAIM_attribute_store (handle->idp,
@@ -1366,7 +1364,8 @@ attr_collect (void *cls,
     json_object_set_new (attr_obj, "flag", json_string ("1"));
     type = GNUNET_RECLAIM_ATTRIBUTE_number_to_typename (attr2->type);
     json_object_set_new (attr_obj, "type", json_string (type));
-    id_str = GNUNET_STRINGS_data_to_string_alloc (&attr2->id, sizeof(uint64_t));
+    id_str = GNUNET_STRINGS_data_to_string_alloc (&attr2->id,
+                                                  sizeof(attr2->id));
     json_object_set_new (attr_obj, "id", json_string (id_str));
     json_array_append (handle->resp_object, attr_obj);
     json_decref (attr_obj);
@@ -1396,7 +1395,8 @@ attr_collect (void *cls,
     json_object_set_new (attr_obj, "flag", json_string (flag_str));
     type = GNUNET_RECLAIM_ATTRIBUTE_number_to_typename (attr->type);
     json_object_set_new (attr_obj, "type", json_string (type));
-    id_str = GNUNET_STRINGS_data_to_string_alloc (&attr->id, sizeof(uint64_t));
+    id_str = GNUNET_STRINGS_data_to_string_alloc (&attr->id,
+                                                  sizeof(attr->id));
     json_object_set_new (attr_obj, "id", json_string (id_str));
     json_array_append (handle->resp_object, attr_obj);
     json_decref (attr_obj);
@@ -1515,7 +1515,7 @@ delete_attribute_cont (struct GNUNET_REST_RequestHandle *con_handle,
   priv_key = GNUNET_IDENTITY_ego_get_private_key (ego_entry->ego);
   handle->idp = GNUNET_RECLAIM_connect (cfg);
   memset (&attr, 0, sizeof(struct GNUNET_RECLAIM_ATTRIBUTE_Claim));
-  GNUNET_STRINGS_string_to_data (id, strlen (id), &attr.id, sizeof(uint64_t));
+  GNUNET_STRINGS_string_to_data (id, strlen (id), &attr.id, sizeof(attr.id));
   attr.name = "";
   handle->idp_op = GNUNET_RECLAIM_attribute_delete (handle->idp,
                                                     priv_key,
index 847abb58a1536e3dcbaaf2ab36ed204a4c814692..5a3bee2187fa8395ad631255bdb81d218222e0fa 100644 (file)
@@ -511,13 +511,17 @@ handle_consume_ticket_result (void *cls,
       {
         for (le = attrs->list_head; NULL != le; le = le->next)
         {
-          if (le->reference != NULL && le->attest == NULL)
+          if ((le->reference != NULL) && (le->attest == NULL))
           {
             for (le2 = attrs->list_head; NULL != le2; le2 = le2->next)
             {
-              if (le2->attest != NULL && le2->attest->id == le->reference->id_attest)
+              if ((le2->attest != NULL) &&
+                  (0 == memcmp (&le2->attest->id,
+                                &le->reference->id_attest,
+                                sizeof (le2->attest->id))))
               {
-                op->ar_cb (op->cls, &msg->identity, le->claim, le2->attest, le->reference);
+                op->ar_cb (op->cls, &msg->identity, le->claim, le2->attest,
+                           le->reference);
                 break;
               }
 
@@ -637,6 +641,7 @@ handle_attribute_result (void *cls, const struct AttributeResultMessage *msg)
   GNUNET_assert (0);
 }
 
+
 /**
    * Handle an incoming message of type
    * #GNUNET_MESSAGE_TYPE_RECLAIM_ATTESTATION_RESULT
@@ -736,6 +741,7 @@ handle_attestation_result (void *cls, const struct AttributeResultMessage *msg)
   GNUNET_assert (0);
 }
 
+
 /**
    * Handle an incoming message of type
    * #GNUNET_MESSAGE_TYPE_RECLAIM_REFERENCE_RESULT
@@ -762,6 +768,7 @@ check_reference_result (void *cls, const struct ReferenceResultMessage *msg)
   return GNUNET_OK;
 }
 
+
 /**
 * Handle an incoming message of type
 * #GNUNET_MESSAGE_TYPE_RECLAIM_REFERENCE_RESULT
@@ -841,6 +848,7 @@ handle_reference_result (void *cls, const struct ReferenceResultMessage *msg)
   GNUNET_assert (0);
 }
 
+
 /**
  * Handle an incoming message of type
  * #GNUNET_MESSAGE_TYPE_RECLAIM_TICKET_RESULT
@@ -1150,6 +1158,7 @@ GNUNET_RECLAIM_attribute_delete (
   return op;
 }
 
+
 /**
    * Store an attestation.  If the attestation is already present,
    * it is replaced with the new attestation.
@@ -1197,6 +1206,7 @@ GNUNET_RECLAIM_attestation_store (
   return op;
 }
 
+
 /**
    * Delete an attestation. Tickets used to share this attestation are updated
    * accordingly.
@@ -1240,6 +1250,7 @@ GNUNET_RECLAIM_attestation_delete (
   return op;
 }
 
+
 /**
    * Store an attestation reference.  If the reference is already present,
    * it is replaced with the new reference.
@@ -1286,6 +1297,7 @@ GNUNET_RECLAIM_attestation_reference_store (
   return op;
 }
 
+
 /**
  * Delete an attestation reference. Tickets used to share this reference are updated
  * accordingly.
@@ -1330,6 +1342,7 @@ GNUNET_RECLAIM_attestation_reference_delete (
   return op;
 }
 
+
 /**
  * List all attributes for a local identity.
  * This MUST lock the `struct GNUNET_RECLAIM_Handle`