+Thu Apr 5 17:42:30 EEST 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Added SilcServerRekey context into silcd/idlist.h.
+
+ * Added the PFS support as defined in the specification to the
+ SKE protocol. Affected files lib/silcske/*.c.
+
+ * Added `ske_group' field to the SilcServerRekey context to hold
+ the number of the SKE group that is used with PFS in re-key.
+ Affected file silcd/idlist.h.
+
+ * Added PFS re-key support to the server. Affected file is
+ silcd/protocol.c.
+
+ * Added silc_protocol_cancel to cancel execution of the next
+ state of the protocol. Affected file is
+ lib/silccore/silcprotocol.[ch].
+
+ * Added the re-key support with and without PFS to the client
+ library. Re-key is performed once in an hour, by default.
+
+ * Removed the `hmac_key' and `hmac_key_len' fields from the
+ SilcClientConnection structure; not needed. Affected file is
+ lib/silcclient/client.h.
+
+ * Updated TODO.
+
+Wed Apr 4 16:32:31 EEST 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Do not ask whether user wants to use the negotiated private key
+ for private messages, just use it. Affected file is
+ silc/local_command.c.
+
+ * Added `send_enc_key' and `enc_key_len' fields to the
+ SilcIDListData structure since they are needed in the re-key
+ phase. Affected file is silcd/idlist.[ch].
+
+ * Implemented the simple re-key protocol into the server.
+ Affected files silcd/server.c and silcd/protocol.[ch]. The
+ re-key will be performed once in an hour, by default.
+
+ Added new protocol type SILC_PROTOCOL_SERVER_REKEY.
+ Added silc_server_rekey, silc_server_rekey_callback and
+ silc_server_rekey_final.
+
+ * Removed Tunneled flag from the protocol. Updated the code
+ and the specifications.
+
+ * Adde `pfs' field to the SilcIDListData to indicate whether
+ the PFS is to be performed in the re-key. Affected file is
+ silcd/idlist.h.
+
+Tue Apr 3 21:52:42 EEST 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Defined uint8, int8, uint16, int16, uint32, int32, uint64 and
+ int64 of at least the xintXX size. If void * is less that 4
+ bytes uint32 * will be used. Defined bool as boolean.
+
+ * Changed _ALL_ unsigned long and unsigned int to uint32,
+ unsgined short to uint16 in the source tree.
+
+ * Fixed a fatal bug in silc_server_remove_clients_by_server. Do
+ not handle clients that has entry->data.registered == FALSE.
+ They are not in the network anymore. Affected file is
+ silcd/server.c.
+
+Tue Apr 3 16:39:19 EEST 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Implemented the sending of the SERVER_SIGNOFF notify in the
+ server. Affected file is silcd/server.c.
+
+ * Added silc_server_send_notify_args into silcd/packet_send.[ch].
+ Added also silc_notify_payload_encode_args into the
+ lib/silccore/silcnotify.[ch].
+
+ * Implemented ther SERVER_SIGNOFF notify handling in the server.
+ Affected file silcd/packet_receive.c.
+
+ * Implemented the SERVER_SIGNOFF notify handling in the client
+ library. Affected file lib/silcclient/client_notify.c. Also,
+ implemnted the printing of the SERVER_SIGNOFF info to the
+ application. Affected file silc/client_ops.c.
+
+ * The silc_idlist_del_server now returns TRUE or FALSE to indicate
+ if the deleting was successful. Affected file silcd/idlist.[ch].
+
+ * Added support for public key authentication in the connection
+ authentication protocol in the client library. Affected file
+ lib/silcclient/protocol.c.
+
+ * Changed the server's silc_idlist_get_clients_by_* interface
+ to support already allocated array so that new entries may be
+ added to pre-allocated array. Affected file silcd/idlist.[ch].
+ This fixes some bugs with WHOIS, WHOWAS and IDENTIFY commands
+ and command replies.
+
+ * All command reply functions in the server now calls the
+ pending command callback even if error occured. This way the
+ error will be delivered to the client as well. Affected files
+ silcd/command.c and silcd/command_reply.c.
+
+ * Fixed INFO command to return local server's info if no server
+ was provided. Affected file lib/silcclient/command.c.
+
+ * Removed RESTART command for good. Updated the code and the
+ protocol specs.
+
+ * Rewrote parts of the task system. It is a bit simpler now.
+ Removed unsued task priorities. The affected files are
+ lib/silcutil/silctask.[ch].
+
+Mon Apr 2 20:02:33 EEST 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Moved the USERS printing from the library to the application.
+ Affected files lib/silcclient/command.c and silc/client_ops.c.
+
+Mon Apr 2 13:13:23 EEST 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Updated TODO.
+
+ * Added channel key re-key support. The re-key is perfomed
+ only by the router and is done once in an hour. Added `rekey'
+ field to the SilcChannelEntry in the server. Affected files
+ silcd/server.c and silcd/idlist.h.
+
+ * Added silc_task_unregister_by_context into the file
+ lib/silcutil/silctask.[ch].
+
+Sun Apr 1 19:49:34 EEST 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Added SILC_UMODE_GONE mode to indicate when the client is not
+ present in the SILC network. Added also support to the local
+ command AWAY that will set this mode. Added support of showing
+ "xxx is gone" in WHOIS command. The USERS command shows the
+ gone status as well.
+
+ * Fixed setting server and router operator privileges in the
+ server's UMODE command. Affected file silcd/command.c.
+
+ * Merged the SKE KE1 and KE2 payloads into one payload. The
+ new KE payload is equivalent to the old KE2 payload.
+
+ Cleaned up the SKE Start Payload parsing. It now uses the
+ simple buffer unformatting to do the parsing. A lot faster
+ now.
+
+ Added new Mutual Authentication flag (SILC_SKE_SP_FLAG_MUTUAL)
+ to the SKE that is used to indicate whether both of the SKE
+ parties should perform authentication. By default only the
+ responder performs authentication. By setting this flag also
+ the initiator must do authentication. By default it is unset
+ since in normal SKE case, client to server connection, only
+ the responder should do authentication. When doing SKE between
+ two clients both should perform authentication. Updated the
+ code and the protocol specs.
+
+ * A little fix to IDENTIFY command in the server. Search the
+ client first by hash not nickname. Affected file is
+ silcd/command.c.
+
+ * Fixed the silc_client_close_connection to support closing
+ the client to client connections wihtout deleting too much
+ data. Affected file lib/silcclient/client.c.
+
+ * Fixed a fatal bug in server and client; if KE1 or KE2 packets
+ are received if protocol used to be active but is not anymore
+ the application would crash due to NULL pointer dereference.
+ Affected files silcd/server.c and lib/silcclient/client.c.
+
+ * Added `hash' field to the SilcClientConnection to include
+ the hash function negotiated in the SKE protocol.
+
+ * Added new channel mode SILC_CMODE_FOUNDER_AUTH that is used
+ to set the channel founder authentication data. A client can
+ claim the founder rights later by providing the authentication
+ data to the CUMODE command using SILC_CUMODE_FOUNDER mode.
+ This way the channel founder can regain the channel founder
+ privileges even it is left the channel. This works only on
+ local server and the client must be connected to the same
+ server to be able to regain the founder rights. Updated the
+ protocol specs accordingly.
+
+ Added support to the CMODE command in the client to set the
+ founder auth data. Read the README to see how to set it.
+
+ Added support to the CUMODE command to claim the founder
+ rights. Read the README to see how to do it.
+
+ Added support for the founder authentication to the Channel
+ Entry in the server. Affected file silcd/idlist.h.
+
+ Added support for the SILC_CMODE_FOUNDER_AUTH mode in the
+ server's CMODE command. Affected file silcd/command.c.
+
+ * Added the following new functions into lib/silccore/silcauth.[ch]:
+ silc_auth_get_method and silc_auth_get_data.
+
+ * The server now saves the remote hosts public key to the
+ SilcIDListData pointer. Affected file silcd/protocol.c.
+
+ * The normal server now does not remove the channel entry from
+ the cache if the founder authentication data is set. It used
+ to remove it if the founder was the last one on the channel on
+ the server and left the channel. The auth data is saved and
+ if the channel is re-joined later the old entry is used with
+ the old auth data. Affected files silcd/command_reply.c and
+ silcd/server.c.
+
+ * Removed the `pkcs' field from the SilcIDListData structure
+ in the server; it is not used. Affected file silcd/idlist.h.
+
+Sat Mar 31 15:38:36 EEST 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Fixed packet processing on slow links. Partial packets were
+ never re-processed because the incoming data buffer was cleared
+ by the application. Application must not directly clear the
+ sock->inbuf, the packet processing routines handle it. Fixed
+ this in client library and in server.
+
+Fri Mar 30 16:35:27 EEST 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Fixed the WHOIS and IDENTIFY send reply function to really
+ check whether to send list or just one entry. Affected file
+ silcd/command.c.
+
+ * Cleaned up the LEAVE command's channel key distribution. The
+ affected file silcd/command.c.
+
+ * Changed CMODE_CHANGE's <Client ID> to <ID Payload> as server
+ can enforce the channel mode as well. In that case the ID
+ includes the ID of the server. The code now enforces the
+ mode change if the router have different mode than the server.
+
+ * The notify client operation with CMODE_CHANGE notify can now
+ return NULL client_entry pointer if the CMODE was not changed
+ by client. Application must check for this.
+
+ * Added <Server ID> argument to INFO command to support server
+ info fetching by Server ID.
+
+ * Added silc_server_announce_get_channel_users to get assembled
+ packets of channel users of the specified channel. Affected
+ file silcd/server.[ch].
+
+ * Fixed bug in CHANNEL_CHANGE notify in the server. The new ID
+ was freed underneath the ID Cache.
+
+ * Re-announce clients when the server received CHANNEL_CHANGE
+ notify from the router. Affected file silcd/packet_send.c.
+
+Thu Mar 29 19:10:28 EEST 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Fixed a fatal bug when client does /join 1 2 3 4 5 6 the server
+ crashed since it did not handle the fact that there is no cipher
+ called "3" and didn't check the error condition. Now fixed.
+
+ * Added SILC_MESSAGE_FLAG_REQUEST message flag as generic request
+ flag. It can be used to send message requests.
+
+Thu Mar 29 12:26:25 EEST 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Implemented the RESTART command in the client.
+
+ * Added SILC_MESSAGE_FLAG_NOTICE message flag for informational
+ notice type messages. Added notice printing to the user
+ interface.
+
+ * The channel keys are not re-generated if the channel's mode
+ is PRIVKEY, ie private key on the channel exists. Affected
+ files silcd/server.c and silcd/command.c.
+
+ * Fixed a little bug in channel message delivery when channel
+ private keys are set in the server. Affected file is
+ silcd/packet_send.c.
+
+ * Changed the setting on channel->on_channel = TRUE from the
+ silc_client_save_channel_key to the JOIN command reply. The
+ key payload is not received if the private channel key is set.
+ Affected file lib/silcclient/command_reply.c and the
+ lib/silcclient/client_channel.c.
+
+ * When the CMODE_CHANGE notify is sent and the channel private
+ key mode is removed the channel key must be re-generated in
+ other cells as well. Added this support for the router in the
+ silcd/packet_receive.c.
+
+ * Added new local command NOTICE to send notice message on
+ channel. Affected file silc/local_command.[ch].
+
+Wed Mar 28 23:55:54 EEST 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Added new local command ME to the client. It is used to send
+ message to a channel with SILC_MESSAGE_FLAG_ACTION to indicate
+ some action. Affected file silc/local_command.[ch].
+
+ * Changed channel_message and private_message client operations
+ to deliver the message flags to the application. Added also
+ the `flags' arguments to the silc_client_send_channel_message
+ and silc_client_send_private_message functions. Affected file
+ silcapi.h.
+
+Wed Mar 28 20:50:47 EEST 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Redefined the Private Message Payload to support private message
+ keys and to support the new private message flags. Updated
+ the protocol specs. Flags makes it possible to have for example
+ CTCP style messages.
+
+ * Added new type SilcPrivateMessagePayload and defined an API
+ for it in the lib/silcclient/silcprivate.[ch].
+
+ * Tested private message private keys successfully. Tested the
+ private message key set, unset and list commands with the new
+ KEY command.
+
+ * Redefined the Channel Message Payload to include the channel
+ message flags (equal with private message flags) to support
+ for example CTCP style messages.
+
+ * Defined some of the message (for channel and private message)
+ flags. Updated the protocol specs and added the flags to the
+ lib/silccore/silcchannel.h. The type is SilcMessageFlags.
+
+Wed Mar 28 15:52:36 EEST 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Added SilcKeyAgreementStatus type to the key agreement routines
+ to indicate the current status and error if one occured.
+ The status types are defined in the lib/silcclient/silcapi.h.
+
+ * Added new local command KEY that is used to set and unset private
+ keys for channels, set and unset private keys for private messages
+ with remote clients and to send key agreement requests and
+ negotiate the key agreement protocol with remote client. The
+ key agreement is supported only to negotiate private message keys,
+ it currently cannot be used to negotiate private keys for channels,
+ as it is not convenient for that purpose.
+
+ * Fixed a minor pending callback setting bug in the function
+ silc_client_get_client_by_id_resolve, now the function works.
+ Affected file lib/silcclient/idlist.c.
+
+ * Added function silc_net_get_local_port to get local bound
+ port by socket. Added to lib/silcutil/silcnet.[ch].
+
+ * Added `sockets' and `sockets_count' fields to the SilcClient
+ object. They hold the sockets of the listenning sockets in
+ the client. Listenning sockets may be for example the key
+ agreement server. Affected file lib/silcclient/client.[ch].
+ Added functions the silc_client_add_socket and the
+ silc_client_del_socket. They are exported to the application
+ as well.
+
+ * Added ~./silc/clientkeys to support other client's public keys.
+
+ * Renamed verify_server_key client operation to verify_public_key
+ and added one argument to indicate the type of the connection
+ (server, client etc.).
+
+Tue Mar 27 22:22:38 EEST 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Added silc_server_connection_auth_request to handle the
+ incoming CONNECTION_AUTH_REQUEST packet. Affected file is
+ silcd/packet_receive.[ch].
+
+ * Added silc_server_send_connection_auth_request into the
+ silcd/packet_send.c to send the connection auth request packet.
+
+ * Cleaned up the silcd/protocol.c a bit and fixed some memory
+ leaks.
+
+ * Fixed the public key authentication in responder side in the
+ server. The `auth_data' pointer includes the SilcPublicKey
+ not the path to the public key. Affected file silcd/protocol.c.
+
+ * Implemented the public key authentication in the initiator side
+ in the server. Affected file silcd/protocol.c.
+
+ * Removed the [RedirectClient] config section from the server
+ configuration. Is not needed and I don't want to implement it.
+
+Tue Mar 27 12:49:56 EEST 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Cleaned up the CMODE command in the server. It now works
+ correctly and supports all the modes defined in the protocol.
+ Affected file is silcd/command.c.
+
+ * Added `hmac_name' field to the SilcChannelEntry in the server
+ to hold the default HMAC of the channel. It can be set when
+ creating the channel (with JOIN command). Affected files
+ silcd/idlist.[ch].
+
+ * Added <cipher> and <hmac> argument to the CMODE_CHANGE notify
+ type to indicate the change of the current cipher and hmac
+ on the channel. Client can safely ignore the <cipher> argument
+ (if it chooses to do so) since the CHANNEL_KEY packet will
+ force the channel key change anyway. The <hmac> argument is
+ important since the client is responsible of setting the new
+ HMAC and the hmac key into use.
+
+ * Fixed the CMODE command in the client library as well.
+
+ * Tested CMODE command in router environment successfully.
+
+Mon Mar 26 14:39:48 EEST 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Show the version of the remote client (or server) when connecting
+ to the server. It is logged to the log file. Affected file
+ is silcd/protocol.c.
+
+ * Fixed the KILLED notify handling in the client library. The
+ client must be removed from all channels when receiving the
+ KILLED notify.
+
+ Also, do not remove the client entry when giving the KILL
+ command but when the KILLED notify is received.
+
+ * Removed silc_idlist_find_client_by_nickname from the server.
+ Not needed anymore. Affected files silcd/idlist.[ch].
+
+ * Implemented the CHANNEL_CHANGE notify type handling to the
+ server. Affected file silcd/server.c.
+
+ * Updated TODO.
+
+Mon Mar 26 12:11:14 EEST 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Added silc_server_send_notify_invite to send the INVITE
+ notify between routers.
+
+ * Implemented the INVITE command correctly to the server.
+
+ * Implemented the INVITE notify type handling in the server.
+
+ * Implemented the INVITE command to the client library and on the
+ user interface.
+
+Sun Mar 25 20:27:09 EEST 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Added function silc_server_get_client_resolve to find the
+ client entry by ID from all ID lists and then resolve it
+ (using WHOIS) if it cannot be found. Affected file is
+ silcd/server.[ch].
+
+Sun Mar 25 13:52:51 EEST 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Implemented the BAN command to the client library.
+
+ * The JOIN command in the server now checks the invite list
+ and the ban list.
+
+ * Changed the silc_command_reply_payload_encode_va and the
+ silc_command_payload_encode_va to support that if argument is
+ NULL it ignores and checks the next argument. Affected file
+ lib/silccore/silccommand.c.
+
+ * Added silc_server_send_notify_ban to send the BAN notify
+ type between routers.
+
+ * Chaned the silc_notify_payload_encode to support that if
+ argument is NULL it ignores and checks the next argument.
+ Affected file lib/silccore/silcnotify.c.
+
+ * Tested ban lists in router environment successfully.
+
+Sat Mar 24 14:47:25 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Implemented BAN command to the server, in silcd/command.[ch].
+
+ * Removed the BAN and INVITE_LIST modes from the CMODE command
+ in the server code.
+
+ * Added function silc_string_match to regex match two strings.
+ Affected files lib/silcutil/silcutil.[ch].
+
+Fri Mar 23 22:02:40 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Redefined parts of the SilcChannelEntry in the server to support
+ the new ban and invite lists.
+
+Fri Mar 23 16:25:11 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Redefined the INVITE command. The same command can be used to
+ invite individuals to the channel but also to manage the invite
+ list of the channel (to add to and remove from the invite list).
+ Updated the protocol specs.
+
+ * Added new command SILC_COMMAND_BAN that can be used to manage
+ the ban list of the channel. Updated the protocol specs.
+
+ * Removed the channel modes: the SILC_CMODE_BAN and the
+ SILC_CMODE_INVITE_LIST as they were a bit kludge to be included
+ in the CMODE command. The equivalent features are now available
+ using INVITE and BAN commands. Updated the protocol specs.
+
+ * Added new SILC_NOTIFY_TYPE_BAN notify type to notify routers
+ in the network about change in the current ban list. The notify
+ type is not used by the client.
+
+ * Redefined parts of the SILC_NOTIFY_TYPE_INVITE command to
+ support the invite lists.
+
+Thu Mar 22 22:52:23 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Added new function silc_string_regexify that converts string
+ including wildcard characters into regex string that can
+ be used by the GNU regex library. Added into the file
+ lib/silcutil/silcutil.[ch].
+
+ Added silc_string_regex_combine to combine to regex strings
+ into one so that they can be used as one regex string by
+ the GNU regex library. Added into the file
+ lib/silcutil/silcutil.[ch].
+
+ Added silc_string_regex_match to match two strings. It returns
+ TRUE if the strings match. Added into lib/silcutil/silcutil.[ch].
+
+Thu Mar 22 15:29:42 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Imported GNU regex to the soruce tree into lib/contrib.
+ Fixed some compiler warning from the regex.c.
+
+Wed Mar 21 15:27:58 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Fixed MOTD command in the server to work in router environment.
+
+ * Fixed the MOTD command in the client library to support
+ the server argument in the command.
+
+ * Added `nickname_len' argument to the silc_idlist_add_client
+ in the server, as the `nickname' argument may be binary data
+ (it may be hash).
+
+ * Added silc_idlist_get_channels to return all channels from
+ the ID list.
+
+ * Implemented LIST command to the server. Affected file is
+ silcd/command.c.
+
+ * Implemented the LIST command to the client library and on the
+ user interface.
+
+ * Added [<user count>] argument to the LIST command reply.
+ With private channels the user count is not shown.
+
+ * Updated TODO and README.
+
+Tue Mar 20 21:05:57 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * The client entry's data.registered must be TRUE even with
+ global client entry on global client list. The data.registered
+ is used to check whether the client is anymore in the network,
+ for example with WHOWAS command so it must be valid.
+
+ * Fixed the WHOWAS command in the server. It now actually works
+ in router environment. Added function into silcd/command_reply.c
+ silc_server_command_reply_whowas_save.
+
+ * Added silc_idlist_purge function to the silcd/idlist.c
+ to periodically purge the ID Cache.
+
+ * Fixed INFO command in the server. It works now in router
+ environment. Added <server name> argument to the INFO command
+ reply. Updated the protocol specs.
+
+ * Fixed minor bug in silc_idcache_purge to not purge if the
+ expire value is zero.
+
+ * Fixed various bugs in WHOIS and IDENTIFY command handling as
+ they were buggy because of the WHOWAS information.
+
+ * Fixed local command MSG to handle the async resolving of
+ the remote client properly. It used to fail the first MSG.
+ Affected file silc/local_command.c.
+
+ * Added `data_len' field to SilcIDCache context.
+
+Tue Mar 20 16:29:00 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Update TODO. Todo in commands in the server.
+
+Tue Mar 20 15:45:14 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Added new notify type SILC_NOTIFY_TYPE_UMODE_CHANGE that is
+ used by routers as broadcast packet to inform other routers
+ about the changed user mode.
+
+ Implemented the notify handling in the server. Affected file is
+ silcd/packet_receive.c. Added the function
+ silc_server_send_notify_umode to the silcd/packet_send.[ch].
+
+ * Added new generic Channel Payload and deprecated the New Channel
+ Payload. The New Channel Payload is now the generic Channel
+ Payload.
+
+ * Added new argument `mode' to the silc_server_send_new_channel
+ as it is required in the Channel Payload now.
+
+ * Renamed the SilcChannelPayload to SilcChannelMessagePayload
+ and created a new and real SilChannelPayload to represent the
+ new generic Channel Payload. Implemented the encode/decode
+ for Channel Payload. Affected file lib/silccore/silcchannel.[ch].
+
+ * Added silc_server_get_client_channel_list to return the list
+ of channels the client has joined for WHOIS command reply.
+ Affected file silcd/server.[ch].
+
+ * Implemented the channel list sending in the WHOIS command reply
+ in server and in the client.
+
+ Implemented the channel list displaying on the user interface
+ as well. Affected file silc/client_ops.c.
+
+ * Added silc_channel_payload_parse_list to parse list of Channel
+ Payloads. It returns SilcDList list of SilcChannelPayloads.
+ Client for example can use this function to parse the list of
+ channels it receives in the WHOIS command reply. The caller
+ must free the list by calling silc_channel_payload_list_free.
+ Affected files lib/silccore/silcchannel.[ch].
+
+Mon Mar 19 21:39:15 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Added one new argument <user mode> to the WHOIS command reply
+ to return the mode of the user in SILC. Updated the protocol
+ specs.
+
+ Implemented it to the server and client.
+
+Mon Mar 19 18:43:06 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Fixed the mode printing on the user interface on joining.
+ Affected file silc/client_ops.c.
+
+ * Implemented the UMODE command and user modes in general to the
+ client library and to the user interface.
+
+ * Implemented the UMODE command to the server.
+
+ * The server now sends UNKNOWN_COMMAND error status if client sends
+ unknown command. Affected file silcd/command.c.
+
+ * All server commands now handle the command identifier the right
+ way when sending the command reply to the client. The client can
+ use to identify the command replies with the identifier.
+
+Mon Mar 19 16:13:07 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Added silc_server_get_client_route to resolve the route to
+ the client indicated by the client ID. Affected file is
+ silcd/server.[ch].
+
+ * Added silc_server_relay_packet as general function to relay
+ packet to arbitrary destination. This deprecates functions
+ like _send_private_message_key, _relay_notify etc. Affected
+ file is silcd/packet_send.[ch].
+
+ Removed silc_server_send_key_agreement,
+ silc_server_send_private_message_key and
+ silc_server_packet_relay_notify functions from the file
+ silcd/packet_send.[ch].
+
+ * Updated TODO.
+
+ * Implemented the SILC_NOTIFY_TYPE_KILLED notify handling in the
+ server. Affected file silcd/packet_receive.[ch].
+
+ * Implemented the KILL command to the client. Implemented the
+ SILC_NOTIFY_TYPE_KILLED notify handling in the client library.
+ Affected files lib/silcclient/command[_reply].c and
+ lib/silcclient/client_notify.c. Implemented the KILL notify
+ printing in the user inteface.
+
+ * Fixed a lot silc_parse_nick memory leaks from the client
+ library in the file lib/silcclient/command.c.
+
+ * Changed the silc_server_send_notify_on_channels's `sender'
+ argument from SilcSocketConnection to SilcClientEntry to
+ check the sender as entry and not as connection object and not
+ to send to the client provided as argument. The affected file
+ is silcd/packet_send.[ch].
+
+ * The notify packets that are destined directly to the client used
+ to not to be processed by the server. Now changed that and the
+ server processes all notify packets. After relaying the packet
+ to the client the notify packet is processed in the server.
+
+ * The silc_server_free_client_data now checks whether there is
+ pending outgoing traffic for the client and purges the data to
+ the network before removing the client entry.
+
+Sun Mar 18 21:02:47 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Added SILC_NOTIFY_TYPE_KILLED notify type. It is sent when
+ an client is killed from the SILC Network. Updated the protocol
+ specs accordingly.
+
+ Added new function silc_server_send_notify_killed to the
+ silcd/packet_send.[ch].
+
+ * Added function silc_server_packet_relay_notify to relay notify
+ packets that are destined directly to a client. In this case
+ the server does not process the notify packets but merely relays
+ it to the client. Affected file silcd/packet_send.[ch].
+
+ Added also silc_server_packet_process_relay_notify to check
+ whereto relay the notify. Affected file is
+ silcd/packet_receive.[ch].
+
+ * Implemented the KILL command to the server.
+
+ * Updated TODO.
+
+ * Added the backup schema desgined last fall to the protocol
+ specs for everyone to see. The specification is in the
+ *-spec-xx.txt draft and the packet type definitions for the
+ backup routers is in *-pp-xx.txt draft. Thusly, added also
+ new packet type SILC_PACKET_CELL_ROUTERS.
+
+ * A big security problem in the implementation discovered. The
+ signoff of an client did not cause new channel key generation
+ which it of course should've done. The channel keys must be
+ always re-generated when client leaves (or signoffs) the channel.
+ The silc_server_remove_from_channels funtion now handles
+ the channel key re-generation.
+
+ * Added `sender' argument to the silc_server_send_notify_on_channels
+ to not to send the client provided as argument. Affected file
+ silcd/packet_send.[ch].
+
+Fri Mar 16 15:52:49 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Implemented OPER and SILCOPER commands into the server and
+ the client library.
+
+ * Added silc_auth_verify and silc_auth_verify_data to verify
+ the authentication directly from the authentication payload.
+ It supports verifying both passphrase and public key based
+ authentication. Affected file lib/silccore/silcauth.[ch].
+
+ * Added `hash' field to the SilcIDListData structure. It is the
+ hash negotiated in the SKE protocol. Affected file is
+ silcd/idlist.[ch].
+
+ * Slight redesigning of the SilcAuthPayload handling routines.
+ Do not send SilcPKCS but SilcPublicKey as argument.
+
+ * Implemented the public key authentication support to the
+ serverconfig. The public key is loaded from the provided path
+ and saved as authentication data to void * pointer. Thus,
+ changed the unsigned char *auth_data to void *auth_data;
+
+ * Fixed SHUTDOWN command to send the reply before the server
+ is shutdown. :) Affected file silcd/command.c.
+
+ * Fixed fatal bug in CONNECT command. The hostname was invalid
+ memory and server crashed. Affected file silcd/command.c.
+
+ * Fixed fatal bug in CLOSE command. The server_entry became
+ invalid but was referenced later in the command. Affected file
+ silcd/command.c.
+
+Thu Mar 15 12:46:58 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Fixed fatal bug in failure packet handling. Server ignored
+ the failure and thus crashed when it came.
+
+ * Updated TODO.
+
+Wed Mar 14 20:37:35 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Added new SILC_CF_LAG_STRICT command flag that strictly forces
+ that the command may be executed only once in (about) 2 seconds.
+ The old SILC_CF_LAG flag is same but allows command bursts up
+ to five before limiting.
+
+ Added the support for CF_LAG and CF_LAG_STRICT flags to the
+ server code. Various commands now includes the CF_LAG_STRICT
+ flag to disallow any kind of miss-use of the command.
+
+ * Fixed the silc_buffer_unformat to not to allocate any data
+ if the length of the data is zero. It used to allocate the
+ length + 1. Affected file lib/silcutil/silcbuffmt.c.
+
+Wed Mar 14 16:10:30 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Changed the format of AdminConnection configuration section
+ in the server. Added username of the admin to the format.
+ Affected files silcd/serverconfig.[ch].
+
+ Added silc_server_config_find_admin into silcd/serverconfig.[ch]
+ to return admin configuration data by host, username and/or
+ nickname.
+
+Wed Mar 14 13:18:16 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Implemented WHOWAS command to the server. Added the functions:
+
+ silc_server_command_whowas_parse,
+ silc_server_command_whowas_send_reply,
+ silc_server_command_whowas_from_client and
+ silc_server_command_whowas_from_server
+
+ * Added <Client ID> argument to the WHOWAS command reply. Updated
+ the protocol specs accordingly.
+
+ * Implemented WHOWAS command and command_reply to the client
+ library.
+
+ Implemented the WHOWAS printing on the user interface.
+
+Tue Mar 13 22:17:34 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Added new argument to the WHOWAS command reply, the real name.
+ It is an optional argument. Updated the protocol specs.
+
+ * Added SilcIDCacheDestructor callback that is registered when
+ the SilcIDCache is allocated. The callback is called when
+ an cache entry in the ID Cache expires, or is purged from the
+ cache. Added into lib/silccore/idcache.[ch].
+
+ Added silc_idlist_client_destructor to the silcd/idlist.[ch]
+ to destruct the client entries when the cache entry expires.
+ Other ID Cache's in server and in the client library ignores
+ the destructor.
+
+ * If the ID Cache entry's `expire' field is zero then the entry
+ never expires. Added boolean `expire' argument to the
+ silc_idcache_add function in the lib/silccore/idcache.[ch].
+ If it is TRUE the default expiry value is used.
+
+ * Added silc_server_free_client_data_timeout that is registered
+ when client disconnects. By default for 5 minutes we preserve
+ the client entry for history - for WHOWAS command.
+
+Tue Mar 13 13:26:18 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Added support to the server to enforce that commands are not
+ executed more than once in 2 seconds. If server receives
+ commands from client more frequently, timeout is registered
+ to process the commands. Affected file silcd/command.c.
+ Added new function silc_server_command_process_timeout.
+
+ * Changed NICK_NOTIFY handling in client library to check that
+ if the client's nickname was changed, so there is no need to
+ resolve anything from the server.
+
+ * Removed error printing from the WHOIS and IDENTIFY commands.
+ If error occurs then it is ignored silently in the client library.
+ The application, however, may map the received error to
+ human readable error string. The application currently maps
+ the NO_SUCH_NICKNAME error to string.
+
+ * Made the command status message public to the application. Moved
+ them from lib/silcclient/command_reply.c to
+ lib/silcclient/command_reply.h. The application can map the
+ received command status to the string with the
+ silc_client_command_status_message function.
+
+ * Added check to the server to check that client's ID is same
+ as the Source ID in the packet the client sent. They must
+ match.
+
+Tue Mar 13 12:49:21 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Added dist-bzip hook to the Makefile.am to make bzip2
+ compressed distributions.
+
+Mon Mar 12 18:43:38 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Server now enforces the maximum length for the nickname and
+ the channel as protocol specification dictates. 128 bytes for
+ nickname and 256 bytes for channel name.
+
+ * Moved the WHOIS printing to the application. The client libary
+ does not print out the WHOIS information anymore, the application
+ must do it. Renamed silc_client_command_reply_whois_print to
+ the silc_client_command_reply_whois_save.
+
+ The client's idle time is also sent to the application now, and
+ the idle is shown on screen.
+
+ * Added silc_client_command_reply_identify_save to save the
+ received IDENTIFY entries.
+
+ * Do not check for channel private keys in message sending and
+ reception if the channel does not have the PRIVKEY mode set.
+ Affected file lib/silclient/client_channel.c.
+
+Sun Mar 11 20:25:06 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Fixed a minor bug if WHOIS and IDENTIFY command parsing that
+ just surfaced after chaning the JOIN procedure.
+
+Sun Mar 11 14:59:05 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Added silc_client_get_clients_by_list to get client entries
+ from Client ID list, that is returned for example by JOIN
+ and USERS command replies. The application should use this
+ function for example when JOIN command reply is received to
+ resolve the clients already on the channel (library does not
+ do that anymore as USERS command reply is not used in the JOIN
+ procedure anymore). Affected files lib/silcclient/silcapi.h and
+ lib/silcclient/idlist.c.
+
+ * JOIN command reply and USERS command reply returns now SilcBuffer
+ pointers instead of unsigned char pointers when returning
+ the client list and mode list.
+
+ * Added <Client ID> argument to the JOIN command reply, mainly
+ for the server to identify for which client the command was
+ originally sent. Updated protocol specs accordingly.
+
+ * Added SilcDlist private_key pointer to the SilcChannelEntry
+ in the client to support the channel private keys. Affected
+ file is lib/silcclient/idlist.h.
+
+ * Added SilcChannelPrivateKey argument to the function
+ silc_client_send_channel_message so that application can choose
+ to use specific private ke if it wants to. If it is not provided,
+ the normal channel key is used, unless private keys are set.
+ In this case the first (key that was added first) is used
+ as the encryption key.
+
+ * Implemented the support for channel private key handling.
+ Implemented the following functions:
+
+ silc_client_add_channel_private_key,
+ silc_client_del_channel_private_keys,
+ silc_client_del_channel_private_key,
+ silc_client_list_channel_private_keys and
+ silc_client_free_channel_private_keys
+
+ Affected file lib/silcclient/client_channel.c.
+
+ * Added the support for the private keys in the channel message
+ sending and encryption and in the message reception and
+ decryption. Affected funtions are
+ silc_client_send_channel_message and silc_client_channel_message.
+
+Sat Mar 10 21:36:22 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Added SKE's key verify callback to the client library's
+ KE protocol context. Affected files lib/silcclient/protocol.[ch].
+
+ * Removed the statement that server (or router) must send USERS
+ command reply when joining to the channel so that the client
+ knows who are on the channel. Instead, the client list and
+ client's mode list is now sent in the JOIN command reply to the
+ client who joined channel. This is better solution.
+
+ * Added function silc_server_get_users_on_channel and function
+ silc_server_save_users_on_channel to the silcd/server.[ch].
+
+ * Removed function silc_server_command_send_users from the
+ silcd/command.c.
+
+ * Do not show topic on the client library anymore. The topic is
+ sent in the command reply notify to the application and the
+ application must show the topic now.
+
+Sat Mar 10 00:07:37 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Added client searching by nickname hash into the IDENTIFY and
+ WHOIS commands in the server as they were clearly missing from
+ them. Affected file is silcd/command.c.
+
+ * Fixed a bug in private message receiving in the client library.
+ The remote ID was freed and it wasn't supposed, now it is
+ duplicated.
+
+Fri Mar 9 12:40:42 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Minor fix to the channel payload; allocate the data area, as it
+ needs to be of specific length.
+
+ * If the key agreement port is zero then the operating
+ system will define the bound port. Affected files are
+ lib/silcclient/silcapi.h and lib/silcclient/client_keyagr.c.
+
+ * Added new function silc_channel_payload_decrypt into the file
+ lib/silccore/silcchannel.[ch].
+
+ * Moved the channel message etc, check from silc_packet_decrypt
+ to applications. The library calls now a generic
+ SilcPacketCheckDecrypt callback which is to return TRUE or FALSE
+ when the packet is either normal or special. This was done to
+ allow more wide range of checking that was not allowed when
+ the code was in library. Now applications can do virtually any
+ checks to the packet and return to the library the decision how
+ the packet should be processed. Affected files are
+ lib/silccore/silcpacket.[ch].
+
+ Added silc_server_packet_decrypt_check to the server and
+ silc_client_packet_decrypt_check to the client library.
+
+ * Added silc_server_packet_send_srcdest into silcd/packet_send.[ch]
+ to send with specified source and destination information.
+
+ * Channel message delivery between routers was broken after the
+ channel key distribution was fixed earlier. The channel key
+ was used be to distributed to other routers as well which is not
+ allowed by the protocol. Now this is fixed and channel keys
+ really are cell specific and the channel message delivery between
+ routers comply with the protocol specification.
+
+ * Fixed various commands in server to check also the global list
+ for the channel entry and not just the local list. The affected
+ file silcd/command.c.
+
+Thu Mar 8 21:39:03 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Added assert()s to buffer formatting and unformatting routines
+ to assert (if --enable-debug) when error occurs. Affected
+ file: lib/silcutil/silcbuffmt.c.
+
+ * Changed to auto-reconnect to check whether the remote host is
+ router and register the re-connect timeout if it is. It used
+ to check that whether we are normal server, but router must do
+ auto-reconnect with another router as well. Affected file
+ silcd/server.c.
+
+ * Removed the [<key len>] option from CMODE command as the cipher
+ name decides the key length, nowadays. See the defined ciphers
+ from the protocol specification.
+
+ * Added [<hmac>] option to the CMODE command to define the HMAC
+ for the channel. Added SILC_CMODE_HMAC channel mode.
+
+ * Added [<hmac>] option for the JOIN command so that user can
+ select which HMAC is used to compute the MACs of the channel
+ messages.
+
+ * Added Hmac field to the Channel Message Payload. The integrity
+ of plaintext channel messages are now protected by computing
+ MAC of the message and attaching the MAC to the payload. The
+ MAC is encrypted. Now, it is clear that this causes some
+ overhead to the size of the packet but rationale for this is that
+ now the receiver can verify whether the channel message decrypted
+ correctly and also when private keys are set for the channel the
+ receiver can decrypt the packet with several keys and check from
+ the MAC which key decrypted the message correctly.
+
+ * Added silc_cipher_encrypt and silc_cipher_decrypt into the
+ lib/silccrypt/silccipher.[ch].
+
+ * Added silc_hash_len to return the digest length into the
+ lib/silcrypt/silchash.[ch].
+
+ * Rewrote parts of Silc Channel Payload interface in the
+ lib/silccore/silcchannel.[ch]. The encode function now also
+ encrypts the packet and parse function decrypts it.
+
+Wed Mar 7 20:58:50 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Fixed a minor formatting bug in the SKE's key material processing.
+ It actually might have processed the keys wrong way resulting
+ into wrong keys.
+
+ * Redefined the mandatory HMAC algorithms and added new algorithms.
+ Added hmac-sha1-96 and hmac-md5-96 which are normal hmac-sha1
+ and hmac-md5 truncated to 96 bits. The mandatory is now
+ hmac-sha1-96. Rest are optional (including the one that used
+ to be mandatory). Rationale for this is that the truncated HMAC
+ length is sufficient from security point of view and can actually
+ make the attack against the HMAC harder. Also, the truncated
+ HMAC causes less overhead to the packets. See the RFC2104 for
+ more information.
+
+ * Added new [hmac] configuration section. The SKE used to use
+ the hash names (md5 and sha1) in the SKE proposal as HMCAS which
+ is of course wrong. The official names that must be proposed in
+ the SKE are the ones defined in the protocol specification
+ (hmac-sha1-96 for example). The user can configure any hmac
+ using any hash function configured in the [hash] section. At
+ least, the mandatory must be configured.
+
+ Rewrote the HMAC interface in lib/silccrypt/silchmac.[ch].
+
+ * Added HMAC list to the SKE proposal list. It has now both
+ hash algorithm list and HMAC list. This makes the protocol
+ incompatible with previous versions. The SKE now seems to work
+ the way it is supposed to work, for the first time actually.
+
+ * Defined plain Hash algorithms to the protocol specification.
+ Added sha1 and md5.
+
+Tue Mar 6 15:36:11 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Implemented support for key agreement packets into the server.
+ Added functions silc_server_key_agreement and
+ silc_server_send_key_agreement. Other than these functions,
+ server has nothing to do with this packet.
+
+ * Added support for private message key packets into the server.
+ Added functions silc_server_private_message_key and
+ silc_server_send_private_message_key.
+
+ * Updated TODO.
+
+ * Changed the silc_[client|server]_protocol_ke_set_keys to be
+ called in the protocol's final callback instead in the END
+ protocol state. This makes a little more sense and in the same
+ time in client we can use the same protocol routines for normal
+ key exchange and to key agreement packet handling as well.
+
+ * Added to both client's and server's KE protocol context the
+ SilcSKEKeyMaterial pointer to save the key material. We will
+ bring the key material to the protocol's final callback by doing
+ this. The final callback must free the key material.
+
+ * Added SKE's packet_send callback into client's KE protocol
+ context so that the caller can choose what packet sending function
+ is used. This way we can use different packet sending when
+ doing normal SKE when doing key agreement packet handling (in
+ the key agreement packet handling we do not want to encrypt
+ the packets).
+
+ * Implemented the responder side of the key agreement routines
+ in the client. The client can now bind to specified port and
+ accept incoming key negotiation. The key material is passed
+ to the application after the protocol is over.
+
+ * Implemented the processing of incoming Key Agreement packet
+ in the client. Added function silc_client_key_agreement to
+ process the packet.
+
+ * Implemented the intiator side of the key agreement routines
+ in the client. The client can now initiate key agreement with
+ another remote client. The key material is passed to the
+ application after the protocol is over.
+
+ * Created client_keyagr.c to include all the key agreement
+ routines.
+
+ * Added macro SILC_TASK_CALLBACK_GLOBAL which is equal to the
+ SILC_TASK_CALLBACK except that it is not static.
+
+ * Created client_notify.c and moved the Notify packet handling
+ from the client.[ch] into that file.
+
+ * Created client_prvmsg.c and moved all private message and
+ private message key routines from the client.[ch] into that file.
+
+ * Create client_channel.c and moved all channel message and
+ channel private key routines from the client.[ch] into that file.
+
+ * Changed silc_client_get_client_by_id_resolve to resolve with
+ WHOIS command instead of IDENTIFY command, in the file
+ lib/silclient/idlist.c.
+
+Mon Mar 5 18:39:49 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Implemented the SKE's responder side to the Client library.
+
+ * When FAILURE is received to the protocol do not trust it
+ blindly. Register a timeout to wait whether the remote closes
+ the connection as it should do it, only after that process the
+ actual failure. This was changed to both client and server.
+
+ * Added client_internal.h to include some of the structures
+ there instead of client.h in lib/silcclient/.
+
+ * Added function silc_task_unregister_by_callback to unregister
+ timeouts by the callback function.
+
+Sat Mar 3 19:15:43 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Some "Incomplete WHOIS info" errors has been appearing on the
+ log files. Took away the entry->userinfo check from WHOIS
+ reply sending. The entry->userinfo is now " " if client did not
+ provide one. I thought this was fixed earlier but something
+ is wrong still. Let's see if the error still appears.
+
+Wed Feb 28 20:56:29 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Fixed a minor bug in the login when the channel key is
+ re-generated in the server. It used to generate the key in
+ wrong order and thus caused problems in the channel traffic.
+
+ * Fixed a minor bug in channel key distsribution after
+ KICK command. The key was not sent to the router even though
+ it should've been.
+
+Tue Feb 27 20:24:25 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Added silc_ske_process_key_material_data as generic routine
+ to process any key material as the SILC protocol dictates. The
+ function is used by the actual SKE library but can be used by
+ applications as well. This relates to the private message keys
+ and the channel private keys since they must be processed the
+ same way the normal SILC session keys. The protocol dictates
+ this. Affected files: lib/silcske/silcske.[ch].
+
+ Added also silc_ske_free_key_material to free the
+ SilcSKEKeyMaterial structure.
+
+ * Defined silc_cipher_set_key function to set the key for
+ cipher without using the object's method function. The affected
+ files: lib/silccrypt/silccipher.[ch].
+
+ * Implemented silc silc_client_add_private_message_key,
+ silc_client_add_private_message_key_ske,
+ silc_client_del_private_message_key,
+ silc_client_list_private_message_keys and
+ silc_client_free_private_message_keys functions in the
+ client library.
+
+ Added functions silc_client_send_private_message_key to send
+ the Private Message Key payload and silc_client_private_message_key
+ to handle incoming Private Message Key payload.
+
+ * Added Cipher field to the Private Message Key payload to set
+ the cipher to be used. If ignored, the default cipher defined
+ in the SILC protocol (aes-256-cbc) is used.
+
+Tue Feb 27 13:30:52 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Removed lib/silcclient/ops.h file.
+
+ Redefined parts of the SILC Client Library API. Created new
+ file silcapi.h that deprecates the ops.h file and defines the
+ published Client Library API. Defined also private message key
+ API and channel private key API into the file.
+
+ This is the file that the application must include from the
+ SILC Client Library. Other files need not be included by
+ the application anymore.
+
+ * Added new key_agreement client operation callback and also
+ defined the Key Agreement library API for the application.
+
+Tue Feb 27 11:28:31 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Added new packet type: SILC_PACKET_KEY_AGREEMENT. This packet
+ is used by clients to request key negotiation between another
+ client in the SILC network. If the negotiation is started it
+ is performed using the SKE protocol. The result of the
+ negotiation, the secret key material, can be used for example
+ as private message key.
+
+ Implemented the Key Agreement payload into the files
+ lib/silccore/silauth.[ch].
+
+Mon Feb 26 12:13:58 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Redefined ciphers for the SILC protocol. Added some new ciphers
+ and defined the key lengths for the algorithms. Changed the
+ code accordingly. The default key length is now 256 bits.
+
+ * Fixed SKE key distribution function silc_ske_process_key_material
+ when the key length is more than 128 bits. The default key
+ length in SILC is now 256 bits.
+
+ * Added new command status type: SILC_STATUS_ERR_UNKOWN_ALGORITHM
+ to indicate unsupported algorithm.
+
+ * Renamed rijndael.c to aes.c and all functions as well.
+
+ * Fixed a long standing channel key setting bug in client library.
+ Weird that it has never surfaced before.
+
+ * Fixed bug in channel deletion. If the entire channel is removed
+ then it must also delete the references of the channel entry
+ from the client's channel list as the client's channel entry and
+ the channel's client entry share same memory.
+
+Sun Feb 25 20:47:29 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Implemented CONNECT and SHUTDOWN commands in the client.
+
+ * Implemented CLOSE command to the client.
+
+ * Added the function silc_idlist_find_server_by_name into the
+ files silcd/idlist.[ch].
+
+ Added the function silc_idlist_find_server_by_conn into the
+ files silcd/idlist.[ch].
+
+Sat Feb 24 23:45:49 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * DIE command was renamed to SHUTDOWN. Updated the both code
+ and protocol specs.
+
+ * Defined SILC_UMODE_NONE, SILC_UMODE_SERVER_OPERATOR and
+ SILC_UMODE_ROUTER_OPERATOR modes into lib/silccore/silcmode.h.
+
+ * Implemented CONNECT, CLOSE and SHUTDOWN commands to the server
+ side.
+
+ * Added function silc_server_create_connection function to create
+ connection to remote router. My server implementation actually
+ does not allow router to connect to normal server (it expects
+ that normal server always initiates the connection to the router)
+ so the CONNECT command is only good for connecting to another
+ router.
+
Sat Feb 24 16:03:45 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
* Added SILC_NOTIFY_TYPE_KICKED to indicate that the client
* Added new command status type SILC_STATUS_ERR_NO_CHANNEL_FOPRIV
to indicate that the client is not channel founder.
+ * Updated TODO.
+
Sat Feb 24 00:00:55 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
* Removed the rng context from SilcPacketContext structure and