updates.
[silc.git] / lib / silccore / silcchannel.h
1 /*
2
3   silcchannel.h
4
5   Author: Pekka Riikonen <priikone@poseidon.pspt.fi>
6
7   Copyright (C) 1997 - 2000 Pekka Riikonen
8
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.
13   
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.
18
19 */
20
21 #ifndef SILCCHANNEL_H
22 #define SILCCHANNEL_H
23
24 /* Forward declaration for Channel Message Payload parsed from packet. The
25    actual structure is defined in source file and is private data. */
26 typedef struct SilcChannelPayloadStruct *SilcChannelPayload;
27
28 /* Forward declaration for Channel Key Payload parsed from packet. The
29    actual structure is defined in source file and is private data. */
30 typedef struct SilcChannelKeyPayloadStruct *SilcChannelKeyPayload;
31
32 /* Prototypes */
33 SilcChannelPayload silc_channel_payload_parse(SilcBuffer buffer,
34                                               SilcCipher cipher,
35                                               SilcHmac hmac);
36 SilcBuffer silc_channel_payload_encode(unsigned short data_len,
37                                        unsigned char *data,
38                                        unsigned short iv_len,
39                                        unsigned char *iv,
40                                        SilcCipher cipher,
41                                        SilcHmac hmac,
42                                        SilcRng rng);
43 void silc_channel_payload_free(SilcChannelPayload payload);
44 unsigned char *silc_channel_get_data(SilcChannelPayload payload,
45                                      unsigned int *data_len);
46 unsigned char *silc_channel_get_mac(SilcChannelPayload payload);
47 unsigned char *silc_channel_get_iv(SilcChannelPayload payload);
48 SilcChannelKeyPayload silc_channel_key_payload_parse(SilcBuffer buffer);
49 SilcBuffer silc_channel_key_payload_encode(unsigned short id_len,
50                                            unsigned char *id,
51                                            unsigned short cipher_len,
52                                            unsigned char *cipher,
53                                            unsigned short key_len,
54                                            unsigned char *key);
55 void silc_channel_key_payload_free(SilcChannelKeyPayload payload);
56 unsigned char *silc_channel_key_get_id(SilcChannelKeyPayload payload, 
57                                        unsigned int *id_len);
58 unsigned char *silc_channel_key_get_cipher(SilcChannelKeyPayload payload,
59                                            unsigned int *cipher_len);
60 unsigned char *silc_channel_key_get_key(SilcChannelKeyPayload payload,
61                                         unsigned int *key_len);
62
63 #endif