aboutsummaryrefslogtreecommitdiff
path: root/src/identity
diff options
context:
space:
mode:
Diffstat (limited to 'src/identity')
-rw-r--r--src/identity/gnunet-service-identity.c8
-rw-r--r--src/identity/identity.h16
-rw-r--r--src/identity/identity_api.c5
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);