void *timeout_queue;
} *SilcIDListPurge;
+/* Channel key re-key context. */
+typedef struct {
+ void *context;
+ SilcChannelEntry channel;
+ unsigned int key_len;
+} *SilcServerChannelRekey;
+
/*
Generic ID list data structure.
unsigned char *hmac_key;
unsigned int hmac_key_len;
- /* PKCS and public key */
- SilcPKCS pkcs;
+ /* public key */
SilcPublicKey public_key;
long last_receive; /* Time last received data */
Default hmac of the channel. If this is NULL then server picks
the cipher to be used. This can be set at SILC_COMMAND_JOIN.
+ SilcPublicKey founder_key
+ SilcAuthMethod founder_method
+ unsigned char *founder_passwd
+ unsigned int founder_passwd_len
+
+ If the SILC_CMODE_FOUNDER_AUTH has been set then these will include
+ the founder's public key, authentication method and the password
+ if the method is SILC_AUTH_PASSWORD. If it is SILC_AUTH_PUBLIC_KEY
+ then the `founder_passwd' is NULL.
+
SilcServerEntry router
This is a pointer to the server list. This is the router server
HMAC of the channel.
+ SilcServerChannelRekey rekey
+
+ Channel key re-key context.
+
*/
struct SilcChannelEntryStruct {
char *channel_name;
char *cipher;
char *hmac_name;
+ SilcPublicKey founder_key;
+ SilcAuthMethod founder_method;
+ unsigned char *founder_passwd;
+ unsigned int founder_passwd_len;
+
unsigned int user_limit;
unsigned char *passphrase;
char *invite_list;
unsigned int key_len;
unsigned char iv[SILC_CIPHER_MAX_IV_SIZE];
SilcHmac hmac;
+
+ SilcServerChannelRekey rekey;
};
/*
SilcServerEntry
silc_idlist_replace_server_id(SilcIDList id_list, SilcServerID *old_id,
SilcServerID *new_id);
-void silc_idlist_del_server(SilcIDList id_list, SilcServerEntry entry);
+int silc_idlist_del_server(SilcIDList id_list, SilcServerEntry entry);
SilcClientEntry
silc_idlist_add_client(SilcIDList id_list, unsigned char *nickname,
unsigned int nickname_len, char *username,
char *userinfo, SilcClientID *id,
SilcServerEntry router, void *connection);
int silc_idlist_del_client(SilcIDList id_list, SilcClientEntry entry);
-SilcClientEntry *
-silc_idlist_get_clients_by_nickname(SilcIDList id_list, char *nickname,
- char *server, unsigned int *clients_count);
-SilcClientEntry *
-silc_idlist_get_clients_by_hash(SilcIDList id_list, char *nickname,
- SilcHash md5hash,
- unsigned int *clients_count);
+int silc_idlist_get_clients_by_nickname(SilcIDList id_list, char *nickname,
+ char *server,
+ SilcClientEntry **clients,
+ unsigned int *clients_count);
+int silc_idlist_get_clients_by_hash(SilcIDList id_list, char *nickname,
+ SilcHash md5hash,
+ SilcClientEntry **clients,
+ unsigned int *clients_count);
SilcClientEntry
silc_idlist_find_client_by_hash(SilcIDList id_list, char *nickname,
SilcHash md5hash, SilcIDCacheEntry *ret_entry);