uint32 key_len;
} *SilcServerChannelRekey;
+/* Generic rekey context for connections */
+typedef struct {
+ /* Current sending encryption key, provided for re-key. The `pfs'
+ is TRUE if the Perfect Forward Secrecy is performed in re-key. */
+ unsigned char *send_enc_key;
+ uint32 enc_key_len;
+ int ske_group;
+ bool pfs;
+ uint32 timeout;
+ void *context;
+} *SilcServerRekey;
+
/*
Generic ID list data structure.
SilcCipher send_key;
SilcCipher receive_key;
+ /* Re-key context */
+ SilcServerRekey rekey;
+
/* Hash selected in the SKE protocol, NULL if not needed at all */
SilcHash hash;
- /* HMAC and raw key data */
- SilcHmac hmac;
- unsigned char *hmac_key;
- uint32 hmac_key_len;
+ /* HMAC */
+ SilcHmac hmac_send;
+ SilcHmac hmac_receive;
- /* public key */
+ /* Public key */
SilcPublicKey public_key;
long last_receive; /* Time last received data */
long last_sent; /* Time last sent data */
- unsigned char registered; /* Boolean whether connection is registered */
+ bool registered; /* Boolean whether connection is registered */
} *SilcIDListData, SilcIDListDataStruct;
/*
Logical name of the server. There is no limit of the length of the
server name. This is usually the same name as defined in DNS.
- int server_type
+ uint8 server_type
Type of the server. SILC_SERVER or SILC_ROUTER are the possible
choices for this.
SilcIDListDataStruct data;
char *server_name;
- int server_type;
+ uint8 server_type;
SilcServerID *id;
char *server_info;
char *motd;
Generic data structure to hold data common to all ID entries.
+ unsigned char *nickname
+
+ The nickname of the client.
+
+ char *servername
+
+ The name of the server where the client is from. MAy be NULL.
+
char username
Client's usename. This is defined in the following manner:
nickname. Nickname is not relevant information that would need to be
saved as plain.
- int mode
+ uint32 mode
Client's mode. Client maybe for example server operator or
router operator (SILC operator).
not allow any command to be exeucted more than once in about
2 seconds. This is result of normal time().
- char fast_command
+ uint8 fast_command
Counter to check command bursts. By default, up to 5 commands
are allowed before limiting the execution. See command flags
SilcIDListDataStruct data;
unsigned char *nickname;
+ char *servername;
char *username;
char *userinfo;
SilcClientID *id;
- int mode;
+ uint32 mode;
long last_command;
- char fast_command;
+ uint8 fast_command;
/* Pointer to the router */
SilcServerEntry router;
ID of the channel. This includes all the information SILC will ever
need.
- int global_users
+ bool global_users
Boolean value to tell whether there are users outside this server
on this channel. This is set to TRUE if router sends message to
char *channel_name;
uint32 mode;
SilcChannelID *id;
- int global_users;
+ bool global_users;
char *topic;
char *cipher;
char *hmac_name;
SilcServerID *new_id);
int silc_idlist_del_server(SilcIDList id_list, SilcServerEntry entry);
SilcClientEntry
-silc_idlist_add_client(SilcIDList id_list, unsigned char *nickname,
- uint32 nickname_len, char *username,
+silc_idlist_add_client(SilcIDList id_list, char *nickname, char *username,
char *userinfo, SilcClientID *id,
SilcServerEntry router, void *connection);
int silc_idlist_del_client(SilcIDList id_list, SilcClientEntry entry);
SilcClientEntry **clients,
uint32 *clients_count);
SilcClientEntry
-silc_idlist_find_client_by_hash(SilcIDList id_list, char *nickname,
- SilcHash md5hash, SilcIDCacheEntry *ret_entry);
-SilcClientEntry
silc_idlist_find_client_by_id(SilcIDList id_list, SilcClientID *id,
SilcIDCacheEntry *ret_entry);
SilcClientEntry