bool -> SilcBool.
[silc.git] / lib / silcclient / idlist.h
index 636af24c750cc13c32ce06d7257655b1a00a6938..7338486d6f12b06c4db84c7c30217f87e66e8198 100644 (file)
 #ifndef IDLIST_H
 #define IDLIST_H
 
-/* Client entry status */
-typedef enum {
-  SILC_CLIENT_STATUS_NONE       = 0x0000,
-  SILC_CLIENT_STATUS_RESOLVING  = 0x0001,
-} SilcClientStatus;
-
-/* 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) */
-  uint32 num;
-  uint32 mode;                 /* User mode in SILC */
-  SilcClientID *id;            /* The Client ID */
-  unsigned char *fingerprint;  /* Fingerprint of client's public key */
-  uint32 fingerprint_len;      /* Length of the fingerprint */
-  bool valid;                  /* FALSE if this entry is not valid */
-  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. */
-  uint32 key_len;
-  bool generated;              /* TRUE if library generated the key */
-  SilcClientKeyAgreement ke;   /* Current key agreement context or NULL */
-  SilcClientStatus status;     /* Status mask */
-  SilcHashTable channels;      /* All channels client has joined */
-};
-
-/* Client and its mode on a channel */
-struct SilcChannelUserStruct {
-  SilcClientEntry client;
-  uint32 mode;
-  SilcChannelEntry channel;
-};
-
-/* Structure to hold one channel private key. */
-struct SilcChannelPrivateKeyStruct {
-  SilcCipher cipher;                 /* The cipher and key */
-  SilcHmac hmac;                     /* The HMAC and hmac key */
-  unsigned char *key;                /* The key data */
-  uint32 key_len;                    /* The key length */
-};
-
-/* 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;
-  uint32 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 */
-  uint32 key_len;
-  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;
-};
-
 /* Prototypes. These are used only by the library. Application should not
    call these directly. */
 
 SilcClientEntry
 silc_client_add_client(SilcClient client, SilcClientConnection conn,
                       char *nickname, char *username, 
-                      char *userinfo, SilcClientID *id, uint32 mode);
+                      char *userinfo, SilcClientID *id, SilcUInt32 mode);
 void silc_client_update_client(SilcClient client,
                               SilcClientConnection conn,
                               SilcClientEntry client_entry,
                               const char *nickname,
                               const char *username,
                               const char *userinfo,
-                              uint32 mode);
+                              SilcUInt32 mode);
 void silc_client_del_client_entry(SilcClient client, 
                                  SilcClientConnection conn,
                                  SilcClientEntry client_entry);
@@ -126,13 +41,23 @@ SilcClientEntry silc_idlist_get_client(SilcClient client,
                                       SilcClientConnection conn,
                                       const char *nickname,
                                       const char *format,
-                                      bool query);
+                                      SilcBool query);
 SilcChannelEntry silc_client_add_channel(SilcClient client,
                                         SilcClientConnection conn,
                                         const char *channel_name,
-                                        uint32 mode, 
+                                        SilcUInt32 mode, 
                                         SilcChannelID *channel_id);
-bool silc_client_replace_channel_id(SilcClient client,
+SilcServerEntry silc_client_add_server(SilcClient client,
+                                      SilcClientConnection conn,
+                                      const char *server_name,
+                                      const char *server_info,
+                                      SilcServerID *server_id);
+void silc_client_update_server(SilcClient client,
+                              SilcClientConnection conn,
+                              SilcServerEntry server_entry,
+                              const char *server_name,
+                              const char *server_info);
+SilcBool silc_client_replace_channel_id(SilcClient client,
                                    SilcClientConnection conn,
                                    SilcChannelEntry channel,
                                    SilcChannelID *new_id);