Moved SilcClientEntry, SilcServerEntry and SilcChannelEntry
authorPekka Riikonen <priikone@silcnet.org>
Thu, 7 Nov 2002 09:33:30 +0000 (09:33 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Thu, 7 Nov 2002 09:33:30 +0000 (09:33 +0000)
to be public.

CHANGES
lib/silcclient/client.h
lib/silcclient/idlist.h
lib/silcclient/silcclient.h

diff --git a/CHANGES b/CHANGES
index cb226276f6801ee5aeadb2d0c865bc26821c7a4a..ef180903a76f1b493e7e7557376b920f2d94c7f7 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -5,6 +5,11 @@ Thu Nov  7 10:05:28 CET 2002  Pekka Riikonen <priikone@silcnet.org>
          Affected files lib/silcclient/silcclient.h, client.c and
          client_internal.h.
 
+       * Moved the SilcClientEntry, SilcChannelEntry and
+         SilcServerEntry to silcclient.h to be public and documented
+         them for application.  Affected files are
+         lib/silcclient/silcclient.h and idlist.h.
+
 Wed Nov  6 17:18:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
 
        * Fixed manual page installation patch by Ville Räsänen.
index 0fc86888d79db4e36a85196b5f37c1e58ce6401f..d49833f6247bbd4770e539ff4a695dea77f1bfe7 100644 (file)
@@ -38,5 +38,19 @@ typedef struct SilcChannelUserStruct *SilcChannelUser;
 typedef struct SilcClientInternalStruct *SilcClientInternal;
 typedef struct SilcClientConnectionInternalStruct 
                                           *SilcClientConnectionInternal;
+typedef struct SilcChannelPrivateKeyStruct *SilcChannelPrivateKey;
   
+/* Client entry status */
+typedef enum {
+  SILC_CLIENT_STATUS_NONE       = 0x0000,
+  SILC_CLIENT_STATUS_RESOLVING  = 0x0001,
+} SilcEntryStatus;
+
+/* Client and its mode on a channel */
+struct SilcChannelUserStruct {
+  SilcClientEntry client;
+  SilcUInt32 mode;
+  SilcChannelEntry channel;
+};
+
 #endif
index f6357b49900c5fe58804d4346c9941d8edcef40e..4e9d1c87ddb9b51086240ccd00c427444107a880 100644 (file)
 #ifndef IDLIST_H
 #define IDLIST_H
 
-/* Client entry status */
-typedef enum {
-  SILC_CLIENT_STATUS_NONE       = 0x0000,
-  SILC_CLIENT_STATUS_RESOLVING  = 0x0001,
-} SilcEntryStatus;
-
-/* Client entry context. When client receives information about new client
-   (it receives its ID, for example, by IDENTIFY request) we create new
-   client entry. This entry also includes the private message keys if
-   they are used. */
-struct SilcClientEntryStruct {
-  char *nickname;              /* nickname */
-  char *username;              /* username */
-  char *hostname;              /* hostname */
-  char *server;                        /* SILC server name */
-  char *realname;              /* Realname (userinfo) */
-  SilcUInt32 mode;             /* User mode in SILC */
-  SilcClientID *id;            /* The Client ID */
-  unsigned char *fingerprint;  /* Fingerprint of client's public key */
-  SilcUInt32 fingerprint_len;  /* Length of the fingerprint */
-  SilcCipher send_key;         /* Private message key for sending */
-  SilcCipher receive_key;      /* Private message key for receiving */
-  SilcClientKeyAgreement ke;   /* Current key agreement context or NULL */
-  SilcDList attrs;             /* Requested Attributes (maybe NULL) */
-  SilcEntryStatus status;      /* Status mask */
-  SilcHashTable channels;      /* All channels client has joined */
-  unsigned char *key;          /* Set only if appliation provided the
-                                  key material. NULL if the library 
-                                  generated the key. */
-  SilcUInt32 key_len;          /* Key length */
-  SilcUInt16 resolve_cmd_ident;        /* Command identifier when resolving */
-  bool generated;              /* TRUE if library generated `key' */
-  bool valid;                  /* FALSE if this entry is not valid */
-};
-
-/* Client and its mode on a channel */
-struct SilcChannelUserStruct {
-  SilcClientEntry client;
-  SilcUInt32 mode;
-  SilcChannelEntry channel;
-};
-
-/* Channel entry context. This is allocate for every channel client has
-   joined to. This includes for example the channel specific keys */
-struct SilcChannelEntryStruct {
-  char *channel_name;
-  SilcChannelID *id;
-  SilcUInt32 mode;
-  SilcUInt16 resolve_cmd_ident;
-
-  /* All clients that has joined this channel */
-  SilcHashTable user_list;
-
-  /* Channel keys */
-  SilcCipher channel_key;                    /* The channel key */
-  unsigned char *key;                       /* Raw key data */
-  SilcUInt32 key_len;                       /* Raw key data length */
-  unsigned char iv[SILC_CIPHER_MAX_IV_SIZE]; /* Current IV */
-  SilcHmac hmac;                            /* Current HMAC */
-  SilcDList private_keys;                   /* List of private keys or NULL */
-  SilcChannelPrivateKey curr_key;           /* Current private key */
-
-  /* Old channel key is saved for a short period of time when rekey occurs
-     in case if someone is sending messages after the rekey encrypted with
-     the old key, we can still decrypt them. */
-  SilcCipher old_channel_key;
-  SilcHmac old_hmac;
-  SilcTask rekey_task;
-};
-
-/* Server entry context. This represents one server. When server information
-   is resolved with INFO command the server info is saved in this context. 
-   Also the connected servers are saved here. */
-struct SilcServerEntryStruct {
-  char *server_name;
-  char *server_info;
-  SilcServerID *server_id;
-  SilcUInt16 resolve_cmd_ident;
-};
-
 /* Prototypes. These are used only by the library. Application should not
    call these directly. */
 
index e9e84ad43be44833ab3e09e313680ef2b6001bc9..2783f4567b5110186b905446c5c9daf0b6eb5d49 100644 (file)
@@ -179,6 +179,125 @@ struct SilcClientConnectionStruct {
 };
 /***/
 
+/****s* silcclient/SilcClientAPI/SilcClientEntry
+ *
+ * NAME
+ *
+ *    typedef struct SilcClientEntryStruct { ... } *SilcClientEntry
+ *
+ * DESCRIPTION
+ *
+ *    This structure represents a client or a user in the SILC network.
+ *    The local user has this structure also and it can be accessed from
+ *    SilcClientConnection structure.  All other users in the SILC network
+ *    that are accessed using the Client Library routines will have their
+ *    own SilcClientEntry structure.  For example, when finding users by
+ *    their nickname the Client Library returns this structure back to
+ *    the application.
+ *
+ * SOURCE
+ */
+struct SilcClientEntryStruct {
+  /* General information */
+  char *nickname;              /* nickname */
+  char *username;              /* username */
+  char *hostname;              /* hostname */
+  char *server;                        /* SILC server name */
+  char *realname;              /* Realname (userinfo) */
+
+  /* Mode, ID and other information */
+  SilcUInt32 mode;             /* User mode in SILC */
+  SilcClientID *id;            /* The Client ID */
+  SilcDList attrs;             /* Requested Attributes (maybe NULL) */
+  unsigned char *fingerprint;  /* Fingerprint of client's public key */
+  SilcUInt32 fingerprint_len;  /* Length of the fingerprint */
+
+  /* Private message keys */
+  SilcCipher send_key;         /* Private message key for sending */
+  SilcCipher receive_key;      /* Private message key for receiving */
+  unsigned char *key;          /* Set only if appliation provided the
+                                  key material. NULL if the library 
+                                  generated the key. */
+  SilcUInt32 key_len;          /* Key length */
+  SilcClientKeyAgreement ke;   /* Current key agreement context or NULL */
+
+  /* SilcClientEntry status information */
+  SilcEntryStatus status;      /* Status mask */
+  SilcHashTable channels;      /* All channels client has joined */
+  SilcUInt16 resolve_cmd_ident;        /* Command identifier when resolving */
+  bool generated;              /* TRUE if library generated `key' */
+  bool valid;                  /* FALSE if this entry is not valid */
+};
+/***/
+
+/****s* silcclient/SilcClientAPI/SilcChannelEntry
+ *
+ * NAME
+ *
+ *    typedef struct SilcChannelEntryStruct { ... } *SilcChannelEntry
+ *
+ * DESCRIPTION
+ *
+ *    This structure represents a channel in the SILC network.  All
+ *    channels that the client are aware of or have joined in will be
+ *    represented as SilcChannelEntry.  The structure includes information
+ *    about the channel.
+ *
+ * SOURCE
+ */
+struct SilcChannelEntryStruct {
+  /* General information */
+  char *channel_name;                       /* Channel name */
+  SilcChannelID *id;                        /* Channel ID */
+  SilcUInt32 mode;                          /* Channel mode */
+
+  /* All clients that has joined this channel */
+  SilcHashTable user_list;
+
+  /* Channel keys */
+  SilcCipher channel_key;                    /* The channel key */
+  unsigned char *key;                       /* Raw key data */
+  SilcUInt32 key_len;                       /* Raw key data length */
+  unsigned char iv[SILC_CIPHER_MAX_IV_SIZE]; /* Current IV */
+  SilcHmac hmac;                            /* Current HMAC */
+
+  /* Channel private keys */
+  SilcDList private_keys;                   /* List of private keys or NULL */
+  SilcChannelPrivateKey curr_key;           /* Current private key */
+
+  /* SilcChannelEntry status information */
+  SilcCipher old_channel_key;
+  SilcHmac old_hmac;
+  SilcTask rekey_task;
+  SilcUInt16 resolve_cmd_ident;                     /* Command identifier when
+                                               resolving this entry */
+};
+/***/
+
+/****s* silcclient/SilcClientAPI/SilcServerEntry
+ *
+ * NAME
+ *
+ *    typedef struct SilcServerEntryStruct { ... } *SilcServerEntry
+ *
+ * DESCRIPTION
+ *
+ *    This structure represents a server in the SILC network.  All servers
+ *    that the client is aware of and have for example resolved with
+ *    SILC_COMMAND_INFO command have their on SilcServerEntry structure.
+ *
+ * SOURCE
+ */
+struct SilcServerEntryStruct {
+  /* Generate information */
+  char *server_name;                        /* Server name */
+  char *server_info;                        /* Server info */
+  SilcServerID *server_id;                  /* Server ID */
+  SilcUInt16 resolve_cmd_ident;                     /* Command identifier when
+                                               resolving this entry */
+};
+/***/
+
 /****d* silcclient/SilcClientAPI/SilcKeyAgreementStatus
  *
  * NAME
@@ -262,7 +381,8 @@ typedef struct {
  *
  * NAME
  *
- *    typedef struct { ... } SilcChannelPrivateKey;
+ *    typedef struct SilcChannelPrivateKeyStruct { ... }
+ *                      *SilcChannelPrivateKey;
  *
  * DESCRIPTION
  *
@@ -271,13 +391,13 @@ typedef struct {
  *
  * SOURCE
  */
-typedef struct SilcChannelPrivateKeyStruct {
+struct SilcChannelPrivateKeyStruct {
   char *name;                        /* Application given name */
   SilcCipher cipher;                 /* The cipher and key */
   SilcHmac hmac;                     /* The HMAC and hmac key */
   unsigned char *key;                /* The key data */
   SilcUInt32 key_len;                /* The key length */
-} *SilcChannelPrivateKey;
+};
 /***/
 
 /****f* silcclient/SilcClientAPI/SilcAskPassphrase