updates. New data types.
[silc.git] / lib / silccore / silcprivate.c
index 45e81d8544408dcb0fc5f9b2bf7fd417997f3c6e..789bde0e4ec39917f9d86537c562e351eeae9833 100644 (file)
 /* Private Message Payload structure. Contents of this structure is parsed
    from SILC packets. */
 struct SilcPrivateMessagePayloadStruct {
-  unsigned short nickname_len;
+  uint16 flags;
+  uint16 nickname_len;
   unsigned char *nickname;
-  unsigned short flags;
-  unsigned short message_len;
+  uint16 message_len;
   unsigned char *message;
 };
 
@@ -59,9 +59,9 @@ silc_private_message_payload_parse(SilcBuffer buffer, SilcCipher cipher)
 
   /* Parse the Private Message Payload. Ignore the padding. */
   ret = silc_buffer_unformat(buffer,
+                            SILC_STR_UI_SHORT(&new->flags),
                             SILC_STR_UI16_NSTRING_ALLOC(&new->nickname, 
                                                         &new->nickname_len),
-                            SILC_STR_UI_SHORT(&new->flags),
                             SILC_STR_UI16_NSTRING_ALLOC(&new->message, 
                                                         &new->message_len),
                             SILC_STR_END);
@@ -86,21 +86,21 @@ silc_private_message_payload_parse(SilcBuffer buffer, SilcCipher cipher)
    the cipher is provided the packet is also encrypted here.  It is provided
    if the private message private keys are used. */
 
-SilcBuffer silc_private_message_payload_encode(unsigned int nickname_len,
+SilcBuffer silc_private_message_payload_encode(uint16 flags,
+                                              uint32 nickname_len,
                                               unsigned char *nickname,
-                                              unsigned short flags,
-                                              unsigned short data_len,
+                                              uint16 data_len,
                                               unsigned char *data,
                                               SilcCipher cipher)
 {
   int i;
   SilcBuffer buffer;
-  unsigned int len, pad_len = 0;
+  uint32 len, pad_len = 0;
   unsigned char pad[SILC_PACKET_MAX_PADLEN];
 
   SILC_LOG_DEBUG(("Encoding private message payload"));
 
-  len = 2 + nickname_len + 4 + data_len;
+  len = 4 + nickname_len + 2 + data_len;
 
   if (cipher) {
     /* Calculate length of padding. */
@@ -117,9 +117,9 @@ SilcBuffer silc_private_message_payload_encode(unsigned int nickname_len,
   /* Encode the Channel Message Payload */
   silc_buffer_pull_tail(buffer, SILC_BUFFER_END(buffer));
   silc_buffer_format(buffer, 
+                    SILC_STR_UI_SHORT(flags),
                     SILC_STR_UI_SHORT(nickname_len),
                     SILC_STR_UI_XNSTRING(nickname, nickname_len),
-                    SILC_STR_UI_SHORT(flags),
                     SILC_STR_UI_SHORT(data_len),
                     SILC_STR_UI_XNSTRING(data, data_len),
                     SILC_STR_UI_XNSTRING(pad, pad_len),
@@ -147,11 +147,19 @@ void silc_private_message_payload_free(SilcPrivateMessagePayload payload)
   silc_free(payload);
 }
 
+/* Return flags */
+
+uint16 
+silc_private_message_get_flags(SilcPrivateMessagePayload payload)
+{
+  return payload->flags;
+}
+
 /* Return nickname */
 
 unsigned char *
 silc_private_message_get_nickname(SilcPrivateMessagePayload payload,
-                                 unsigned int *nickname_len)
+                                 uint32 *nickname_len)
 {
   if (nickname_len)
     *nickname_len = payload->nickname_len;
@@ -163,18 +171,10 @@ silc_private_message_get_nickname(SilcPrivateMessagePayload payload,
 
 unsigned char *
 silc_private_message_get_message(SilcPrivateMessagePayload payload,
-                                unsigned int *message_len)
+                                uint32 *message_len)
 {
   if (message_len)
     *message_len = payload->message_len;
 
   return payload->message;
 }
-
-/* Return flags */
-
-unsigned short 
-silc_private_message_get_flags(SilcPrivateMessagePayload payload)
-{
-  return payload->flags;
-}