updates.
[silc.git] / CHANGES
diff --git a/CHANGES b/CHANGES
index c6c440a78453c4647ab84801c1380d5cc1da2edd..235599ae27b0b47a8f6f950820d2722983b34424 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,351 @@
+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.
+
+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
@@ -265,7 +613,7 @@ Fri Mar 16 15:52:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
          Do not send SilcPKCS but SilcPublicKey as argument.
 
        * Implemented the public key authentication support to the
-         serverconfig.  The public key is loaded fromthe provided path
+         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;