diff options
author | Schanzenbach, Martin <mschanzenbach@posteo.de> | 2017-10-05 22:44:56 +0200 |
---|---|---|
committer | Schanzenbach, Martin <mschanzenbach@posteo.de> | 2017-10-05 22:44:56 +0200 |
commit | 1731fbd017731df1f3f88bd4b3beac765996a1ad (patch) | |
tree | 7eefd76c1b802dac98008f174f3a47477d652544 /src | |
parent | 76817ee408cff4aee534d6016423c8a4ecb5555f (diff) | |
download | gnunet-1731fbd017731df1f3f88bd4b3beac765996a1ad.tar.gz gnunet-1731fbd017731df1f3f88bd4b3beac765996a1ad.zip |
-fix bugs
Diffstat (limited to 'src')
-rw-r--r-- | src/identity-provider/gnunet-service-identity-provider.c | 70 | ||||
-rw-r--r-- | src/identity-provider/identity-provider.conf | 1 | ||||
-rw-r--r-- | src/identity-provider/identity_provider.h | 36 | ||||
-rw-r--r-- | src/identity-provider/identity_provider_api.c | 86 | ||||
-rw-r--r-- | src/identity-provider/plugin_identity_provider_sqlite.c | 8 | ||||
-rwxr-xr-x | src/identity-provider/test_idp_issue.sh | 2 | ||||
-rw-r--r-- | src/include/gnunet_protocols.h | 8 |
7 files changed, 178 insertions, 33 deletions
diff --git a/src/identity-provider/gnunet-service-identity-provider.c b/src/identity-provider/gnunet-service-identity-provider.c index f77eebd6d..0b7f3389e 100644 --- a/src/identity-provider/gnunet-service-identity-provider.c +++ b/src/identity-provider/gnunet-service-identity-provider.c | |||
@@ -411,15 +411,31 @@ struct ConsumeTicketHandle | |||
411 | struct GNUNET_CRYPTO_EcdsaPublicKey identity_pub; | 411 | struct GNUNET_CRYPTO_EcdsaPublicKey identity_pub; |
412 | 412 | ||
413 | /** | 413 | /** |
414 | * ParallelLookups DLL | 414 | * Lookup DLL |
415 | */ | 415 | */ |
416 | struct ParallelLookup2 *parallel_lookups_head; | 416 | struct ParallelLookup2 *parallel_lookups_head; |
417 | |||
418 | /** | ||
419 | * Lookup DLL | ||
420 | */ | ||
417 | struct ParallelLookup2 *parallel_lookups_tail; | 421 | struct ParallelLookup2 *parallel_lookups_tail; |
418 | 422 | ||
423 | /** | ||
424 | * Kill task | ||
425 | */ | ||
419 | struct GNUNET_SCHEDULER_Task *kill_task; | 426 | struct GNUNET_SCHEDULER_Task *kill_task; |
427 | |||
428 | /** | ||
429 | * The ABE key | ||
430 | */ | ||
420 | struct GNUNET_CRYPTO_AbeKey *key; | 431 | struct GNUNET_CRYPTO_AbeKey *key; |
421 | 432 | ||
422 | /** | 433 | /** |
434 | * Attributes | ||
435 | */ | ||
436 | struct GNUNET_IDENTITY_PROVIDER_AttributeList *attrs; | ||
437 | |||
438 | /** | ||
423 | * request id | 439 | * request id |
424 | */ | 440 | */ |
425 | uint32_t r_id; | 441 | uint32_t r_id; |
@@ -2029,11 +2045,13 @@ process_parallel_lookup2 (void *cls, uint32_t rd_count, | |||
2029 | "Parallel lookup finished (count=%u)\n", rd_count); | 2045 | "Parallel lookup finished (count=%u)\n", rd_count); |
2030 | struct ParallelLookup2 *parallel_lookup = cls; | 2046 | struct ParallelLookup2 *parallel_lookup = cls; |
2031 | struct ConsumeTicketHandle *handle = parallel_lookup->handle; | 2047 | struct ConsumeTicketHandle *handle = parallel_lookup->handle; |
2032 | struct AttributeResultMessage *arm; | 2048 | struct ConsumeTicketResultMessage *crm; |
2033 | struct GNUNET_MQ_Envelope *env; | 2049 | struct GNUNET_MQ_Envelope *env; |
2050 | struct GNUNET_IDENTITY_PROVIDER_AttributeListEntry *attr_le; | ||
2034 | char *data; | 2051 | char *data; |
2035 | char *data_tmp; | 2052 | char *data_tmp; |
2036 | size_t msg_extra_len; | 2053 | size_t attr_len; |
2054 | size_t attrs_len; | ||
2037 | 2055 | ||
2038 | GNUNET_CONTAINER_DLL_remove (handle->parallel_lookups_head, | 2056 | GNUNET_CONTAINER_DLL_remove (handle->parallel_lookups_head, |
2039 | handle->parallel_lookups_tail, | 2057 | handle->parallel_lookups_tail, |
@@ -2043,31 +2061,32 @@ process_parallel_lookup2 (void *cls, uint32_t rd_count, | |||
2043 | GNUNET_break(0);//TODO | 2061 | GNUNET_break(0);//TODO |
2044 | if (rd->record_type == GNUNET_GNSRECORD_TYPE_ID_ATTR) | 2062 | if (rd->record_type == GNUNET_GNSRECORD_TYPE_ID_ATTR) |
2045 | { | 2063 | { |
2046 | msg_extra_len = GNUNET_CRYPTO_cpabe_decrypt (rd->data, | 2064 | attr_len = GNUNET_CRYPTO_cpabe_decrypt (rd->data, |
2047 | rd->data_size, | 2065 | rd->data_size, |
2048 | handle->key, | 2066 | handle->key, |
2049 | (void**)&data); | 2067 | (void**)&data); |
2050 | env = GNUNET_MQ_msg_extra (arm, | 2068 | attr_le = GNUNET_new (struct GNUNET_IDENTITY_PROVIDER_AttributeListEntry); |
2051 | msg_extra_len, | 2069 | attr_le->attribute = attribute_deserialize (data, |
2052 | GNUNET_MESSAGE_TYPE_IDENTITY_PROVIDER_ATTRIBUTE_RESULT); | 2070 | attr_len); |
2053 | arm->id = htonl (handle->r_id); | 2071 | GNUNET_CONTAINER_DLL_insert (handle->attrs->list_head, |
2054 | arm->attr_len = htons (msg_extra_len); | 2072 | handle->attrs->list_tail, |
2055 | arm->identity = handle->ticket.identity; | 2073 | attr_le); |
2056 | data_tmp = (char *) &arm[1]; | ||
2057 | GNUNET_memcpy (data_tmp, | ||
2058 | data, | ||
2059 | msg_extra_len); | ||
2060 | GNUNET_MQ_send (handle->client->mq, env); | ||
2061 | GNUNET_free (data); | 2074 | GNUNET_free (data); |
2062 | } | 2075 | } |
2063 | if (NULL != handle->parallel_lookups_head) | 2076 | if (NULL != handle->parallel_lookups_head) |
2064 | return; //Wait for more | 2077 | return; //Wait for more |
2065 | //Else we are done | 2078 | //Else we are done |
2066 | GNUNET_SCHEDULER_cancel (handle->kill_task); | 2079 | GNUNET_SCHEDULER_cancel (handle->kill_task); |
2067 | env = GNUNET_MQ_msg (arm, | 2080 | attrs_len = attribute_list_serialize_get_size (handle->attrs); |
2068 | GNUNET_MESSAGE_TYPE_IDENTITY_PROVIDER_ATTRIBUTE_RESULT); | 2081 | env = GNUNET_MQ_msg_extra (crm, |
2069 | arm->id = htonl (handle->r_id); | 2082 | attrs_len, |
2070 | arm->attr_len = htons (0); | 2083 | GNUNET_MESSAGE_TYPE_IDENTITY_PROVIDER_CONSUME_TICKET_RESULT); |
2084 | crm->id = htonl (handle->r_id); | ||
2085 | crm->attrs_len = htons (attrs_len); | ||
2086 | crm->identity = handle->ticket.identity; | ||
2087 | data_tmp = (char *) &crm[1]; | ||
2088 | attribute_list_serialize (handle->attrs, | ||
2089 | data_tmp); | ||
2071 | GNUNET_MQ_send (handle->client->mq, env); | 2090 | GNUNET_MQ_send (handle->client->mq, env); |
2072 | } | 2091 | } |
2073 | 2092 | ||
@@ -2213,6 +2232,7 @@ handle_consume_ticket_message (void *cls, | |||
2213 | ch->r_id = ntohl (cm->id); | 2232 | ch->r_id = ntohl (cm->id); |
2214 | ch->client = idp; | 2233 | ch->client = idp; |
2215 | ch->identity = cm->identity; | 2234 | ch->identity = cm->identity; |
2235 | ch->attrs = GNUNET_new (struct GNUNET_IDENTITY_PROVIDER_AttributeList); | ||
2216 | GNUNET_CRYPTO_ecdsa_key_get_public (&ch->identity, | 2236 | GNUNET_CRYPTO_ecdsa_key_get_public (&ch->identity, |
2217 | &ch->identity_pub); | 2237 | &ch->identity_pub); |
2218 | ch->ticket = *((struct GNUNET_IDENTITY_PROVIDER_Ticket2*)&cm[1]); | 2238 | ch->ticket = *((struct GNUNET_IDENTITY_PROVIDER_Ticket2*)&cm[1]); |
@@ -2713,7 +2733,7 @@ run_ticket_iteration_round (struct TicketIteration *ti) | |||
2713 | */ | 2733 | */ |
2714 | static void | 2734 | static void |
2715 | handle_ticket_iteration_start (void *cls, | 2735 | handle_ticket_iteration_start (void *cls, |
2716 | const struct TicketIterationStartMessage *tis_msg) | 2736 | const struct TicketIterationStartMessage *tis_msg) |
2717 | { | 2737 | { |
2718 | struct IdpClient *client = cls; | 2738 | struct IdpClient *client = cls; |
2719 | struct TicketIteration *ti; | 2739 | struct TicketIteration *ti; |
@@ -2743,7 +2763,7 @@ handle_ticket_iteration_start (void *cls, | |||
2743 | */ | 2763 | */ |
2744 | static void | 2764 | static void |
2745 | handle_ticket_iteration_stop (void *cls, | 2765 | handle_ticket_iteration_stop (void *cls, |
2746 | const struct TicketIterationStopMessage *tis_msg) | 2766 | const struct TicketIterationStopMessage *tis_msg) |
2747 | { | 2767 | { |
2748 | struct IdpClient *client = cls; | 2768 | struct IdpClient *client = cls; |
2749 | struct TicketIteration *ti; | 2769 | struct TicketIteration *ti; |
@@ -2778,7 +2798,7 @@ handle_ticket_iteration_stop (void *cls, | |||
2778 | */ | 2798 | */ |
2779 | static void | 2799 | static void |
2780 | handle_ticket_iteration_next (void *cls, | 2800 | handle_ticket_iteration_next (void *cls, |
2781 | const struct TicketIterationNextMessage *tis_msg) | 2801 | const struct TicketIterationNextMessage *tis_msg) |
2782 | { | 2802 | { |
2783 | struct IdpClient *client = cls; | 2803 | struct IdpClient *client = cls; |
2784 | struct TicketIteration *ti; | 2804 | struct TicketIteration *ti; |
diff --git a/src/identity-provider/identity-provider.conf b/src/identity-provider/identity-provider.conf index 826b2419e..7ee5e50d8 100644 --- a/src/identity-provider/identity-provider.conf +++ b/src/identity-provider/identity-provider.conf | |||
@@ -10,6 +10,7 @@ UNIXPATH = $GNUNET_USER_RUNTIME_DIR/gnunet-service-identity-provider.sock | |||
10 | UNIX_MATCH_UID = NO | 10 | UNIX_MATCH_UID = NO |
11 | UNIX_MATCH_GID = YES | 11 | UNIX_MATCH_GID = YES |
12 | TOKEN_EXPIRATION_INTERVAL = 30 m | 12 | TOKEN_EXPIRATION_INTERVAL = 30 m |
13 | DATABASE = sqlite | ||
13 | 14 | ||
14 | [identity-provider-sqlite] | 15 | [identity-provider-sqlite] |
15 | FILENAME = $GNUNET_DATA_HOME/identity-provider/sqlite.db | 16 | FILENAME = $GNUNET_DATA_HOME/identity-provider/sqlite.db |
diff --git a/src/identity-provider/identity_provider.h b/src/identity-provider/identity_provider.h index 434af4d8c..96bed18f4 100644 --- a/src/identity-provider/identity_provider.h +++ b/src/identity-provider/identity_provider.h | |||
@@ -455,6 +455,42 @@ struct ConsumeTicketMessage | |||
455 | //Followed by a serialized ticket | 455 | //Followed by a serialized ticket |
456 | }; | 456 | }; |
457 | 457 | ||
458 | /** | ||
459 | * Attribute list is returned from the idp. | ||
460 | */ | ||
461 | struct ConsumeTicketResultMessage | ||
462 | { | ||
463 | /** | ||
464 | * Message header | ||
465 | */ | ||
466 | struct GNUNET_MessageHeader header; | ||
467 | |||
468 | /** | ||
469 | * Unique identifier for this request (for key collisions). | ||
470 | */ | ||
471 | uint32_t id GNUNET_PACKED; | ||
472 | |||
473 | /** | ||
474 | * Length of serialized attribute data | ||
475 | */ | ||
476 | uint16_t attrs_len GNUNET_PACKED; | ||
477 | |||
478 | /** | ||
479 | * always zero (for alignment) | ||
480 | */ | ||
481 | uint16_t reserved GNUNET_PACKED; | ||
482 | |||
483 | /** | ||
484 | * The public key of the identity. | ||
485 | */ | ||
486 | struct GNUNET_CRYPTO_EcdsaPublicKey identity; | ||
487 | |||
488 | /* followed by: | ||
489 | * serialized attributes data | ||
490 | */ | ||
491 | }; | ||
492 | |||
493 | |||
458 | 494 | ||
459 | GNUNET_NETWORK_STRUCT_END | 495 | GNUNET_NETWORK_STRUCT_END |
460 | 496 | ||
diff --git a/src/identity-provider/identity_provider_api.c b/src/identity-provider/identity_provider_api.c index 7c9576d05..6e0ce7b42 100644 --- a/src/identity-provider/identity_provider_api.c +++ b/src/identity-provider/identity_provider_api.c | |||
@@ -516,6 +516,86 @@ handle_attribute_store_response (void *cls, | |||
516 | 516 | ||
517 | } | 517 | } |
518 | 518 | ||
519 | |||
520 | /** | ||
521 | * Handle an incoming message of type | ||
522 | * #GNUNET_MESSAGE_TYPE_IDENTITY_PROVIDER_CONSUME_TICKET_RESULT | ||
523 | * | ||
524 | * @param cls | ||
525 | * @param msg the message we received | ||
526 | * @return #GNUNET_OK on success, #GNUNET_SYSERR on error | ||
527 | */ | ||
528 | static int | ||
529 | check_consume_ticket_result (void *cls, | ||
530 | const struct ConsumeTicketResultMessage *msg) | ||
531 | { | ||
532 | size_t msg_len; | ||
533 | size_t attrs_len; | ||
534 | |||
535 | msg_len = ntohs (msg->header.size); | ||
536 | attrs_len = ntohs (msg->attrs_len); | ||
537 | if (msg_len != sizeof (struct ConsumeTicketResultMessage) + attrs_len) | ||
538 | { | ||
539 | GNUNET_break (0); | ||
540 | return GNUNET_SYSERR; | ||
541 | } | ||
542 | return GNUNET_OK; | ||
543 | } | ||
544 | |||
545 | |||
546 | /** | ||
547 | * Handle an incoming message of type | ||
548 | * #GNUNET_MESSAGE_TYPE_IDENTITY_PROVIDER_CONSUME_TICKET_RESULT | ||
549 | * | ||
550 | * @param cls | ||
551 | * @param msg the message we received | ||
552 | */ | ||
553 | static void | ||
554 | handle_consume_ticket_result (void *cls, | ||
555 | const struct ConsumeTicketResultMessage *msg) | ||
556 | { | ||
557 | struct GNUNET_IDENTITY_PROVIDER_Handle *h = cls; | ||
558 | struct GNUNET_IDENTITY_PROVIDER_Operation *op; | ||
559 | size_t attrs_len; | ||
560 | uint32_t r_id = ntohl (msg->id); | ||
561 | |||
562 | attrs_len = ntohs (msg->attrs_len); | ||
563 | LOG (GNUNET_ERROR_TYPE_MESSAGE, | ||
564 | "Processing attribute result.\n"); | ||
565 | |||
566 | |||
567 | for (op = h->op_head; NULL != op; op = op->next) | ||
568 | if (op->r_id == r_id) | ||
569 | break; | ||
570 | if (NULL == op) | ||
571 | return; | ||
572 | |||
573 | { | ||
574 | struct GNUNET_IDENTITY_PROVIDER_AttributeList *attrs; | ||
575 | struct GNUNET_IDENTITY_PROVIDER_AttributeListEntry *le; | ||
576 | attrs = attribute_list_deserialize ((char*)&msg[1], | ||
577 | attrs_len); | ||
578 | if (NULL != op->ar_cb) | ||
579 | { | ||
580 | for (le = attrs->list_head; NULL != le; le = le->next) | ||
581 | op->ar_cb (op->cls, | ||
582 | &msg->identity, | ||
583 | le->attribute); | ||
584 | } | ||
585 | attribute_list_destroy (attrs); | ||
586 | op->ar_cb (op->cls, | ||
587 | NULL, | ||
588 | NULL); | ||
589 | GNUNET_CONTAINER_DLL_remove (h->op_head, | ||
590 | h->op_tail, | ||
591 | op); | ||
592 | GNUNET_free (op); | ||
593 | return; | ||
594 | } | ||
595 | GNUNET_assert (0); | ||
596 | } | ||
597 | |||
598 | |||
519 | /** | 599 | /** |
520 | * Handle an incoming message of type | 600 | * Handle an incoming message of type |
521 | * #GNUNET_MESSAGE_TYPE_IDENTITY_PROVIDER_ATTRIBUTE_RESULT | 601 | * #GNUNET_MESSAGE_TYPE_IDENTITY_PROVIDER_ATTRIBUTE_RESULT |
@@ -551,7 +631,7 @@ check_attribute_result (void *cls, | |||
551 | */ | 631 | */ |
552 | static void | 632 | static void |
553 | handle_attribute_result (void *cls, | 633 | handle_attribute_result (void *cls, |
554 | const struct AttributeResultMessage *msg) | 634 | const struct AttributeResultMessage *msg) |
555 | { | 635 | { |
556 | static struct GNUNET_CRYPTO_EcdsaPrivateKey identity_dummy; | 636 | static struct GNUNET_CRYPTO_EcdsaPrivateKey identity_dummy; |
557 | struct GNUNET_IDENTITY_PROVIDER_Handle *h = cls; | 637 | struct GNUNET_IDENTITY_PROVIDER_Handle *h = cls; |
@@ -716,6 +796,10 @@ reconnect (struct GNUNET_IDENTITY_PROVIDER_Handle *h) | |||
716 | GNUNET_MESSAGE_TYPE_IDENTITY_PROVIDER_TICKET_RESULT, | 796 | GNUNET_MESSAGE_TYPE_IDENTITY_PROVIDER_TICKET_RESULT, |
717 | struct TicketResultMessage, | 797 | struct TicketResultMessage, |
718 | h), | 798 | h), |
799 | GNUNET_MQ_hd_var_size (consume_ticket_result, | ||
800 | GNUNET_MESSAGE_TYPE_IDENTITY_PROVIDER_CONSUME_TICKET_RESULT, | ||
801 | struct ConsumeTicketResultMessage, | ||
802 | h), | ||
719 | GNUNET_MQ_handler_end () | 803 | GNUNET_MQ_handler_end () |
720 | }; | 804 | }; |
721 | struct GNUNET_IDENTITY_PROVIDER_Operation *op; | 805 | struct GNUNET_IDENTITY_PROVIDER_Operation *op; |
diff --git a/src/identity-provider/plugin_identity_provider_sqlite.c b/src/identity-provider/plugin_identity_provider_sqlite.c index d05baa79d..f31e2e68a 100644 --- a/src/identity-provider/plugin_identity_provider_sqlite.c +++ b/src/identity-provider/plugin_identity_provider_sqlite.c | |||
@@ -49,9 +49,9 @@ | |||
49 | * a failure of the command 'cmd' on file 'filename' | 49 | * a failure of the command 'cmd' on file 'filename' |
50 | * with the message given by strerror(errno). | 50 | * with the message given by strerror(errno). |
51 | */ | 51 | */ |
52 | #define LOG_SQLITE(db, level, cmd) do { GNUNET_log_from (level, "namestore-identity-provider", _("`%s' failed at %s:%d with error: %s\n"), cmd, __FILE__, __LINE__, sqlite3_errmsg(db->dbh)); } while(0) | 52 | #define LOG_SQLITE(db, level, cmd) do { GNUNET_log_from (level, "identity-provider", _("`%s' failed at %s:%d with error: %s\n"), cmd, __FILE__, __LINE__, sqlite3_errmsg(db->dbh)); } while(0) |
53 | 53 | ||
54 | #define LOG(kind,...) GNUNET_log_from (kind, "namestore-sqlite", __VA_ARGS__) | 54 | #define LOG(kind,...) GNUNET_log_from (kind, "identity-provider-sqlite", __VA_ARGS__) |
55 | 55 | ||
56 | 56 | ||
57 | /** | 57 | /** |
@@ -315,6 +315,8 @@ database_shutdown (struct Plugin *plugin) | |||
315 | sqlite3_finalize (plugin->delete_ticket); | 315 | sqlite3_finalize (plugin->delete_ticket); |
316 | if (NULL != plugin->iterate_tickets) | 316 | if (NULL != plugin->iterate_tickets) |
317 | sqlite3_finalize (plugin->iterate_tickets); | 317 | sqlite3_finalize (plugin->iterate_tickets); |
318 | if (NULL != plugin->iterate_tickets_by_audience) | ||
319 | sqlite3_finalize (plugin->iterate_tickets_by_audience); | ||
318 | result = sqlite3_close (plugin->dbh); | 320 | result = sqlite3_close (plugin->dbh); |
319 | if (result == SQLITE_BUSY) | 321 | if (result == SQLITE_BUSY) |
320 | { | 322 | { |
@@ -653,7 +655,7 @@ libgnunet_plugin_identity_provider_sqlite_init (void *cls) | |||
653 | * @return always NULL | 655 | * @return always NULL |
654 | */ | 656 | */ |
655 | void * | 657 | void * |
656 | libgnunet_plugin_namestore_sqlite_done (void *cls) | 658 | libgnunet_plugin_identity_provider_sqlite_done (void *cls) |
657 | { | 659 | { |
658 | struct GNUNET_IDENTITY_PROVIDER_PluginFunctions *api = cls; | 660 | struct GNUNET_IDENTITY_PROVIDER_PluginFunctions *api = cls; |
659 | struct Plugin *plugin = api->cls; | 661 | struct Plugin *plugin = api->cls; |
diff --git a/src/identity-provider/test_idp_issue.sh b/src/identity-provider/test_idp_issue.sh index aca98e390..38369a33e 100755 --- a/src/identity-provider/test_idp_issue.sh +++ b/src/identity-provider/test_idp_issue.sh | |||
@@ -1,5 +1,5 @@ | |||
1 | #!/bin/bash | 1 | #!/bin/bash |
2 | trap "gnunet-arm -e -c test_idp_lookup.conf" SIGINT | 2 | trap "gnunet-arm -e -c test_idp.conf" SIGINT |
3 | 3 | ||
4 | LOCATION=$(which gnunet-config) | 4 | LOCATION=$(which gnunet-config) |
5 | if [ -z $LOCATION ] | 5 | if [ -z $LOCATION ] |
diff --git a/src/include/gnunet_protocols.h b/src/include/gnunet_protocols.h index 743a28946..b22e1b417 100644 --- a/src/include/gnunet_protocols.h +++ b/src/include/gnunet_protocols.h | |||
@@ -2646,11 +2646,13 @@ extern "C" | |||
2646 | 2646 | ||
2647 | #define GNUNET_MESSAGE_TYPE_IDENTITY_PROVIDER_CONSUME_TICKET 973 | 2647 | #define GNUNET_MESSAGE_TYPE_IDENTITY_PROVIDER_CONSUME_TICKET 973 |
2648 | 2648 | ||
2649 | #define GNUNET_MESSAGE_TYPE_IDENTITY_PROVIDER_TICKET_ITERATION_START 974 | 2649 | #define GNUNET_MESSAGE_TYPE_IDENTITY_PROVIDER_CONSUME_TICKET_RESULT 974 |
2650 | 2650 | ||
2651 | #define GNUNET_MESSAGE_TYPE_IDENTITY_PROVIDER_TICKET_ITERATION_STOP 975 | 2651 | #define GNUNET_MESSAGE_TYPE_IDENTITY_PROVIDER_TICKET_ITERATION_START 975 |
2652 | 2652 | ||
2653 | #define GNUNET_MESSAGE_TYPE_IDENTITY_PROVIDER_TICKET_ITERATION_NEXT 976 | 2653 | #define GNUNET_MESSAGE_TYPE_IDENTITY_PROVIDER_TICKET_ITERATION_STOP 976 |
2654 | |||
2655 | #define GNUNET_MESSAGE_TYPE_IDENTITY_PROVIDER_TICKET_ITERATION_NEXT 977 | ||
2654 | 2656 | ||
2655 | /************************************************** | 2657 | /************************************************** |
2656 | * | 2658 | * |