Integer type name change.
[silc.git] / lib / silcclient / protocol.h
index 4fa009fbf4f5490372e5d50bdedb2200308a9d57..9d93709210bd550ea29801218564d2c1b3ec225e 100644 (file)
@@ -25,6 +25,7 @@
 #define SILC_PROTOCOL_CLIENT_NONE               0
 #define SILC_PROTOCOL_CLIENT_CONNECTION_AUTH    1
 #define SILC_PROTOCOL_CLIENT_KEY_EXCHANGE       2
+#define SILC_PROTOCOL_CLIENT_REKEY              3
 /* #define SILC_PROTOCOL_CLIENT_MAX             255 */
 
 /* Internal context for key exchange protocol */
@@ -67,11 +68,22 @@ typedef struct {
      starting the protocol if we know the authentication data. Otherwise
      these are and remain NULL. */
   unsigned char *auth_data;
-  unsigned int auth_data_len;
+  SilcUInt32 auth_data_len;
 
   SilcTask timeout_task;
 } SilcClientConnAuthInternalContext;
 
+/* Internal context for the rekey protocol */
+typedef struct {
+  void *client;
+  void *context;
+  SilcSocketConnection sock;
+  bool responder;                  /* TRUE if we are receiving party */
+  bool pfs;                        /* TRUE if PFS is to be used */
+  SilcSKE ske;                     /* Defined if PFS is used */
+  SilcPacketContext *packet;
+} SilcClientRekeyInternalContext;
+
 /* Prototypes */
 void silc_client_protocols_register(void);
 void silc_client_protocols_unregister(void);
@@ -79,17 +91,21 @@ void silc_client_protocol_ke_send_packet(SilcSKE ske,
                                         SilcBuffer packet,
                                         SilcPacketType type,
                                         void *context);
-SilcSKEStatus silc_client_protocol_ke_verify_key(SilcSKE ske,
-                                                unsigned char *pk_data,
-                                                unsigned int pk_len,
-                                                SilcSKEPKType pk_type,
-                                                void *context);
+void silc_client_protocol_ke_verify_key(SilcSKE ske,
+                                       unsigned char *pk_data,
+                                       SilcUInt32 pk_len,
+                                       SilcSKEPKType pk_type,
+                                       void *context,
+                                       SilcSKEVerifyCbCompletion completion,
+                                       void *completion_context);
 void silc_client_protocol_ke_set_keys(SilcSKE ske,
                                      SilcSocketConnection sock,
                                      SilcSKEKeyMaterial *keymat,
                                      SilcCipher cipher,
                                      SilcPKCS pkcs,
                                      SilcHash hash,
-                                     SilcHmac hmac);
+                                     SilcHmac hmac,
+                                     SilcSKEDiffieHellmanGroup group,
+                                     bool is_responder);
 
 #endif