/* 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;
};
/* 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);
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. */
/* 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),
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;
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;
-}