diff options
Diffstat (limited to 'src/messenger/messenger_api_message.c')
-rw-r--r-- | src/messenger/messenger_api_message.c | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/src/messenger/messenger_api_message.c b/src/messenger/messenger_api_message.c index 496c98dbf..ac63f16ca 100644 --- a/src/messenger/messenger_api_message.c +++ b/src/messenger/messenger_api_message.c @@ -23,6 +23,7 @@ * @brief messenger api: client and service implementation of GNUnet MESSENGER service */ +#include "platform.h" #include "messenger_api_message.h" struct GNUNET_MESSENGER_MessageSignature @@ -219,6 +220,10 @@ get_message_body_kind_size (enum GNUNET_MESSENGER_MessageKind kind) case GNUNET_MESSENGER_KIND_PRIVATE: length += member_size(struct GNUNET_MESSENGER_Message, body.privacy.key); break; + case GNUNET_MESSENGER_KIND_DELETE: + length += member_size(struct GNUNET_MESSENGER_Message, body.deletion.hash); + length += member_size(struct GNUNET_MESSENGER_Message, body.deletion.delay); + break; default: break; } @@ -255,16 +260,16 @@ get_message_body_size (enum GNUNET_MESSENGER_MessageKind kind, switch (kind) { case GNUNET_MESSENGER_KIND_INFO: - length += GNUNET_IDENTITY_key_get_length(&(body->info.host_key)); + length += GNUNET_IDENTITY_public_key_get_length(&(body->info.host_key)); break; case GNUNET_MESSENGER_KIND_JOIN: - length += GNUNET_IDENTITY_key_get_length(&(body->join.key)); + length += GNUNET_IDENTITY_public_key_get_length(&(body->join.key)); break; case GNUNET_MESSENGER_KIND_NAME: length += (body->name.name ? strlen (body->name.name) : 0); break; case GNUNET_MESSENGER_KIND_KEY: - length += GNUNET_IDENTITY_key_get_length(&(body->key.key)); + length += GNUNET_IDENTITY_public_key_get_length(&(body->key.key)); break; case GNUNET_MESSENGER_KIND_TEXT: length += strlen (body->text.text); @@ -368,7 +373,7 @@ calc_padded_length (uint16_t length) } while (0) #define encode_step_key(dst, offset, src, length) do { \ - ssize_t result = GNUNET_IDENTITY_write_key_to_buffer( \ + ssize_t result = GNUNET_IDENTITY_write_public_key_to_buffer( \ src, dst + offset, length - offset \ ); \ if (result < 0) \ @@ -445,6 +450,10 @@ encode_message_body (enum GNUNET_MESSENGER_MessageKind kind, encode_step(buffer, offset, &(body->privacy.key)); encode_step_ext(buffer, offset, body->privacy.data, min(length - offset, body->privacy.length)); break; + case GNUNET_MESSENGER_KIND_DELETE: + encode_step(buffer, offset, &(body->deletion.hash)); + encode_step(buffer, offset, &(body->deletion.delay)); + break; default: break; } @@ -531,13 +540,15 @@ encode_short_message (const struct GNUNET_MESSENGER_ShortMessage *message, } while (0) #define decode_step_key(src, offset, dst, length) do { \ - ssize_t result = GNUNET_IDENTITY_read_key_from_buffer( \ - dst, src + offset, length - offset \ + enum GNUNET_GenericReturnValue result; \ + size_t read; \ + result = GNUNET_IDENTITY_read_public_key_from_buffer( \ + src + offset, length - offset, dst, &read \ ); \ - if (result < 0) \ + if (GNUNET_SYSERR == result) \ GNUNET_break(0); \ else \ - offset += result; \ + offset += read; \ } while (0) static uint16_t @@ -616,6 +627,10 @@ decode_message_body (enum GNUNET_MESSENGER_MessageKind *kind, body->privacy.length = (length - offset); decode_step_malloc(buffer, offset, body->privacy.data, length - offset, 0); break; + case GNUNET_MESSENGER_KIND_DELETE: + decode_step(buffer, offset, &(body->deletion.hash)); + decode_step(buffer, offset, &(body->deletion.delay)); + break; default: *kind = GNUNET_MESSENGER_KIND_UNKNOWN; break; |