5 Author: Pekka Riikonen <priikone@silcnet.org>
7 Copyright (C) 1997 - 2001 Pekka Riikonen
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2 of the License, or
12 (at your option) any later version.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
21 /****h* silccore/SILC Private Message Interface
25 * Implementation of the SILC Private Message Payload that is used to
26 * deliver private messages.
33 /****s* silccore/SilcPrivateAPI/SilcPrivateMessagePayload
37 * typedef struct SilcPrivateMessagePayloadStruct
38 * *SilcPrivateMessagePayload;
43 * This context is the actual Private Message Payload and is allocated
44 * by silc_private_message_payload_parse and given as argument usually
45 * to all silc_private_message_* functions. It is freed by the
46 * silc_private_message_payload_free function.
49 typedef struct SilcPrivateMessagePayloadStruct *SilcPrivateMessagePayload;
53 /****f* silccore/SilcPrivateAPI/silc_private_message_payload_parse
57 * SilcPrivateMessagePayload
58 * silc_private_message_payload_parse(unsigned char *payload,
59 * SilcUInt32 payload_len,
64 * Parses private message payload returning new private mesage payload
65 * structure. This also decrypts the message if the `cipher' is provided.
68 SilcPrivateMessagePayload
69 silc_private_message_payload_parse(unsigned char *payload,
70 SilcUInt32 payload_len,
73 /****f* silccore/SilcPrivateAPI/silc_private_message_payload_encode
77 * SilcBuffer silc_private_message_payload_encode(SilcUInt16 flags,
78 * SilcUInt16 data_len,
79 * const unsigned char *data,
85 * Encodes private message payload into a buffer and returns it. If
86 * the cipher is provided the packet is also encrypted here. It is provided
87 * if the private message private keys are used. If the `rng' is NULL
88 * then global RNG is used, if non-NULL then `rng' is used.
91 SilcBuffer silc_private_message_payload_encode(SilcUInt16 flags,
93 const unsigned char *data,
97 /****f* silccore/SilcPrivateAPI/silc_private_message_payload_free
102 * silc_private_message_payload_free(SilcPrivateMessagePayload payload);
106 * Frees Private Message Payload
109 void silc_private_message_payload_free(SilcPrivateMessagePayload payload);
111 /****f* silccore/SilcPrivateAPI/silc_private_message_get_flags
116 * silc_private_message_get_flags(SilcPrivateMessagePayload payload);
120 * Returns flags from the payload. Message flags may indicate some
121 * status of the message. Private message flags are equivalent to the
122 * channel message flags.
126 silc_private_message_get_flags(SilcPrivateMessagePayload payload);
128 /****f* silccore/SilcPrivateAPI/silc_private_message_get_message
133 * silc_private_message_get_nickname(SilcPrivateMessagePayload payload,
134 * SilcUInt32 *nickname_len);
138 * Returns the actual private message. The caller must not free it.
142 silc_private_message_get_message(SilcPrivateMessagePayload payload,
143 SilcUInt32 *message_len);