updates.
[silc.git] / CHANGES
diff --git a/CHANGES b/CHANGES
index 83f0304c1ec084bc059f902404df0d23628097ea..2186b85a0b88e21ef1297205338c1a855c5bba94 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,380 @@
+Fri Apr 13 17:12:46 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Added printing of error messages during SKE protocol from the
+         failure packet sent by server during SKE.  Affected file
+         silc/client_ops.c.
+
+       * Removed the client's failure_callback handling with timeout
+         and handle it immediately when received.
+
+       * The SKE library returned wrong type in SUCCESS and FAILURE 
+         packets.  They must be 32 bit MSB not 16 bit MSB.
+
+Fri Apr 13 00:09:08 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Ok, rewrote the logic of the re-key and now it seems to work.
+         I tested it on high traffic with frequent re-keys without
+         problems.  Added hmac_receive (and renamed hmac to hmac_send)
+         in SilcClientConnection in lib/silcclient/client.h and
+         in SilcIDListData in silcd/idlist.h.  Also, removed the
+         SilcPacketParserContext's cipher and hmac fields as they are
+         not needed anymore and actually caused some problems when
+         the ciphers and hmac's changed underneath the packet parser.
+
+Thu Apr 12 14:42:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * If re-key protocol is active then process the incoming packets
+         synchronously since we must assure that icoming packets encrypted
+         with the old key is processed before the new keys is set to
+         use.  This is true other packets than for REKEY packets.
+         Affected file silcd/server.c.  The same was done to client library
+         as well, affected file lib/silcclient/client.c.
+
+Thu Apr 12 12:01:52 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Fixed bug in client and server to accept the force send if
+         the packet is send from silc_[server/client]_packet_process
+         function.  Otherwise the packets are never delivered, oops.
+
+Wed Apr 11 22:10:15 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Disable force sending of packets when REKEY protocol is active.
+         We must assure that no packet is sent directly when rekey is
+         performed.  All packets must be sent through packet queue.
+         Added macro SILC_SERVER_IS_REKEY to silcd/server.h and
+         SILC_CLIENT_IS_REKEY to lib/silcclient/client.h.  Affected
+         function is silc_[server/client]_packet_send_real to check
+         the situation.
+
+       * Replaced the SIM paths from example config files to 
+         /usr/local/modules.  Also, make install creates now
+         /usr/local/silc/logs directory to hold all the SILC server
+         logs.
+
+Wed Apr 11 16:59:59 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Made the configure.in.pre work on Solaris.  Patch by salo.
+
+       * Made all ciphers compatible with non-x86 machines.  Defined
+         CBC mode macros into lib/silccrypt/ciphers_def.h.
+
+Tue Apr 10 20:32:44 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Fixed the make install.
+
+Tue Apr 10 16:20:34 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * When MAC computation fails the silc_packet_decrypt returned 0
+         even though it was supposed to return -1.  Fixed this.  The
+         affected file is lib/silccore/silcpacket.c.
+
+       * Do not replace the config files in /etc/silc (in make install)
+         if they already exist.  Affected file ./Makefile.am.
+
+       * Do not send re-key packets immediately but through packet queue.
+         Affected file silcd/protocol.c and lib/silcclient/protocol.c.
+
+       * Changed silc_net_check_host_by_sock to return FALSE if the
+         IP/DNS could not be resolved.  Though, it returns the IP address
+         now even if it could not resolve it (but returns also FALSE).
+         Affected file lib/silcutil/silcnet.[ch].
+
+Mon Apr  9 21:54:44 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Added silc_pkcs_decode_identifier to decode the public key's
+         identifier.  Affected file lib/silccrypt/silpkcs.[ch].
+         Added also silc_pkcs_free_identifier.  Added also new context
+         SilcPublicKeyIdentifier.
+
+       * Added -S option to the silc client.  It is used to dump the
+         contents of the specified public key file.
+
+       * Changed the PKCS api to return the public key length when
+         setting the public key.
+
+       * Fixed a fatal bug in the public and private key file loading.
+         Affected file lib/silccrypt/silcpkcs.c.
+
+       * Execute the packet parsing for client with zero (0) timeout
+         if the protocol is active.  Affected file silcd/server.c.
+
+Sun Apr  8 19:30:56 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Made the key generation options to the silcd program.  Added
+         -C option, equivalent to client's option.
+
+       * Added new [ServerKeys] config section to the server.  It
+         configures the server's public and private key.
+
+       * Defined generic Public Key Payload into the protocol
+         specification to send specific type of public keys and
+         certificates.
+
+       * Defined new command SILC_COMMAND_GETKEY to fetch a client's
+         public key or certificate.
+
+       * Implemented the GETKEY command to the server and to the
+         client library and on user interface.
+
+Sun Apr  8 01:37:21 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Made preliminary `make install' work.
+
+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.
+
+         Added new protocol type SILC_PROTOCOL_CLIENT_REKEY.
+         Added silc_client_rekey_callback and silc_client_rekey_final.
+         Affected files are lib/silcclient/protocol.[ch] and
+         lib/silcclient/client.[ch].
+
+       * 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