5 Author: Pekka Riikonen <priikone@poseidon.pspt.fi>
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.
24 /* SILC client protocol types */
25 #define SILC_PROTOCOL_SERVER_NONE 0
26 #define SILC_PROTOCOL_SERVER_CONNECTION_AUTH 1
27 #define SILC_PROTOCOL_SERVER_KEY_EXCHANGE 2
28 #define SILC_PROTOCOL_SERVER_REKEY 3
29 /* #define SILC_PROTOCOL_SERVER_MAX 255 */
31 /* Internal context for Key Exchange protocol. */
35 SilcSocketConnection sock;
38 /* TRUE if we are receiveing part of the protocol */
41 /* Destinations ID taken from authenticataed packet so that we can
42 get the destinations ID. */
44 SilcIdType dest_id_type;
46 /* Pointer to the configuration. */
49 SilcTask timeout_task;
50 SilcPacketContext *packet;
52 SilcSKEKeyMaterial *keymat;
53 } SilcServerKEInternalContext;
55 /* Internal context for connection authentication protocol */
59 SilcSocketConnection sock;
61 /* TRUE if we are receiving part of the protocol */
64 /* SKE object from Key Exchange protocol. */
67 /* Auth method that must be used. This is resolved before this
68 connection authentication protocol is started. Used when we are
72 /* Authentication data if we alreay know it. This is filled before
73 starting the protocol if we know the authentication data. Otherwise
74 these are and remain NULL. Used when we are initiating. */
78 /* Destinations ID from KE protocol context */
80 SilcIdType dest_id_type;
82 /* Pointer to the configuration. */
85 SilcTask timeout_task;
86 SilcPacketContext *packet;
88 } SilcServerConnAuthInternalContext;
90 /* Internal context for the rekey protocol */
94 SilcSocketConnection sock;
95 bool responder; /* TRUE if we are receiving party */
96 bool pfs; /* TRUE if PFS is to be used */
97 SilcSKE ske; /* Defined if PFS is used */
98 SilcPacketContext *packet;
99 } SilcServerRekeyInternalContext;
102 void silc_server_protocols_register(void);
103 void silc_server_protocols_unregister(void);
104 int silc_server_protocol_ke_set_keys(SilcSKE ske,
105 SilcSocketConnection sock,
106 SilcSKEKeyMaterial *keymat,
111 SilcSKEDiffieHellmanGroup group,