updates.
[silc.git] / lib / silccore / silcpacket.h
index afa6e4f73c45f3ed48b4b85175caab1195f7971e..7d1b11ba1c837fb2a9f8f551b682dea318f489f1 100644 (file)
@@ -129,9 +129,6 @@ typedef struct {
   unsigned short truelen;
   unsigned short padlen;
 
-  /* For padding generation */
-  SilcRng rng;
-
   /* Back pointers */
   void *context;
   SilcSocketConnection sock;
@@ -189,6 +186,11 @@ typedef struct {
 typedef void (*SilcPacketParserCallback)(SilcPacketParserContext 
                                         *parse_context);
 
+/* The packet check callback in decryption phase */
+typedef int (*SilcPacketCheckDecrypt)(SilcPacketType packet_type,
+                                     SilcBuffer buffer,
+                                     SilcPacketContext *packet,
+                                     void *context);
 
 /* SILC Packet types. */
 #define SILC_PACKET_NONE                0       /* NULL, never sent */
@@ -216,6 +218,8 @@ typedef void (*SilcPacketParserCallback)(SilcPacketParserContext
 #define SILC_PACKET_REKEY                22      /* Re-key start */
 #define SILC_PACKET_REKEY_DONE           23      /* Re-key done */
 #define SILC_PACKET_HEARTBEAT            24      /* Heartbeat */
+#define SILC_PACKET_KEY_AGREEMENT        25      /* Key Agreement request */
+#define SILC_PACKET_CELL_ROUTERS         26      /* Cell routers backup */
 
 #define SILC_PACKET_PRIVATE              200     /* Private range start  */
 #define SILC_PACKET_MAX                  255     /* RESERVED */
@@ -247,7 +251,9 @@ void silc_packet_send_prepare(SilcSocketConnection sock,
 int silc_packet_read(int sock, SilcBuffer dest);
 int silc_packet_receive(SilcSocketConnection sock);
 int silc_packet_decrypt(SilcCipher cipher, SilcHmac hmac,
-                       SilcBuffer buffer, SilcPacketContext *packet);
+                       SilcBuffer buffer, SilcPacketContext *packet,
+                       SilcPacketCheckDecrypt check_packet,
+                       void *context);
 void silc_packet_receive_process(SilcSocketConnection sock,
                                 SilcCipher cipher, SilcHmac hmac,
                                 SilcPacketParserCallback parser,