Client library rewrites.
[silc.git] / lib / silcclient / client.h
index 59bb12b1c73c971d9147c6a4209eebbb393a8d76..1f3d0d2bfa68dca3726eef8f59da4825ad418624 100644 (file)
 /* Forward declarations */
 typedef struct SilcClientStruct *SilcClient;
 typedef struct SilcClientConnectionStruct *SilcClientConnection;
-typedef struct SilcClientPingStruct SilcClientPing;
-typedef struct SilcClientAwayStruct SilcClientAway;
-typedef struct SilcClientKeyAgreementStruct *SilcClientKeyAgreement;
-typedef struct SilcClientFtpSessionStruct *SilcClientFtpSession;
 typedef struct SilcClientEntryStruct *SilcClientEntry;
 typedef struct SilcChannelEntryStruct *SilcChannelEntry;
 typedef struct SilcServerEntryStruct *SilcServerEntry;
+
+typedef struct SilcClientAwayStruct SilcClientAway;
+typedef struct SilcClientKeyAgreementStruct *SilcClientKeyAgreement;
+typedef struct SilcClientFtpSessionStruct *SilcClientFtpSession;
 typedef struct SilcClientCommandReplyContextStruct
                                            *SilcClientCommandReplyContext;
 typedef struct SilcChannelUserStruct *SilcChannelUser;
@@ -63,4 +63,29 @@ typedef struct SilcClientEntryInternalStruct {
   SilcAtomic8 refcnt;          /* Reference counter */
 } SilcClientEntryInternal;
 
+/* Internal channel entry context */
+typedef struct SilcChannelEntryInternalStruct {
+  /* SilcChannelEntry status information */
+  SilcDList old_channel_keys;
+  SilcDList old_hmacs;
+
+  /* Channel private keys */
+  SilcDList private_keys;                   /* List of private keys or NULL */
+  SilcChannelPrivateKey curr_key;           /* Current private key */
+
+  /* Channel keys */
+  SilcCipher channel_key;                    /* The channel key */
+  SilcHmac hmac;                            /* Current HMAC */
+  unsigned char iv[SILC_CIPHER_MAX_IV_SIZE]; /* Current IV */
+
+  SilcUInt16 resolve_cmd_ident;                     /* Resolving identifier */
+  SilcAtomic8 refcnt;                       /* Reference counter */
+} SilcChannelEntryInternal;
+
+/* Internal server entry context */
+typedef struct SilcServerEntryInternalStruct {
+  SilcUInt16 resolve_cmd_ident;                     /* Resolving identifier */
+  SilcAtomic8 refcnt;                       /* Reference counter */
+} SilcServerEntryInternal;
+
 #endif /* CLIENT_H */