diff options
Diffstat (limited to 'src/identity')
-rw-r--r-- | src/identity/gnunet-service-identity.c | 8 | ||||
-rw-r--r-- | src/identity/identity.h | 16 | ||||
-rw-r--r-- | src/identity/identity_api.c | 5 |
3 files changed, 19 insertions, 10 deletions
diff --git a/src/identity/gnunet-service-identity.c b/src/identity/gnunet-service-identity.c index f1156e0b6..07296a882 100644 --- a/src/identity/gnunet-service-identity.c +++ b/src/identity/gnunet-service-identity.c | |||
@@ -244,6 +244,7 @@ create_update_message (struct Ego *ego) | |||
244 | GNUNET_MESSAGE_TYPE_IDENTITY_UPDATE); | 244 | GNUNET_MESSAGE_TYPE_IDENTITY_UPDATE); |
245 | um->name_len = htons (name_len); | 245 | um->name_len = htons (name_len); |
246 | um->end_of_list = htons (GNUNET_NO); | 246 | um->end_of_list = htons (GNUNET_NO); |
247 | um->key_len = htons (key_len); | ||
247 | GNUNET_memcpy (&um[1], ego->identifier, name_len); | 248 | GNUNET_memcpy (&um[1], ego->identifier, name_len); |
248 | GNUNET_IDENTITY_write_private_key_to_buffer (&ego->pk, | 249 | GNUNET_IDENTITY_write_private_key_to_buffer (&ego->pk, |
249 | ((char*) &um[1]) + name_len, | 250 | ((char*) &um[1]) + name_len, |
@@ -287,6 +288,7 @@ handle_start_message (void *cls, | |||
287 | GNUNET_MESSAGE_TYPE_IDENTITY_UPDATE); | 288 | GNUNET_MESSAGE_TYPE_IDENTITY_UPDATE); |
288 | ume->end_of_list = htons (GNUNET_YES); | 289 | ume->end_of_list = htons (GNUNET_YES); |
289 | ume->name_len = htons (0); | 290 | ume->name_len = htons (0); |
291 | ume->key_len = htons (0); | ||
290 | GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client), | 292 | GNUNET_MQ_send (GNUNET_SERVICE_client_get_mq (client), |
291 | env); | 293 | env); |
292 | } | 294 | } |
@@ -426,6 +428,7 @@ notify_listeners (struct Ego *ego) | |||
426 | um->header.size = htons (sizeof(struct UpdateMessage) + name_len + key_len); | 428 | um->header.size = htons (sizeof(struct UpdateMessage) + name_len + key_len); |
427 | um->name_len = htons (name_len); | 429 | um->name_len = htons (name_len); |
428 | um->end_of_list = htons (GNUNET_NO); | 430 | um->end_of_list = htons (GNUNET_NO); |
431 | um->key_len = htons (key_len); | ||
429 | GNUNET_memcpy (&um[1], ego->identifier, name_len); | 432 | GNUNET_memcpy (&um[1], ego->identifier, name_len); |
430 | GNUNET_IDENTITY_write_private_key_to_buffer (&ego->pk, | 433 | GNUNET_IDENTITY_write_private_key_to_buffer (&ego->pk, |
431 | ((char*) &um[1]) + name_len, | 434 | ((char*) &um[1]) + name_len, |
@@ -458,8 +461,7 @@ check_create_message (void *cls, | |||
458 | return GNUNET_SYSERR; | 461 | return GNUNET_SYSERR; |
459 | } | 462 | } |
460 | name_len = ntohs (msg->name_len); | 463 | name_len = ntohs (msg->name_len); |
461 | key_len = ntohl (msg->key_len); | 464 | key_len = ntohs (msg->key_len); |
462 | GNUNET_break (0 == ntohs (msg->reserved)); | ||
463 | if (name_len + key_len + sizeof(struct CreateRequestMessage) != size) | 465 | if (name_len + key_len + sizeof(struct CreateRequestMessage) != size) |
464 | { | 466 | { |
465 | GNUNET_break (0); | 467 | GNUNET_break (0); |
@@ -494,7 +496,7 @@ handle_create_message (void *cls, | |||
494 | size_t kb_read; | 496 | size_t kb_read; |
495 | 497 | ||
496 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Received CREATE message from client\n"); | 498 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Received CREATE message from client\n"); |
497 | key_len = ntohl (crm->key_len); | 499 | key_len = ntohs (crm->key_len); |
498 | if ((GNUNET_SYSERR == | 500 | if ((GNUNET_SYSERR == |
499 | GNUNET_IDENTITY_read_private_key_from_buffer (&crm[1], | 501 | GNUNET_IDENTITY_read_private_key_from_buffer (&crm[1], |
500 | key_len, | 502 | key_len, |
diff --git a/src/identity/identity.h b/src/identity/identity.h index dc57ee11e..a3193ca2a 100644 --- a/src/identity/identity.h +++ b/src/identity/identity.h | |||
@@ -128,6 +128,16 @@ struct UpdateMessage | |||
128 | */ | 128 | */ |
129 | uint16_t end_of_list GNUNET_PACKED; | 129 | uint16_t end_of_list GNUNET_PACKED; |
130 | 130 | ||
131 | /** | ||
132 | * Key length | ||
133 | */ | ||
134 | uint16_t key_len GNUNET_PACKED; | ||
135 | |||
136 | /** | ||
137 | * Reserved (alignment) | ||
138 | */ | ||
139 | uint16_t reserved GNUNET_PACKED; | ||
140 | |||
131 | /* followed by 0-terminated ego name */ | 141 | /* followed by 0-terminated ego name */ |
132 | /* followed by the private key */ | 142 | /* followed by the private key */ |
133 | }; | 143 | }; |
@@ -150,11 +160,9 @@ struct CreateRequestMessage | |||
150 | uint16_t name_len GNUNET_PACKED; | 160 | uint16_t name_len GNUNET_PACKED; |
151 | 161 | ||
152 | /** | 162 | /** |
153 | * Always zero. | 163 | * Key length |
154 | */ | 164 | */ |
155 | uint16_t reserved GNUNET_PACKED; | 165 | uint16_t key_len GNUNET_PACKED; |
156 | |||
157 | uint32_t key_len GNUNET_PACKED; | ||
158 | 166 | ||
159 | /* | 167 | /* |
160 | * Followed by the private key | 168 | * Followed by the private key |
diff --git a/src/identity/identity_api.c b/src/identity/identity_api.c index ef2aacb78..47a78e2bb 100644 --- a/src/identity/identity_api.c +++ b/src/identity/identity_api.c | |||
@@ -412,7 +412,7 @@ handle_identity_update (void *cls, | |||
412 | tmp = (const char*) &um[1]; | 412 | tmp = (const char*) &um[1]; |
413 | str = (0 == name_len) ? NULL : tmp; | 413 | str = (0 == name_len) ? NULL : tmp; |
414 | memset (&private_key, 0, sizeof (private_key)); | 414 | memset (&private_key, 0, sizeof (private_key)); |
415 | key_len = ntohs (um->header.size) - name_len; | 415 | key_len = ntohs (um->key_len); |
416 | GNUNET_assert (GNUNET_SYSERR != | 416 | GNUNET_assert (GNUNET_SYSERR != |
417 | GNUNET_IDENTITY_read_private_key_from_buffer (tmp + name_len, | 417 | GNUNET_IDENTITY_read_private_key_from_buffer (tmp + name_len, |
418 | key_len, | 418 | key_len, |
@@ -621,11 +621,10 @@ GNUNET_IDENTITY_create (struct GNUNET_IDENTITY_Handle *h, | |||
621 | env = GNUNET_MQ_msg_extra (crm, slen + key_len, | 621 | env = GNUNET_MQ_msg_extra (crm, slen + key_len, |
622 | GNUNET_MESSAGE_TYPE_IDENTITY_CREATE); | 622 | GNUNET_MESSAGE_TYPE_IDENTITY_CREATE); |
623 | crm->name_len = htons (slen); | 623 | crm->name_len = htons (slen); |
624 | crm->reserved = htons (0); | ||
625 | GNUNET_IDENTITY_write_private_key_to_buffer (&private_key, | 624 | GNUNET_IDENTITY_write_private_key_to_buffer (&private_key, |
626 | &crm[1], | 625 | &crm[1], |
627 | key_len); | 626 | key_len); |
628 | crm->key_len = htonl (key_len); | 627 | crm->key_len = htons (key_len); |
629 | op->pk = private_key; | 628 | op->pk = private_key; |
630 | GNUNET_memcpy ((char*) &crm[1] + key_len, name, slen); | 629 | GNUNET_memcpy ((char*) &crm[1] + key_len, name, slen); |
631 | GNUNET_MQ_send (h->mq, env); | 630 | GNUNET_MQ_send (h->mq, env); |