updates.
[silc.git] / apps / silcd / protocol.h
index b9505cf43f9118854034914fa109ec3bbe355a8a..2b1b9c232d6342f256b906a87ad1a74c5dbe1531 100644 (file)
@@ -4,7 +4,7 @@
 
   Author: Pekka Riikonen <priikone@poseidon.pspt.fi>
 
-  Copyright (C) 1997 - 2000 Pekka Riikonen
+  Copyright (C) 1997 - 2001 Pekka Riikonen
 
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
 /* SILC client protocol types */
 #define SILC_PROTOCOL_SERVER_NONE 0
 #define SILC_PROTOCOL_SERVER_CONNECTION_AUTH 1
-#define SILC_PROTOCOL_SERVER_CHANNEL_AUTH 2
-#define SILC_PROTOCOL_SERVER_KEY_EXCHANGE 3
+#define SILC_PROTOCOL_SERVER_KEY_EXCHANGE 2
 /* #define SILC_PROTOCOL_SERVER_MAX 255 */
 
 /* Internal context for Key Exchange protocol. */
 typedef struct {
   void *server;
+  void *context;
   SilcSocketConnection sock;
   SilcRng rng;
 
@@ -43,13 +43,15 @@ typedef struct {
   SilcIdType dest_id_type;
 
   SilcTask timeout_task;
-  SilcBuffer packet;
+  SilcPacketContext *packet;
   SilcSKE ske;
+  SilcSKEKeyMaterial *keymat;
 } SilcServerKEInternalContext;
 
 /* Internal context for connection authentication protocol */
 typedef struct {
   void *server;
+  void *context;
   SilcSocketConnection sock;
 
   /* TRUE if we are receiving part of the protocol */
@@ -66,7 +68,7 @@ typedef struct {
   /* Authentication data if we alreay know it. This is filled before
      starting the protocol if we know the authentication data. Otherwise
      these are and remain NULL. Used when we are initiating. */
-  unsigned char *auth_data;
+  void *auth_data;
   unsigned int auth_data_len;
 
   /* Destinations ID from KE protocol context */
@@ -74,10 +76,20 @@ typedef struct {
   SilcIdType dest_id_type;
 
   SilcTask timeout_task;
-  SilcBuffer packet;
+  SilcPacketContext *packet;
   unsigned short conn_type;
 } SilcServerConnAuthInternalContext;
 
 /* Prototypes */
+void silc_server_protocols_register(void);
+void silc_server_protocols_unregister(void);
+int silc_server_protocol_ke_set_keys(SilcSKE ske,
+                                    SilcSocketConnection sock,
+                                    SilcSKEKeyMaterial *keymat,
+                                    SilcCipher cipher,
+                                    SilcPKCS pkcs,
+                                    SilcHash hash,
+                                    SilcHmac hmac,
+                                    int is_responder);
 
 #endif