5379d3f6c4c8701da1c4249ab7520abc52d90b4c
[silc.git] / CHANGES
1 Thu Oct 25 22:44:06 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
2
3         * Assure that silc_client_notify_by_server_resolve does not
4           resolve the client information multiple times.  If it cannot
5           be found by the first it cannot be found at all.  Affected
6           file lib/silcclient/client_notify.c.
7
8         * Fixed WHOWAS command reply calling.  Affected file
9           lib/silcclient/command_reply.c.
10
11         * Removed all references to silc_idlist_get_client from the
12           Irssi SILC client since that call is internal call used by
13           the library.  The Irssi SILC client will use now client
14           retrieval functions found in silcapi.h.
15
16         * Fixed a bug in resolving nickname info before sending
17           private message.  It used freed memory.  Affected file
18           irssi/src/silc/core/silc-servers.c.
19
20 Thu Oct 25 19:04:49 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
21
22         * Assure my_channels statistics cannot go negative in server.
23           Affected files silcd/server.c, silcd/server_util.c.
24
25 Wed Oct 24 19:53:05 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
26
27         * Upgraded dotconf 1.0.2 to 1.0.6 in lib/dotconf.
28
29 Tue Oct 23 13:51:19 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
30
31         * Win32 Toolkit changes.  Affected files
32           win32/silc.dsw, win32/libsilc/libsilc.def,
33           win32/libsilcclient/libsilc.def,
34           lib/silcutil/silcutil.c, and
35           lib/sftp/sftp_fs_memory.c.
36
37 Mon Oct 22 16:35:05 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
38
39         * Added silc_net_localip to return local host's IP address.
40           Affected file lib/silcutil/silcnet.[ch].
41
42         * If key exchange or rekey protocol is active for a connection
43           parse all packets syncronously since there might be packets
44           in packet queue that we are not able to process without first
45           processing packets before them.  Affected file silcd/server,
46           lib/silcclient/client.c.
47
48         * SilcPacketParserCallback now returns TRUE or FALSE to indicate
49           whether library should continue processing the packet. 
50           Affected file lib/silccore/silcpacket.h.
51
52         * Added SilcSFTPMonitor callback, SilcSFTPMonitors and
53           SilcSFTPMonitorData to SFTP server to monitor various
54           SFTP client requests.  Affected file lib/silcsftp/silcsftp.h,
55           lib/silcsftp/sftp_server.c.
56
57         * Added silc_file_size to return file size.  Affected file
58           lib/silcutil/silcutil.[ch].
59
60         * Implemented the file transfer support for the client library.
61           Added preliminary support for simple client to client one-file
62           transmission.  Affected file lib/silcclient/client_ftp.c,
63           lib/silccilent/client.[ch].
64
65         * Added new local command FILE to the Irssi SILC Client.
66           It is used to perform the file transfer.  It has subcommands
67           SEND, RECEIVE, SHOW and CLOSE.  Affected files
68           irssi/src/silc/core/client_ops.c, 
69           irssi/src/silc/core/silc-server.[ch].
70
71 Mon Oct 22 12:50:08 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
72
73         * Relay the SILC_PACKET_FTP in the server.  Affected files
74           silcd/server.c and silcd/packet_receive.c.
75
76 Sun Oct 21 20:21:02 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
77
78         * Renamed silc_file_read and silc_file_write to functions
79           silc_file_readfile and silc_file_writefile.  Added function
80           silc_file_open and silc_file_close.  Affected files 
81           lib/silcutil/silcutil.[ch].
82
83 Thu Oct 18 20:58:13 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
84
85         * Resolve the client info when received private message or
86           channel message for a client which nickname we don't know.
87           Affected files lib/silcclient/client_prvmsg.c and
88           lib/silcclient/client_channel.c.
89
90         * Do not crash in /KEY if client is not connected.  Affected
91           file irssi/src/silc/core/silc-channels.c.
92
93         * Added SilcClientStatus field to the SilcClientEntry in the
94           lib/silcclient/idlist.h.
95
96           Added SILC_CLIENT_STATUS_RESOLVING to mark that the entry
97           is incomplete and is being resolved, it won't be resolved
98           twice.
99
100           Make sure also that USERS command reply does not resolve
101           twice information.  Affected file is
102           lib/silcclient/command_reply.c.
103
104           Make sure that silc_client_get_clients_by_list does not
105           resolve twice same information.
106
107         * Check for valid client->id in the silc_server_free_client_data.
108           Affected file silcd/server.c.
109
110         * Fixed /GETKEY nick@server not to crash if the server entry
111           is not found.  Affected file lib/silcclient/command.c.
112
113         * Fixed the silc_server_check_cmode_rights to check the
114           requested modes correctly.  Affected file silcd/command.c.
115
116 Thu Oct 18 12:10:22 CEST 2001  Pekka Riikonen <priikone@silcnet.org>
117
118         * Better checks for non-printable chars in nick added.
119           Affected file silcd/command.c.
120
121 Thu Oct 18 09:18:58 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
122
123         * Call the silc_server_udpate_servers_by_server in the
124           primary router that comes back online in the backup resuming
125           protocol.  Otherwise it routes packets wrong.  Affected file
126           silcd/server_util.[ch], silcd/server_backup.c.
127
128 Wed Oct 17 16:51:18 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
129
130         * Added SILC_STR_UI8_[N]STRING[_ALLOC] formats to the
131           lib/silcutil/silcbuffmt.[ch].
132
133         * Redefined the SILC packet header to include the padding
134           length.  Affected file lib/silccore/silcpacket.[ch].
135
136         * Added SILC_PACKET_PADLEN_MAX macro to return the padding
137           length for maximum padding up to 128 bytes).  Affected
138           file lib/silccore/silcpacket.h.
139
140         * Removed all backwards support for old 0.5.x MAC thingies.
141           The SILC packet header change makes it impossible to be
142           backwards compatible.
143
144         * Send the ENDING packet with timeout in the backup resuming
145           protocol.  This is to assure that all routers has connected
146           to the primary router.  Affected file silcd/server_backup.c.
147
148         * Changed the RNG to take the first IV from random data.  It
149           used to take it from zero actually.  Changed the RNG also
150           to use /dev/urandom during session.  /dev/random is used
151           in initialization.  Affected file lib/silccrypt/silcrng.[ch].
152
153 Tue Oct 16 20:45:49 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
154
155         * Changed the SILC packet header to have the first two bytes
156           (the packet length) encrypted.  Affected files aroung the
157           code tree, lib/silccore/silcpacket.[ch].  Removed the
158           SilcPacketCheckDecrypt callback.  It is not needed anymore
159           since the silc_packet_receive_process will determine now
160           whether the packet is normal or special.
161
162         * Implemented the unidirectional MAC keys.  Affected files
163           lib/silcske/silcske.c, silcd/protocol.c and
164           lib/silcclient/protocol.c.
165
166         * Implemented the packet sequence number to the MAC computation.
167           Affected files lib/silccore/silcpacket.c, silcd/protocol.c,
168           silcd/packet_send.c, silcd/server.c, lib/silcclient/client.c,
169           lib/silcclient/protocol.c.
170
171 Mon Oct 15 17:42:55 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
172
173         * Allow backup router to announce servers.  All servers
174           announced by backup router are added to the global list
175           automatically.  Update hte server's socket to our primary
176           router also when backup router announces a server.
177           Affected file silcd/packet_receive.c.
178
179         * Do not update the client->router in the function
180           silc_server_udpate_clients_by_server if the client is on
181           global list.  We might fail to find any specific server
182           for locally connected clients and local cell clients.  They
183           should still use the `from' and not `to' as client->router.
184           This fixes backup router resuming protocol.  Affected file
185           silcd/server_util.c.
186
187         * Decrease channel statistics count only if the channel
188           deletion worked.  Affected files are silcd/server.c and
189           silcd/server_util.c.
190
191         * Added silc_server_update_servers_by_server to update origin
192           of all server entries.  Used during backup router protocol.
193           Affected files silcd/server_util.[ch], silcd/server.c. and
194           silcd/backup_router.c.
195
196         * ROBODoc documented the lib/silccrypt/silchmac.h.  Added new
197           function silc_hmac_init, silc_hmac_update, silc_hmac_final,
198           silc_hmac_get_hash and silc_hmac_get_name.  Affected file
199           lib/silccrypt/silchmac.c.
200
201 Sun Oct 14 18:28:22 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
202
203         * Assure that router cannot reroute the same channel message
204           to the sender.  Affected file silcd/packet_receive.c.
205
206 Sat Oct 13 12:46:18 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
207
208         * Made better checks that the channel message is not sent
209           to the router it came from.  Affected file is
210           silcd/packet_send.c.  Fixed memory leak too.
211
212         * Announce informations for incoming router connection, but
213           only after checking if it is replaced by backup router.
214           Affected file silcd/packet_receive.c.
215
216 Fri Oct 12 18:37:24 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
217
218         * Fixed the backup resuming protocol to work in multiple
219           router environment.  Affected file silcd/server_backup.c.
220
221         * Route packet only to one router in the function
222           silc_server_packet_send_to_channel.  Affected file is
223           silcd/packet_send.c.
224
225         * Fixed silc_server_send_notify_dest to set the broadcast
226           flag.  Fixed the silc_server_send_notify_topic to actually
227           send the TOPIC_CHANGE notify and not SERVER_SIGNOFF notify.
228           Affected file silcd/packet_send.c.
229
230         * Changed the SFTP Filesystem interface.  Changed the
231           SilcSFTPFilesystemStruct to SilcSFTPFilesystemOps to include
232           the filesystem operation function.  The SilcSFTPFilesystem
233           is now a context that is allocated by all filesystem allocation
234           functions and it already includes the operations structure
235           and filesystem specific context.  It is given as argument
236           now to the silc_sftp_server_start.  This made the interface
237           a bit cleaner.  Affected file lib/silcsftp/silcsftp[_fs].h,
238           lib/silcsftp/sftp_fs_memory.c and sftp_server.c.
239
240 Thu Oct 11 22:19:26 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
241
242         * Changed the backup router adding and getting interfaces
243           in the server.  The router that will be replaced by the
244           specified backup router is now sent as argument.  Affected
245           files silcd/serverconfig.[ch], silcd/backup_router.[ch], and
246           silcd/server.c.
247
248         * Added silc_net_addr2bin_ne to return the binary form of
249           the IP address in network byte order.  Affected files
250           lib/silcutil/[unix/win32].silc[unix/win32]net.[ch].
251
252 Thu Oct 11 12:14:19 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
253
254         * Check for existing server ID in silc_server_new_server
255           and in silc_server_connect_to_router_final and remove the
256           old entry if it exists.  Affected file silcd/packet_receive.c,
257           silcd/server.c.
258
259         * Send the channel message always to only one router, either
260           in upstream or downstream.  Affected file is
261           silcd/packet_send.c.
262
263 Tue Oct  9 17:45:43 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
264
265         * Wrote the definition of the backup resuming protocol to the
266           protocol specification.
267
268         * Removed one redundant channel key generation from normal
269           server during joining procedure.  Removed one redundant
270           channel key sending from server to router during joining
271           procedure.  Affected file silcd/command.c.
272
273         * Made minor bugfixes to the backup router resuming protocol.
274           Affected file silcd/server_backup.c, server.c.
275
276 Mon Oct  8 16:47:42 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
277
278         * Added --disable-asm configuration option.  Affected files
279           configure.in.pre, lib/silcmath/mpi/configure.in.  A patch
280           by salo.
281
282         * Implemented the backup resuming protocol that is used to
283           resume the primary router position in the cell after the
284           primary router comes back online.  Affected files
285           silcd/server_backup.[ch], silcd/server, silcd/packet_receive.c,
286           and silcd/server_util.[ch].
287
288 Sun Oct  7 12:29:25 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
289
290         * Sleep two (2) seconds after sending QUIT command to server.
291           Affected file lib/silcclient/command.c.
292
293         * Assure that if outgoing data buffer is pending do not force
294           send any data.  Affected file silcd/packet_send.c.
295
296         * Assure that if outgoing data buffer is pending do not force
297           send any data.  Affected file lib/silcclient/client.c.
298
299         * Implemented the backup router support when the primary router
300           goes down.  The servers and routers can now use the backup
301           router as new primary router without loosing connectivity.
302
303 Sat Oct  6 21:18:54 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
304
305         * Added new SILC_IDLIST_STATUS_DISABLED flag for entries
306           in the server to indicate disabled entry.  All data read
307           from the connection will be ignored and no data is sent
308           for entry that is disabled.  Affected files are
309           silcd/idlist.h, silcd/server.c.
310
311 Fri Oct  5 00:03:29 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
312
313         * Created SFTP client and server test programs in the
314           lib/silcsftp/tests directory.
315
316 Wed Oct  3 23:31:42 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
317
318         * Implemented memory filesystem (virtual filesystem) for
319           SFTP server.  Affected file lib/silcsftp/silcsftp_fs.h,
320           sftp_fs_memory.c.
321
322 Sun Sep 30 22:10:57 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
323
324         * Implemented the SFTP (SSH File Transfer Protocol) to the
325           lib/silcsftp.  It includes SFTP client and SFTP server
326           implementations.
327
328 Sun Sep 30 10:35:44 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
329
330         * Moved lib/silccore/silcprotocol.[ch] to the
331           lib/silcutil library.
332
333         * Added silc_buffer_format_vp and silc_buffer_unformat_vp to
334           take variable argument list pointer as argument.  Affected
335           file lib/silcutil/silcbuffmt.[ch].
336
337         * Added silc_buffer_set function that is used to set data
338           to a SilcBuffer that is not allocated at all (SilcBufferStruct).
339           Affected file lib/silcutil/silcbuffer.h.
340
341         * Changed various routines in the core library to use the new
342           silc_buffer_set instead of allocating new buffer only for
343           temporary purposes.
344
345         * Added 64-bit value formatting and unformatting support to the
346           silc_buffer_[un]format routines.  Affected file is
347           lib/silcutil/silcbuffmt.[ch].
348
349           Added also 64-bit macros: SILC_GET64_MSB and SILC_PUT64_MSB,
350           to includes/bitmove.h.
351
352 Fri Sep 28 21:30:10 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
353
354         * Fixed channel user mode saving in client library.  Affected
355           file lib/silcclient/command[_reply].c.
356
357 Thu Sep 27 22:52:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
358
359         * Defined the file transfer to the SILC Protocol.  Added
360           new packet type SILC_PACKET_FTP and defined File Transfer
361           Payload.  The mandatory file transfer protocol is SFTP
362           (SSH File Transfer Protocol).  Affected file in addition
363           of the internet draft is lib/silccore/silcpacket.h.
364
365         * Deprecated the SILC_PACKET_CELL_ROUTERS and defined new 
366           packet SILC_PACKET_RESUME_ROUTER instead.  The new packet
367           is used as part of backup router protocol when the primary
368           router of the cell is back online and wishes to resume
369           the position as primary router.
370
371         * Redefined the MAC generation keys in the protocol.  The
372           same key is not used anymore in both direction.  Both
373           direction will now use different keys for sending and
374           receiving.  This fixes a potential security flaw.  This
375           change causes incompatibilities in the protocol.
376
377         * Redefined also the MAC computation from the packet.
378           An packet sequence number is now added to the MAC 
379           computation.  This prevents possible replay attacks against
380           the protocol.  This change too causes incompatibilities
381           in the protocol.
382
383           Added `sequence' field to the SilcPacketContext to hold
384           the current sequence number for the packet.
385
386 Wed Sep 26 20:15:22 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
387
388         * Added `created' field to the SilcIDListData in the file
389           silcd/idlist.h to indicate the time when the entry was
390           created.
391
392         * Added `created' field to the SilcChannelEntry too.  Affected
393           file silcd/idlist.h.
394
395         * Added `creation_time' aguments to all the announcement functions
396           in the server.  If it is provided then only the entries that
397           was created after the provided time frame are actually
398           announced.  Affected file silcd/server.[ch].
399
400         * The protocol says that the Channel ID's IP address must be
401           based on the router's IP address.  Added check for this in
402           the silc_server_new_channel when processing incoming New Channel
403           Payload.  Affected file silcd/packet_receive.c.
404
405         * Print out the correct version with --version in SILC client.
406           Affected file irssi/src/silc/core/silc-core.c.
407
408 Mon Sep 24 17:19:00 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
409
410         * Fixed WHOWAS command to check for completnes of the client
411           entry always, not just when the command is coming from client.
412           Affected file silcd/command.c.
413
414         * Added new function silc_server_packet_queue_purge to purge the
415           outgoing data queue to the network.  After the function returns
416           it is guaranteed that the outgoing packet queue is empty.
417           Affected file silcd/packet_send.[ch].
418
419         * Purge the outgoing packet queue in the rekey protocol's final
420           callback to assure that all rekey packets go to the network
421           before quitting the protocol.  Affected file silcd/server.c.
422
423         * Added silc_client_packet_queue_parse as similar function as
424           in server to the client library.  The affected file is
425           lib/silcclient/client.c.
426
427 Sun Sep 23 15:15:53 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
428
429         * Splitted silcd/server.c and created silcd/server_util.[ch]
430           for utility functions.
431
432         * Added new socket flag SILC_SF_DISABLED to indicate that the
433           connection is open but nothing can be sent to or received from
434           the connection.  Affected file lib/silcutil/silsockconn.[ch].
435           The checking for disabled socket is checked in the low level
436           silc_socket_write and silc_socket_read functions.
437
438 Thu Sep 20 23:11:28 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
439
440         * Allow only nicknames and channel names that fits into the
441           7-bit unsigned char ASCII set.  Affected file silcd/command.c.
442
443 Thu Sep 20 18:04:12 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
444
445         * When processing JOIN command reply in server check that if
446           the channel exists in our global list we'll move it the local
447           list.  Affected file silcd/command_reply.c.
448
449         * Fixed the check whether client is joined on the channel already
450           in JOIN command.  Affected file lib/silcclient/command.c.
451
452         * Fixed the JOIN command reply to check whether the channel
453           already exists.  Affected file lib/silcclient/command_reply.c.
454
455 Wed Sep 19 22:58:32 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
456
457         * Added silc_ske_status_string to map the SKE error numbers
458           to readable strings.  The affected files are
459           lib/silcske/silcske[_status].[ch].
460
461 Tue Sep 18 22:50:41 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
462
463         * Do not show the private channels on the WHOIS channel list
464           as it is not allowed by the protocol.  The affected file is
465           silcd/server.c.
466
467 Sun Sep 16 12:32:58 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
468
469         * Assure that the packet length digged from the actual packet
470           is something sensible in the silc_packet_decrypt_rest_special
471           in lib/silccrypt/silcpacket.c.
472
473         * Free and NULL the allocated pointer in silc_hmac_alloc if
474           the HMAC allocation fails.  The affected file is
475           lib/silccrypt/silchmac.c.
476
477         * Print the selected security properties to the log files in
478           the server.  Affected file silcd/protocol.c.
479
480         * Add SKE's reference counter even if calling the completion
481           callback manually.  Otherwise it goes negative, although it
482           does not cause any problems.  The affected file is
483           lib/silcske/silcske.c.
484
485         * Remove the client entry with short timeout after giving the
486           KILL command.  Affected file lib/silcclient/command.c.
487
488         * Fixed to send error reply in WHOIS and IDENTIFY commands in
489           case all found clients are already disconnected (WHOWAS would
490           found them) in the server.  Affected file silcd/command.c.
491
492         * Update the last_receive (time of last data received) to be 
493           updated only when received private or channel message so that
494           the idle time showed in WHOIS makes more sense.
495
496         * Added boolean field `valid' in to the SilcClientEntry in the
497           client library to indicate whether the entry is valid or not.
498           This fixes the nickname change bug on channel when changing
499           the nickname to be same than the old (like nick to Nick) the
500           nickname formatter doesn't set the new nick anymore to Nick@host.
501           Affected file lib/silcclient/idlist.[ch].
502
503         * Now actually fixed the nickname changing on disconnection.
504           Added new function silc_change_nick to the Irssi SILC Client.
505           Affected file irssi/src/silc/core/client_ops.c,
506           irssi/src/silc/core/silc-nicklist.[ch].
507
508 Sat Sep 15 13:29:17 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
509
510         * Check that the public key exists in the GETKEY command before
511           trying to encode it.  Affected file silcd/command.c.
512
513         * Print some notifications on received public keys with GETKEY
514           command in the Irssi SILC Client.  Affected files are
515           irssi/src/fe-common/silc/module-formats.[ch],
516           irssi/src/silc/core/client_ops.c.
517
518         * Use IDENTIFY command to resolve the server information in the
519           GETKEY command instead of INFO command.  Affected file
520           lib/silcclient/command.c.
521
522         * All command reply functions in the client library now calls
523           the pending command reply callbacks even if an error has
524           occurred.  The server has done this a long time and now it was
525           time to move the client library to this as well.  Now all
526           errors can be delivered back to the pending command reply
527           callbacks if necessary.  Affected files are
528           lib/silcclient/command[_reply].[ch].
529
530         * Change the nickname on disconnection back to the username
531           because in reconnect the server will enforce it to it anyway.
532           Affected file irssi/src/silc/core/silc-servers.c.
533
534         * Fixed a config file parsing bug in the Irssi SILC client.
535           Affected file irssi/src/silc/core/clientconfig.c.
536
537 Thu Sep 13 23:11:18 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
538
539         * When printing the channel mode on JOIN, verify that the
540           channel key and channel's HMAC are valid.  Affected file
541           irssi/src/silc/core/client_ops.c.
542
543 Thu Sep 13 20:24:52 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
544
545         * Added defines SILC_DEFAULT_CIPHER, SILC_DEFAULT_HMAC,
546           SILC_DEFAULT_HASH and SILC_DEFAULT_PKCS in the file
547           lib/silccrypt/[silccipher.h|silchmac.h|silchash.h|silcpkcs.h].
548
549         * Removed channel key rekey task deleting from the function
550           silc_server_save_channel_key.  Affected file silcd/server.c.
551           Added explicit timeout task context instead that is used to   
552           delete the task if we are registering a new task before the
553           new task has elapsed.
554
555         * When channel key rekey occurs the client library now saves
556           the old channel key for a short period of time (10 seconds) and
557           is able to use it in case some is still sending channel
558           messages encrypted with the old key after the rekey.  Affected
559           file lib/silcclient/[idlist.h|client_channel.c].
560
561 Sun Sep  9 15:49:16 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
562
563         * Added check to the silc_server_new_id_real to not accept
564           new ID if it is the sender's own ID.  Affected file is
565           silcd/packet_receive.c.
566
567         * Assure that we do not announce ourself or the one we've
568           sending our announcements when we're router and are announcing
569           servers to our primary router.  Affected file silcd/server.c.
570
571         * Fixed silc_server_command_identify_check_client to assemble
572           correct WHOIS packet.  It send corrupted WHOIS packet and
573           caused problem with router to router connections.  Affected
574           file silcd/command.c.
575
576           Fixed also silc_server_command_whois_check the same way
577           as for the IDENTIFY command.
578
579         * Added new SilcIDListStatus to the server in the SilcIDListData
580           structure.   The status now includes the current status of
581           the entry (like registered, resolved etc.).  Affected file
582           silcd/idlist.[ch].  Defined a bunch of different status types
583           as well.  This replaced the old boolean registered field as well.
584
585           Added resolve_cmd_ident field to the SilcClientEntry structure
586           too so that if the entry is for example being resolved so 
587           another command may attach to the same pending command reply
588           without requiring to resolve the same entry again.  This concept
589           should optimize the WHOIS and the IDENTIFY resolving under
590           heavy load by taking away unnecessary resolving for entries
591           that are being resolved already.
592
593           Added support for adding multiple pending commands for one
594           command idenfier.  Affected file silcd/command[_reply].[ch].
595
596         * Fixed WHOIS and IDENTIFY save to remove the cache entry
597           before deleting the data.  Otherwise the hash table will have
598           freed data in comparison functions.  Affected file is
599           silcd/command_reply.c.
600
601         * Fixed silc_idlist_replace_client_id to add the new entry to
602           the cache with NULL nickname.  Otherwise there will be invalid
603           memory as the nickname after the nickname is freed.  Affected
604           file silcd/packet_receive.c.
605
606         * Fixed the silc_idlist_get_clients_by_hash.  The entries was
607           saved into wrong slots because the previous number of entries
608           was not taken into account.  Affected file silcd/idlist.c.
609           Fixed same thing in silc_idlist_get_clients_by_nickname too.
610
611         * If we are router and we receive JOIN notify to a channel that
612           does not have any users then notified client is marked as the
613           channel founder, as it is it.  The affected file is
614           silcd/packet_receive.c
615
616         * Added to the extended hash table API's table_del_*ext functions
617           the destructor as argument too, so that the caller can decide
618           which destructor to use or whether to use destructor at all.
619           Affected file lib/silcutil/silchashtable.[ch].
620
621         * Fixed ID Cache purging.  It actually deleted the entries from
622           the hash table after the data was freed.  The hash table ended
623           up comparing freed memory.  The affected file is
624           lib/silccore/silcidcache.c.
625
626 Sat Sep  8 10:22:10 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
627
628         * Fixed Irssi SILC client's KILL command's HELP syntax.
629
630         * The USERS command now resolves the detailed user information
631           if the userinfo field is missing.  Affected file is
632           lib/silcclient/command_reply.c.
633
634         * Do not print error in silc_file_read if the read file does
635           not exist.  Just silently return NULL.  Affected file is
636           lib/silcutil/silcutil.c.
637
638         * Fixed the silc_log_output to not wine about NULL filename
639           and to not create some bogus " " filename.  Affected file is
640           lib/silcutil/silclog.c.
641
642 Fri Sep  7 22:16:38 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
643
644         * Fixed various printing bugs on the user interface in the
645           Irssi SILC Client.  Minor changes that were forgotten from
646           the release.
647
648 Fri Sep  7 17:28:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
649
650         * Fixed the configure.in.pre and the compilation and distribution
651           environment to support the new autoconf 2.52.  That version is
652           now required to compile the CVS trunk.
653
654 Thu Sep  6 12:47:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
655
656         * Renamed function silc_parse_nickname to silc_parse_userfqdn
657           to generally parse user@fqdn format strings.  Affected file
658           lib/silcutil/silcutil.c.
659
660         * Added nickname_format and nickname_force_format fields to the
661           SilcClientParams structure.  The first one defines the format
662           for the nicknames that the library will enforce if the receives
663           multiple same nicknames.  The second one is boolean value and
664           can be used to force the library to always enforce the format
665           to the nicknames regardles whether there are multiple nicknames
666           or not.  This configurable formatting was employed to flexibly
667           support accessing multiple nicknames from the user interface.
668           The userinterface can now set the nicknames to what ever format
669           they prefer.  Affected file lib/silcclient/silcapi.h.
670
671           Added function silc_client_nickname_format to the file
672           lib/silcclient/idlist.c.  It performs the nickname formatting.
673
674           Added new field `hostname´ to the SilcClientEntry context.
675           It holds the hostname of the client.  Affected file is
676           lib/silcclient/idlist.h.
677
678         * Irssi SILC Client sets the nicknames in nick@hostn format.
679           Fe. priikone@otaku, priikone@otaku2 etc.  Affected file
680           irssi/src/silc/core/silc-core.c.
681
682           The WHOIS printing now also shows both the real nickname and
683           the formatted nickname so that user knows how to access the
684           user if there are multiple same nicknames cached.  Affected
685           file irssi/src/silc/core/client_ops.c.  Changed the WHOIS
686           printing formatting too to take the hostname now as a separate
687           argument.  The Affected file is
688           irssi/src/fe-common/silc/modules-formats.[ch].
689
690         * Changed the silc_client_get_clients_local to accept the formatted
691           nickname as argument.  It accepts the real nickname too but the
692           formatted nickname can be used to find the true entry from 
693           multiple entries.  Affected file lib/silcclient/silcapi.h and
694           lib/silcclient/idlist.c.
695
696         * Added nickname_format_parse field to the SilcClientParams.
697           It is a callback function provided by the application to parse
698           the nickname out of the formatted nickname string. The library
699           calls it to get the nickname from the formatted string. Since
700           the application generally knows better the format of the nickname
701           string it parses it instead of the library, even though library
702           encodes the formatted string.  If the callback function is not
703           provided then the library will use the string as is.  The
704           affected file is lib/silcclient/silcapi.h.
705
706         * All the nickname strings passed to the client library in 
707           commands are now expected to be formatted nickname strings.
708           If the command does not support the formatted nickname string
709           it will assume that the sent string is the actual nickname.
710           Affected file lib/silcclient/command.c.
711
712 Tue Sep  4 22:31:28 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
713
714         * Added public key authentication support to OPER and SILCOPER
715           commands in the client library.  Affected file is
716           lib/silcclient/command.c.
717
718 Tue Sep  4 12:39:17 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
719
720         * Changed the get_auth_methdod client operation to be asynchronous.
721           It can be async if the application resolves the authentication
722           method from the server during the negotiation.  Added new
723           SilcGetAuthMeth completion callback that the application will
724           call after resolving the authentication method.
725
726           Added function silc_client_request_authentication_method that
727           the application can use to resolve the authentication method
728           from the server.  Added also SilcConnectionAuthRequest callback
729           that the library will call after the server has replied.  The
730           application can call this function if it does not know the
731           current authentication method.
732
733           Affected files are lib/silcclient/client.c and 
734           lib/silcclient/silcapi.h.
735
736         * The Irssi SILC client now automatically resolves the authentication
737           method incase any configuration information is not present (and
738           currently there never is).  The affected file is
739           irssi/src/silc/core/client_ops.c.
740
741         * Fixed public key authentication from the client library.
742           Affected file lib/silcclient/protocol.c.  Changed also the
743           protocol specification about the public key authentication in
744           the connection authentication protocol.  The actual data to be
745           signed is now computed with a hash function before signing.
746
747         * Fixed the public key authentication from the server as well.
748           Affected file silcd/protocol.c.
749
750         * Removed the mlock()'s from the memory allocation routines.
751           Affected file lib/silcutil/silcmemory.c.  The ./configure does
752           not check anymore for the mlock().  Affected file is
753           configure.in.pre.
754
755         * Fixed USERS command in server to allow the execution of the
756           command for private and secret channels if the client sending
757           the command is on the channel.  Affected file silcd/command.c.
758
759         * Fixed silc_client_get_clients_local to return the clients
760           count correctly.  It could return wrong value.  Affected file
761           lib/silcclient/idlist.c.
762
763 Mon Sep  3 20:09:59 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
764
765         * Fixed the lib/silcmath/mpi/mpi.h to always use 32-bit data
766           types.  The assembler optimizations seemed not to like 64-bit
767           data types.  The assmebler optimizations thus are now enabled
768           also for BSD systems as opposed to only enable them for Linux.
769
770         * Do not check for threads at all on BSD systems.  Affected
771           file configure.in.pre.
772
773         * Removed -n and -h options from the Irssi SILC Client since
774           they are not used in silc.
775
776         * Fixed the prime generation to assure that the first digit
777           of the generated random number is not zero since our conversion
778           routines does not like number strings that starts with zero
779           digit.  If zero digit is seen the random number is regenerated.
780           This caused some corrupted RSA keys when the zero first digit
781           was met.  Affected file lib/silcmath/silcprimegen.c.
782
783 Sun Sep  2 17:17:24 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
784
785         * Fixed WIN32 configuration in the ./configure script.
786           Fixed to include xti.h on environments that has it.
787           Patches by Carsten Ilchmann and andrew.
788
789 Sat Sep  1 00:29:33 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
790
791         * Changed the silc_id_create_client_id to be collision
792           resistant.  It is now assured that there cannot be created
793           two same client ID's.  I suspect that some weird bugs in 
794           the server were actually caused by duplicate Client IDs.
795           Affected file silcd/serverid.[ch].  A router receiving
796           new ID now also assures and informs the sending server
797           if the ID caused collision.
798
799         * Changed the silc_id_create_channel_id to also assure that
800           there are no collisions.
801
802 Wed Aug 29 17:55:01 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
803
804         * Statement about ignoring the Mutual Authentication flag when
805           performing rekey with PFS was a bit misleading.  It is ignored
806           if it was set in the initial negotiation, it cannot be even
807           set in the rekey.  Fixed in the ke-auth draft.  Started the
808           new versions of the protocol drafts in the doc/.
809
810 Sun Aug 26 14:59:15 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
811
812         * Fixed a bug in silc_client_command_identify_save when saving
813           new channel information.  The channel name was no duplicated
814           and caused crash on exit.  Affected file is
815           lib/silcclient/command_reply.c.
816
817 Fri Aug 17 23:07:45 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
818
819         * Fixed the getkey command handling in the server.  Send just
820           empty OK reply to the sender if the key could not be fetched
821           (but everything else was ok, like the key just was not available).
822           Changed the public key parameter to optional in the protocol
823           specs so that empty OK reply can be sent.  Affected file
824           silcd/command.c.
825
826           Added a message to Irssi SILC client to tell to user if the
827           server did not return a public key.
828
829 Tue Aug 14 07:29:27 CEST 2001  Pekka Riikonen <priikone@silcnet.org>
830
831         * Fixed a channel key regeneration bug.  It registered new
832           timeout tasks exponentially until all system resources were
833           used.  Affected file silcd/server.c.
834
835 Sun Aug 12 20:48:14 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
836
837         * Added the SILC Document generator to the scripts/silcdoc.
838           It can be used to generate the Toolkit Reference Manual out
839           of the source tree.  Internally it will also use the RoboDoc
840           generator now imported in util/robodoc.
841
842 Sun Aug 12 12:28:17 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
843
844         * Added couple of return's in rekey protocol if error orccurred
845           during the protocol.  The execution must be terminated.
846           Affected file silcd/protocol.c.  Also, terminate the protocol
847           always with timeout.
848
849 Sat Aug 11 12:36:02 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
850
851         * The client's Client ID was created initally from the wrong
852           nickname (it could have been in format nick@host) in the
853           silc_server_new_client.  Affected file silcd/packet_receive.c
854
855 Sat Aug 11 00:29:57 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
856
857         * Added some SILC_LOG_ERROR's to various error conditions
858           if client could not be added to ID cache.  Affected files
859           silcd/packet_receive.c and silcd/server.c.
860
861         * When client's sock->user_data is freed, NULL also the 
862           client->router and client->connection pointers.  Added check
863           for these pointers being NULL to various places around the
864           code.  Affected file silcd/server.c.
865
866         * Added client->data.registered == TRUE checks to various
867           places around the code to assure that unregistered client's
868           are not handled when it is not allowed.  Affected file
869           silcd/server.c.
870
871         * Added `bool registered' fields to all 
872           silc_idlist_[server|client]_get_* routines to indicate whether
873           the fetched client needs to be registered or not.  Affected
874           file silcd/idlist.[ch].
875
876         * Add your own entry as registered to the ID cache in the
877           server.  Affected file server.c.
878
879         * Fixed a bug in silc_server_new_server.  The SilcServer was
880           set as the new server's context instead of SilcServerEntry.
881           This naturally caused some weird bugs.
882
883 Thu Aug  9 18:28:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
884
885         * Do not delete the channel rekey task when adding it
886           for in silc_server_create_channel_key.
887
888         * Changed the silc_server_create_channel_key to return
889           TRUE or FALSE to indicate the success of the channel key
890           creation.
891
892 Thu Jul 26 11:32:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
893
894         * Fixed MSVC++ project files and added missing files to
895           Makefiles under win32/.
896
897 Wed Jul 25 18:43:54 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
898
899         * Do not add TCP_NODELAY flag if the operating system
900           does not have it defined.  Affected files are
901           lib/silcutil/[unix/win32]/silc[unix/win32]net.c.
902
903         * Fixed buffer overflow from Irssi SILC Client.  Affected
904           file irssi/src/fe-common/core/themes.c.
905
906         * Fixed double free in client library in the file
907           lib/silcclient/client.c when disconnecting from server.
908
909         * Applied double free patch from cras to Irssi SILC client.
910           Affected files irssi/src/core/[modules/expandos].c
911
912         * Fixed the disconnection handling to Irssi SILC Client.
913           The application must call silc_client_close_connection
914           in ops->connect client operation in case of failure of
915           the connection.  Affected file is
916           irssi/src/silc/core/client_ops.c.
917
918         * Do not set sock->protocol to NULL in the function
919           silc_client_close_connection after executing the protocol's
920           final callback since the sock might not be valid anymore.
921           Affected file lib/silcclient/client.c.
922
923 Wed Jul 25 16:04:35 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
924
925         * Do not enable SILC_THREADS if the linking with libpthread
926           did not happen.  Affected file configure.in.pre.
927
928         * Added notion to protocol specification that server must
929           verify the sent authentication payload with CMODE when
930           setting the channel founder key.  Implemented it to the
931           server.  Affected file silcd/command.c.
932
933 Mon Jul 23 18:31:43 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
934
935         * Added _EXTRA_DIST SILC distribution variable to the
936           distributions file.  It is used to conditionally add extra
937           files or directories to the specific distribution.  Affected
938           files ./prepare, Makefile.am.pre and distributions.
939
940           Removed the `_' from the start of the distribution names.
941           It is redundant.
942
943         * Added README.WIN32 for instructions to compile the Toolkit
944           under WIN32.
945
946 Mon Jul 23 10:12:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
947
948         * Fixed a double free in disconnection in the server.  Affected
949           file is silcd/server.c.
950
951         * Fixed the lib/silcske/groups.c to work now also with GMP
952           MP library.  The string conversion did not work when using
953           specific base and the base is indicated in the string as well.
954
955         * Created win32/ directory which now includes MSVC++ specific
956           stuff so that toolkit (DLLs) may be compiled with MSVC++.
957           It will appear only in the toolkit distribution
958
959 Sun Jul 22 19:40:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
960
961         * Changed the key material distribution function in case when
962           the hash output is too short.  The data is now concatenated
963           a bit differently than it used to.  Made the change to the
964           SKE protocol specification.
965
966         * Added better GMP detection to configure.in.pre.  A patch
967           by salo.
968
969 Fri Jul 20 13:16:00 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
970
971         * Fixed a minor bug in SKE that might cause some problem on
972           some platforms.  Affected file lib/silcske/silcske.c.
973
974         * Added the cookie checking for initiator in the SKE.  It checks
975           that the responder returns the sent cookie unmodified.  The
976           affected file is lib/silcske/silcske.c.  Added new SKE
977           error type INVALID_COOKIE that can be sent during the
978           negotiation.  Fixed some memory leaks as well.
979
980         * Added the "invalid cookie" error message to Irssi SILC client's
981           message formats.
982
983 Thu Jul 19 21:44:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
984
985         * Added `task_max' field to the SilcClientParams to indicate
986           the maximum tasks the scheduler can handle.  If set to zero,
987           default values are used.  Affected file lib/silcclient/silcapi.h.
988
989         * Fixed memory leaks in silc_client_close_connection.  Affected
990           file lib/silcclient/client.c.
991
992         * Added silc_client_del_client_entry to client library to free
993           all memory of given client entry.  Affected file is
994           lib/silcclient/idlist.[ch].
995
996         * Added new functions silc_client_del_channel and
997           silc_client_del_server to delete channel and server entries.
998           Affected file lib/silcclient/[silcapi.h/idlist.c].
999
1000         * Removed silc_client_del_client_by_id from silcapi.h.
1001
1002         * Fixed the INFO command to return the server's own info
1003           correctly when querying by Server ID.  Affected file is
1004           silcd/command.c.
1005
1006 Thu Jul 19 14:47:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1007
1008         * Removed the non-blocking settings in WIN32 code in the
1009           silc_sock_[read/write] and added SleepEx instead.  Affected
1010           file lib/silcutil/win32/silcwin32sockconn.c.  The availability
1011           of input data is now checked with FIONREAD and ioctlsocket.
1012
1013 Wed Jul 18 18:34:01 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1014
1015         * Call silc_schedule_task_del_by_context in the 
1016           silc_protocol_cancel instead of silc_schedule_task_del_by_callback.
1017           Affected file lib/silccore/silcprotocol.c.
1018
1019         * Call silc_protocol_cancel for active protocols in the
1020           silc_server_close_connection if the funtion
1021           silc_server_free_sock_user_data has not been called.
1022           Affected file silcd/server.c.
1023
1024         * Generic tasks cannot be deleted using the del_by_fd
1025           task deleting function since generic tasks does not match
1026           any specific fd.  Affected file lib/silcutil/silcschedule.[ch].
1027
1028         * Added a notion to SILCOPER help file that the SILCOPER works
1029           only on router server, not on normal server.
1030
1031 Wed Jul 18 09:40:04 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1032
1033         * Added for WIN32 support for the new scheduler as well.
1034           Affected file lib/silcutil/win32/silcwin32schedule.c.
1035
1036         * Fixed the SHA1 implementation to work on various platforms.
1037
1038 Tue Jul 17 23:04:10 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1039
1040         * Rewrote the SILC Scheduler entirely.  Removed the old SILC Task
1041           API.  It is part of the scheduler now.  Everything else is
1042           as previously but some functions has changed their names.
1043           Checkout the lib/silcutil/silcschedule.h for the interface.
1044           Updated all applications to use the new interface.  Affected
1045           files are lib/silcutil/silcschedule.[ch].
1046
1047 Tue Jul 17 16:53:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1048
1049         * Found a bug in the SKE implementation.  The HASH value,
1050           specified by the protocol, was not computed correctly.  The
1051           public key of the responder was not added to the computation
1052           even though it is mandatory.  Affected file lib/silcske/silcske.c.
1053           This unfortunately causes incompatibilities with older
1054           clients and servers.
1055
1056         * Added WIN32 specific network init and uninit functions:
1057           silc_net_win32_init and silc_net_win32_uninit to init and uninit
1058           the Winsock2.  Affected file lib/silcutil/silcnet.h and
1059           lib/silcutil/win32/silcwin32net.c.
1060
1061         * Set the socket always to nonblocking mode on WIN32 after
1062           reading data or writing data.  Affected file is
1063           lib/silcutil/win32/silcwin32sockconn.c.
1064
1065 Mon Jul 16 22:55:26 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1066
1067         * Fixed various compilation problems under WIN32.  Affected
1068           files lib/silcutil/win32/silcwin32thread.c and
1069           lib/silcutil/win32/silcwin32schedule.c.
1070
1071         * Removed all _internal.h #includes from public header
1072           files.  Internal headers must never be included from
1073           public headers.
1074
1075           Removed also the lib/silcske/payload_internal.h file.
1076
1077         * All include files that may be needed (public and some others
1078           included by the public headers) by application developers are
1079           now copied to the ./includes directory.  It does not copy any
1080           internal headers.  Affected file Makefile.defines.pre and all
1081           Makefile.am's under lib/ and subdirs.
1082
1083 Thu Jul 12 17:49:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1084
1085         * Do not change the ~/.silc directory's permissions automatically.
1086           Affected file irssi/src/silc/core/clientutil.c.
1087
1088 Thu Jul 12 10:18:40 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1089
1090         * Do not cancel the protocol in silc_server_close_connection
1091           it might cause recursion.  Now cancelled in the function
1092           silc_server_free_sock_user_data.  Affected file silcd/server.c.
1093
1094         * Fixed the silc_server_remove_clients_by_server to regenerate
1095           the channel keys correctly finally.  Added also new function
1096           silc_server_remove_clients_channels to actually do it.
1097           Affected file silcd/server.c.
1098
1099         * Fixed the silc_server_new_channel to not crash by giving
1100           wrong router to the new channel.  Affected file is
1101           silcd/packet_receive.c.
1102
1103 Wed Jul 11 18:31:57 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1104
1105         * Added SilcClientParams structure to the lib/silcclient/silcapi.h
1106           which is given as argument to the silc_client_alloc now.
1107           It can be used to configure the client and set various parameters
1108           that affect the function of the client.
1109
1110         * The USERS command in server did not check whether the channel
1111           is private or secret.  Affected file silcd/command.c.
1112
1113         * Added new argument to the USERS command in protocol specification.
1114           The USERS command now can take the channel name as argument
1115           as well.  Added support for this in client and server and
1116           updated the protocol specs.
1117
1118         * Completed the GETKEY command in client. It can be now used
1119           to fetch also servers public key not only some clients. 
1120           Affected files lib/silcclient/command[_reply].c.
1121
1122         * Added silc_client_get_server to return server entry by the
1123           server name.  Affected files lib/silcclient/silcapi.h and
1124           idlist.c.
1125
1126         * Redefined the IDENTIFY command in protocol specification to be
1127           more generic.  It now can be used to query information about
1128           any entity in the SILC Network, including clients, servers and
1129           channels.  The query may be based either the entity's name
1130           or the ID.  Added support for this in both client and server.
1131
1132           Affected files silcd/command.c and lib/silcclient/command.c
1133           and command_reply.c.
1134
1135         * Optimized the WHOIS and WHOWAS commands in the server. Removed
1136           the _from_client and _from_server functions.  Affected file
1137           silcd/command.c.
1138
1139         * Added silc_client_get_channel_by_id_resolve to the file
1140           lib/silcclient/silcapi.h to resolve channel information by
1141           its ID.  Added also silc_client_get_channel_by_id that
1142           does not resolve it from the server.
1143
1144 Tue Jul 10 18:05:38 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1145
1146         * Added SilcServerEntry context into the client library
1147           to represent one server.  The INFO command now allocates
1148           these to save the resolved server info.  For now on the
1149           client library will also keep information about servers,
1150           connected and resolved with INFO.
1151
1152           The INFO command now allocates the SilcServerEntry context
1153           and saves the server info there.  The COMMAND_REPLY in
1154           the INFO now returns the parameters to application in 
1155           same order as defined in the protocol specification.
1156
1157           The entries are cached in the client->server_cache.
1158
1159         * The INFO command is now issued after received the Client ID
1160           from the server.  Affected file lib/silcclient/client.c.
1161
1162         * The CMODE_CHANGE notify may now return also an SilcServerEntry
1163           to the application as the mode changer might be server.
1164           It is guaranteed that NULL is not returned anymore to the
1165           application.  Affected file lib/silcclient/client_notify.c.
1166
1167           The ID Type is now also passed to the application so that
1168           it can check whether the returned entry is SilcClientEntry
1169           or SilcServerEntry.
1170
1171           Added new function silc_client_get_server_by_id to return
1172           the server entry by ID.  Affected files are the
1173           lib/silcclient/silcapi.h and lib/silcclient/idlist.c.
1174
1175         * Do not create the channel in the Irssi SILC Client when issuing
1176           the JOIN command but when received the sucessful JOIN command
1177           reply.  Otherwise the channel might get created even though we
1178           could not join it.  The Affected file is
1179           irssi/src/silc/core/[silc-channels.c/client_ops.c].
1180
1181         * Fixed a channel joining bug in router.  The router must also
1182           check the channel modes, invite and ban lists etc. when serving
1183           the JOIN command sent by normal server.  Affected file is
1184           silcd/command.c.  The router now resolves the client's 
1185           information from the server who sent the JOIN command if it
1186           does not know it, and processes the JOIN command only after
1187           that.
1188
1189         * Changed the SilcCommandCb to take new argument; void *context2.
1190           Affected file lib/silccore/silccommand.h
1191
1192           The second argument in the command callbacks in the server now
1193           includes the SilcServerCommandReplyContext if the command was
1194           called as pending command callback from the command reply.
1195           Otherwise it is NULL. When called as pending the status of the
1196           command reply will be checked and if it was erronous the
1197           error will be sent to the original sender of the command.
1198           This way the client always receives the error messages even
1199           though the server was actually the one who received the error
1200           when it resent the command to router, for example.  Affected
1201           files silcd/command[_reply].[ch].
1202
1203         * Fixed sending WHOWAS command's error message to client if
1204           the requested client could not be found.  It was missing.
1205           silcd/command.c.
1206
1207         * Changed the CMODE and CUMODE commands reply arguments in the
1208           protocol specification.  The Channel ID is now sent in both
1209           of the commands to identify the channel.  Implemented this
1210           new feature to the client and server.  Affected files
1211           lib/silcclient/command_reply.c and silcd/command.c.
1212
1213         * Made better checks for invite and ban lists in the JOIN
1214           command in server.  Affected file silcd/command.c.
1215
1216 Mon Jul  9 18:28:34 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1217
1218         * The server now performs the incoming host IP/DNS lookup
1219           using the silc_socket_host_lookup and thus does not block
1220           the server anymore.  Affected file silcd/server.c.
1221
1222         * Completed the multi-thread support for SILC Scheduler in
1223           the lib/silcutil/silcschedule.c.
1224
1225         * Fixed the configure.in.pre to detect the pthread correctly
1226           on various systems.
1227
1228         * Fixed a deadlock in silc_task_queue_wakeup in the file
1229           lib/silcutil/silctask.c.
1230
1231 Mon Jul  9 13:40:03 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1232
1233         * Added new function silc_schedule_wakeup that is used in
1234           multi-threaded environment to wakeup the main thread's
1235           schduler. It needs to be used when a thread adds a new task
1236           or removes a task from task queues. After waking up, the
1237           scheduler will detect the task queue changes. If threads
1238           support is not compiled in this function has no effect.
1239           Implemented the wakeup mechanism to both Unix and WIN32
1240           systems.  Affected files are lib/silcutil/silcschedule.[ch],
1241           lib/silcutil/unix/silcunixschedule.c and the
1242           lib/silcutil/win32/silcwin32schedule.c.
1243
1244         * Added new function silc_task_queue_wakeup to wakeup the
1245           scheduler by the specified task queue.  Affected file
1246           lib/silcutil/silctask.[ch].
1247
1248         * The silc_socket_host_lookup_start now wakes up the scheduler
1249           after adding the timeout task.  Affected file is
1250           lib/silcutil/silcsockconn.c.
1251
1252         * The silc_socket_host_lookup is synchronous now if the threads
1253           support is not compiled in.  However, the callback is still
1254           called asyncronously through the scheduler, anyway.  Affected
1255           file lib/silcutil/silcsockconn.c.
1256
1257 Mon Jul  9 00:24:45 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1258
1259         * Added new function silc_socket_host_lookup to perform
1260           asynchronous IP and FQDN lookups for the socket connection.
1261           Affected files lib/silcutil/silcsockconn.[ch].
1262
1263 Sun Jul  8 18:44:53 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1264
1265         * Added SILC_MUTEX_DEFINE to define the mutex on environments
1266           that may or may not compile the mutex support in.
1267         
1268           Changed the silc_mutex_alloc interface. It allocates the
1269           mutex now to the sent pointer and returns TRUE or FALSE.
1270
1271           Affected file lib/silcutil/silcmutex.h.
1272
1273         * Wrote the SILC Task Queue interface to support multi-threads.
1274           Affected file lib/silcutil/silctask.[ch].
1275
1276         * Wrote the SILC Scheduler to support multi-threads.  Affected
1277           file lib/silcutil/silcschedule.c.
1278
1279 Sun Jul  8 11:16:01 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1280
1281         * Implemented the SILC Mutex API and SILC Thread API for WIN32
1282           in lib/silcutil/win32/.
1283
1284 Sun Jul  8 00:18:15 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1285
1286         * Defined SILC Mutex API and SILC Thread API and implemented
1287           them for Unix.  Affected files are
1288           lib/silcutil/silcmutex.h, lib/silcutil/silcthread.h,
1289           lib/silcutil/unix/silcunixmutex.c and
1290           lib/silcutil/unix/silcunixthread.c.
1291
1292 Sat Jul  7 14:40:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1293
1294         * Fixed the silc_server_remove_clients_by_server's channel
1295           key re-generation.  The hash table handling was incorrect
1296           and would not work with many channels.  Affected file is
1297           silcd/server.c.
1298
1299         * Fixed some memory leaks around the server code.
1300
1301         * Rewrote the silc_server_get_users_on_channel to support IPv6
1302           based Client ID's.  Affected file silcd/server.c.
1303
1304         * Defined the SILC_MESSAGE_FLAG_SIGNED to the protocol
1305           specification.  However, a separate document must be written
1306           to define the detailed signing procedure and the payload
1307           associated with the flag.  Defined the flag to the
1308           lib/silccore/silcchannel.h as well.
1309
1310 Fri Jul  6 18:26:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1311
1312         * Changed the dynamic tables to static size tables in the
1313           lib/silccrypt/silchmac.c.
1314
1315         * Removed GCC dependencies from the code.  A patch by cras.
1316
1317 Fri Jul  6 09:39:35 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1318
1319         * Do not show the error "Error receiving packet bla bla"
1320           in server if it really was not an error (-2 means that reading
1321           is pending).  Affected file silcd/server.c.
1322
1323 Thu Jul  5 21:22:32 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1324
1325         * Fixed a possible crash in silc_server_remove_clients_by_server
1326           in silcd/server.c.  Fixed there also some memory leaks.
1327
1328         * Fixed the silc_idlist_replace_client_id.  It could replace
1329           wrong key in the hash table.  Affected file silcd/idlist.c.
1330
1331         * Do not check whether there are global users on the channel
1332           if the channel->global_users is FALSE.  Affected functions
1333           silc_server_remove_from_one_channel and
1334           silc_server_remove_from_channels in silcd/server.c.  Also,
1335           do not check if the removed client is local as we can be
1336           sure that global client was not removed from the channel
1337           and checking for global users is not needed.
1338
1339         * The silc_server_remove_clients_by_server now re-generates
1340           the channel keys correctly for those channels that had
1341           clients removed from them.  Affected file silcd/server.c.
1342
1343 Tue Jul  3 11:39:20 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1344
1345         * Found the reason of random crashes in the server.  We weren't
1346           ignoring the SIGPIPE signal (which can be sent in write())
1347           and it crashed the server.  Affected file silcd/silcd.c.
1348
1349 Fri Jun 29 20:05:25 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1350
1351         * Assure that sock->user_data is not NULL in the function
1352           silc_server_packet_send in silcd/packet_send.c.
1353
1354         * Disconnect the remote connection if it could not be added
1355           to any ID lists in the server.  The affected file is
1356           silcd/server.c.
1357
1358         * Check in silc_server_packet_send[_real/dest] that the
1359           socket is not disconnecting and ignore the data if it is.
1360           Affected file silcd/packet_send.c.
1361
1362         * Define inline to __inline on native WIN32 compilation.
1363           Affected file includes/silcwin32.h.
1364
1365         * Added some explicit type casts for inline code since MSVC
1366           require them.  Affected files lib/silcutil/silcbuffer.h,
1367           lib/trq/silcdlist.h and lib/trq/silclist.h.
1368
1369         * Print warning in log files from now on if the packet
1370           decryption fails.  Affected file silcd/server.c.
1371
1372 Thu Jun 28 21:30:39 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1373
1374         * Changed the `say' client operation's interface to accept
1375           new `type' argument to indicate the type of the message sent
1376           by the library.  The application may filter the library's
1377           messages according the type.  The affected file is the
1378           lib/silcclient/silcapi.h.
1379
1380         * Added two new functions to lib/silcclient/silcapi.h:
1381           silc_client_del_client and silc_client_del_client_by_id.
1382           Affected file lib/silcclient/idlist.c.
1383
1384         * Moved the clientincludes.h from includes/ to silc/ and
1385           serverincludes.h from includes/ to silcd/.
1386
1387         * The modes for the CMODE and CUMODE are now passed as
1388           uint32 for application with COMMAND_REPLY.  The affected
1389           file is lib/silcclient/command_reply.c.
1390
1391 Wed Jun 27 22:24:47 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1392
1393         * /WHOIS without arguments shows client's own information.
1394           Affected file lib/silcclient/command.c.
1395
1396         * Changed PING to not accept any arguments.  The specs
1397           says that client can ping only the connected server so
1398           requiring an argument is not needed.  Affected file is
1399           lib/silcclient/command.c.
1400
1401 Wed Jun 27 00:10:33 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1402
1403         * Fixed a fatal bug in private message sending and reception
1404           encryption and decryption when using private message keys.
1405           The implementation was incorrect and did not follow the
1406           specification.  It causd that some of the message were
1407           lost since it did not use the sending and receiving keys
1408           as the protocol suggests.  This has been fixed and will cause
1409           incompatibilities with older clients when sending private
1410           message encrypted with private message keys.  Affected files
1411           lib/silcclient/client_prvmsg.c, lib/silcclient/client_keyagr.c
1412           and various other in Irssi SILC Client.
1413
1414           Added `responder' boolean argument to the functions
1415           silc_client_add_private_message_key[_ske] to indicate when
1416           the key is added as responder or initiator of the key
1417           negotiation.
1418
1419 Tue Jun 26 19:23:07 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1420
1421         * Removed the silc_ske_check_version function and created
1422           a SilcSKECheckVersion callback.  Added also a function
1423           silc_ske_set_callbacks that is now used to set all SKE
1424           callbacks.  The callback functions are not given to
1425           the SKE functions anymore, but this function is used to
1426           set the callbacks.
1427
1428         * Fixed the WIN32 DLL generation in lib/Makefile.am.pre.
1429
1430         * Added `silc_version' argument to the silc_client_alloc
1431           to define the version of the application for the library.
1432           The library will use the version string to compare it
1433           against the remote host's (usually a server) version
1434           string.  Affected file lib/silcclient/silcapi.h
1435
1436         * Added the KE protocol context to Key Agreement context
1437           in client library so that we can abort the SKE if it
1438           is in process when we get timeout.  Affected file is
1439           lib/silcclient/client_keyagr.c.
1440
1441         * Do not resolve the client ID forever if it returns in the
1442           first time that such client does not exist.  This was done
1443           for example with private message.  Affected file is
1444           lib/silcclient/client_prvmsg.c.
1445
1446 Mon Jun 25 21:42:51 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1447
1448         * Do not add regex.h for WIN32.  The affected file
1449           includes/silcincludes.h.
1450
1451         * Added WIN32 DLL generation to lib/Makefile.am.pre.  It might
1452           not work yet 100%.  It generates the DLL's automatically
1453           when compiling with --with-win32 under cygwin.
1454
1455 Sun Jun 24 19:49:23 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1456
1457         * lib/contrib/regex.c is not compiled on WIN32.
1458
1459         * Added silc_net_get_socket_opt function to the
1460           lib/silcutil/silcnet.h.
1461
1462         * Added includes/silcwin32.h for WIN32 specific includes
1463           and definitions.
1464
1465         * Do not use ptime structure or any of the posix process
1466           functions on WIN32 in lib/silccrypt/silrng.c.
1467
1468         * Added silc_gettimeofday to provide generic function
1469           for struct timeval on all platforms.  Added the function
1470           to lib/silcutil/silcutil.h.
1471
1472 Sun Jun 24 12:19:52 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1473
1474         * Moved the lib/silccore/silcsockconn.[ch] to the utility
1475           library as they clearly belong there.  As a plus side we
1476           can make the actual socket connection routines platform
1477           specific.
1478
1479           Added also new generic function silc_socket_read and
1480           silc_socket_write (that used to be silc_packet_[read/write].
1481           The implementation of these are platform specific.
1482
1483         * Added WIN32 specific routines of silc_socket_[read/write]
1484           to lib/silcutil/win32/silcwin32sockconn.c.
1485
1486 Sat Jun 23 16:01:00 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1487
1488         * Added preliminary support for native WIN32 compilation under
1489           cygwin (using the -mno-cygwin option for GCC) to the
1490           ./configure.in.pre.  The --with-win32 now prepares the
1491           compilation for native WIN32.
1492
1493         * Rewrote the SILC Scheduler interface in the file
1494           lib/silcutil/silcschedule.h.  The scheduler is now context
1495           based and does not have anymore any global static scheduler.
1496           Moved the Unix scheduler to the lib/silcutil/unix/ directory
1497           and created lib/silcutil/win32 directory for WIN32 based
1498           scheduler.
1499
1500         * Added Unix specific network routines to the
1501           lib/silcutil/unix/silcunixnet.c and the old
1502           lib/silcutil/silcnet.c includes now only generic routines.
1503
1504           Added WIN32 specific network routines to the
1505           lib/silcutil/win32/silcwin32net.c.
1506
1507         * Added Unix specific utility functions from the
1508           lib/silcutil/silcutil.c to lib/silcutil/unix/silcunixutil.c.
1509
1510         * Added WIN32 SILC Scheduler to the file
1511           lib/silcutil/win32/silcwin32schedule.c. The code is of course
1512           untested.
1513
1514 Fri Jun 22 10:44:14 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1515
1516         * Do not handle JOIN notify in the server if the target client
1517           is not registered (idata->registered == FALSE).  The affected
1518           file is silcd/packet_receive.c.
1519
1520         * Update the nickrec->founder in event_cumode in the Irssi SILC
1521           client.  Affected file irssi/src/silc/core/silc-channels.c.
1522
1523         * Fixed the CUMODE_CHANGE notify handling in the server when
1524           server and router are announcing their clients on channels.
1525           Now the mode changes are saved and notified correctly.  The
1526           affected file is /silcd/packet_receive.c.
1527
1528         * Fixed silc_idlit_replace_[server/client/channel]_id functions.
1529           They really did not replace the cache entry in the ID Cache.
1530           Now they do that.  Affected file silcd/idlist.c.
1531
1532         * Fixed the KICK notify handling in the Irssi SILC client to
1533           update the channel records so that the kicked client does not
1534           appear to be on the channel.  The affected file is 
1535           irssi/src/silc/core/silc-channels.c.
1536
1537         * Always update the conn->current_channel when executing command
1538           on a channel.  Affected file irssi/src/silc/core/silc-servers.c.
1539
1540         * Fixed the KILL notify handling in Irssi SILC client to remove
1541           the killed client on all channels.
1542
1543 Thu Jun 21 17:10:08 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
1544
1545         * Fixed the silc_parse_command_line to remove extra spaces
1546           from the start and end of the arguments.  Affected file is
1547           lib/silcutil/silcutil.c.
1548
1549         * Cancel and free any active protocol in the function
1550           silc_server_close_connection.  Affected file silcd/server.c.
1551
1552         * Cancel and free any active protocol in the function
1553           silc_client_close_connction.  Affected file is
1554           lib/silcclient/client.c.
1555
1556         * Do not execute the KILL command for clients that are in
1557           history (ie. they are not in the network).  Affected file is
1558           silcd/command.c.
1559
1560         * Fixed KILL notify handling, client does not crash anymore.
1561           Affected file irssi/src/silc/core/silc-channels.c.
1562
1563         * Reduced the default packet buffer size from 2048 to 1024 in   
1564           lib/silccore/silcpacket.c.
1565
1566         * Added SILC_SKE_STATUS_FREED SKE status type and a reference
1567           counter to the SKE context that is incresed when the SKE library
1568           performs async operation outside the library.  If the outside
1569           process frees the SKE context and FREED status will be set 
1570           and the library will detect after the sync operation that the
1571           libary is freed.  The affected files are
1572           lib/silcske/silcske[_status].[ch].
1573
1574         * Resolve the client entry information in the function
1575           silc_client_channel_message to assure that NULL pointer is not
1576           passed as client entry to the application. */
1577
1578         * Fixed the task timeout calculation to assure that there is
1579           never negative timeouts.  The affected file is 
1580           lib/silcutil/silcschedule.c.
1581
1582         * Fixed the channel user mode notification sending in server.
1583           It was sent point-to-point to the router (or to server by router)
1584           but it needs to be destined to a channel.  The routines now
1585           supports sending the channel user mode notifys to the channels
1586           when announcing clients and channels.  Affected files are
1587           silcd/server.c and silcd/packet_receive.c.
1588
1589         * Fixed the CHANNEL_CHANGE notify handling in the client libary.
1590           It did not actually replace the old channel entry in the cache.
1591           Affected file lib/silcclient/client_notify.c.
1592
1593 Tue Jun 19 22:10:36 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
1594
1595         * Fixed a possible crash in silc_packet_send_prepare.  It now
1596           assures always that there is enough space in the buffer and
1597           at the tail area of the buffer (for MAC). 
1598
1599           Fixed the inbound buffer reallocation in silc_packet_read.
1600           It was old code and did not handle the reallocation correctly.
1601           Affected
1602
1603           The affected file is lib/silccore/silcpacket.c.
1604
1605         * Fixed buffer overflow in silc_parse_nickname in the file
1606           lib/silcutil/silcutil.c.
1607
1608 Tue Jun 19 13:40:09 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
1609
1610         * make install generates new server keys only if there is not
1611           keys already.
1612
1613 Mon Jun 18 18:49:07 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
1614
1615         * Set SILC_MESSAGE_FLAG_NOREPLY when sending the away message.
1616           Added check that if the NOREPLY is set then we will not send
1617           the away message.  This avoids infinite loop of away messages
1618           if both clients are away.  The affected file is
1619           lib/silcclient/client_prvmsg.c.
1620
1621         * Fixed client crash if /NICK was given without arguments.
1622           Affected file lib/silcclient/command.c.
1623
1624         * Server does not send the invite list in INVITE command back
1625           to the client if the list was not altered.  Added this notion
1626           to the protocol spec as well.  Affected file silcd/command.c.
1627
1628           Fixed possible crash in INVITE command by checking the
1629           value of silc_server_get_client_route command.
1630
1631         * Fixed the INVITE notify type handling.  The arguments are now
1632           taken in correct order and client does not crash.  The affected
1633           file is irssi/src/silc/core/silc-channels.c.
1634
1635           Removed the "Inviting xxx to channel" message from the
1636           client library away and let the application handle it.
1637           Affected file lib/silcclient/command.c.  Added that message
1638           to Irssi SILC client's message formats.
1639
1640         * Fixed CMODE command crash in client.  It now checks the
1641           amount of arguments correctly and does not crash.  The affected
1642           file is lib/silcclient/command.c.
1643
1644         * Do not create new channel automatically in silc_channels_join
1645           but check whether the channel by that name already exists.
1646           Affected file irssi/silc/core/silc-channels.c.
1647
1648         * Do not send the SERVER_SIGNOFF to router if the disconnected
1649           entity was the router.  Affected file silcd/server.c.
1650
1651         * Added the handling of the SERVER_SIGNOFF notify to the Irssi
1652           SILC client as it was missing from there.
1653
1654           Added the handling of the KICK notify to the Irssi SILC client
1655           as it was missing.  Added "you have been kicked" message to
1656           Irssi SILC client's message modules formats.
1657
1658           Added the handing of the KILL notify to the Irssi SILC client
1659           as it was missing.  Added the kill message module formats 
1660           as well.
1661
1662           The affected file is irssi/src/silc/core/silc-channels.c.
1663
1664         * The router did not save the channel mode the server announced.
1665           Affected file silcd/packet_receive.c.
1666
1667         * Fixed a possible crash in INFO command in server.  If the
1668           server did not provide the server info it crashed.  Affected
1669           file silcd/command.c.
1670
1671 Sun Jun 17 15:26:05 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
1672
1673         * Fixed the GETKEY command in the server to check also the
1674           global list.  Otherwise the GETKEY would not work correctly
1675           in normal SILC server.  Affected file silcd/command.c.
1676
1677 Sat Jun 16 18:00:00 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
1678
1679         * Fixed GETKEY crash, it crashed if the command did not succseed.
1680
1681 Tue Jun 12 21:36:18 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
1682
1683         * Redefined the SILC MP API in lib/silcmath/silcmp.h. The API
1684           is now real and not just an macro interface to GMP.
1685
1686           Removed the entire GMP from the source tree and imported new
1687           NSS MPI library instead.  Reason for removing GMP is that it is
1688           extremely large and compiles extremely slow.  The NSS MPI
1689           is only a few files and compiles in less than 10 seconds.
1690           The speed is also about the same as GMP.  The MPI is imported
1691           to lib/silcmath/mpi.
1692
1693           If the system has GMP installed we will still use the GMP.
1694           If it is not then the NSS MPI will be compiled.
1695
1696 Mon Jun 11 18:07:24 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
1697
1698         * Merged a long nickname (127 characters long) crash bugfix from
1699           Irssi CVS tree.  Affected file irssi/src/core/misc.c.
1700
1701         * Merged a freed memory reference bugfix from Irssi CVS tree.
1702           Affected file irssi/src/core/commands.c.
1703
1704 Sun Jun 10 16:08:35 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
1705
1706         * Added the server's public key sving and verification to the
1707           server when performing the SKE.  This was missing and the
1708           remote server's (or router's) public key was accepted without
1709           checking whether we have it previously or trust it at all.
1710           Affected file silcd/protocol.c.
1711
1712 Sat Jun  9 20:17:30 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
1713
1714         * Check in the silc_server_timeout_remote if protocol is active
1715           and make sure that the protocol's final callback is called so
1716           that all memory if freed.  Affected file silcd/server.c.
1717
1718 Sat Jun  9 12:51:27 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
1719
1720         * silc_server_whois_send_reply crashed the server if the nickname
1721           was 127 characters long.  Affected file silcd/command.c.
1722
1723 Thu Jun  7 16:29:56 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
1724
1725         * Added sanity check to the silc_server_new_client. If the hostname
1726           is provided inside username then check that the provided hostname
1727           really is the same as the resolved one.  If the hostname was not
1728           resolved then check it from the public key.  Affected file is
1729           silcd/packet_receive.c.
1730
1731         * Fixed a fatal bug in Irssi SILC client. Do not send QUIT command
1732           if the server disconnected us and the connection is not valid
1733           anymore.  Affected file irssi/src/silc/core/silc-channels.c.
1734
1735         * Moved the silc_client_[chmode|chumode|chumode_char] away from
1736           the library to the lib/silcutil/silcutil.[ch].
1737
1738 Thu Jun  7 08:57:16 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
1739
1740         * Close log file after open.  Affected file 
1741           lib/silcutil/silclog.c.
1742
1743         * Check whether sock == NULL in silc_client_send_packet and return
1744           if it is.  Affected file lib/silcclient/silcclient.c.
1745
1746         * Check rec->entry == NULL in the Irssi SILC Client before
1747           sending the channel message.  Affecte file is
1748           irssi/src/silc/core/silc-servers.c.
1749
1750 Tue Jun  5 08:08:21 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
1751
1752         * Merged a splitted window bugfix from Irssi CVS tree.  The 
1753           affected file is irssi/src/fe-text/textbuffer-view.c.
1754
1755         * Fixed the ME, ACTION and NOTICE printing in Irssi Client.
1756           It did not print nickname.
1757
1758         * Improved the distributions system a bit.
1759
1760 Mon Jun  4 17:57:16 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
1761
1762         * Merged /WINDOW bugfix from irssi CVS tree. Affected file is
1763           irssi/src/fe-text/gui-window.c.
1764
1765         * Fixed a fatal bug in Irssi SILC client. Crashed if sent message
1766           to in-active server.  The affected file is
1767           irssi/src/silc/core/client_ops.c.
1768
1769         * Resolve the client in USERS command reply if the entry does
1770           not have username resolved.  The affected file is
1771           lib/silcclient/command_reply.c.  Also, changed the IDENTIFY
1772           command to WHOIS command to really resolve stuff.  The USERS
1773           is not used any more in any critical section so WHOIS can
1774           be used even though it might be slower than IDENTIFY.
1775
1776         * Changed the lib/silcutil/silchashtable.h header to ROBODoc
1777           format.
1778
1779 Sun Jun  3 14:21:32 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
1780
1781         * Changed the protocol API a bit more consistent in the
1782           lib/silccore/silcprotocol.[ch].
1783
1784         * Changed the following headers to ROBODoc format:
1785
1786                 lib/silccore/silcpayload.h
1787                 lib/silccore/silcprotocol.h
1788                 lib/silccore/silcsockconn.h
1789
1790           All core library headers are now formatted.
1791
1792 Sat Jun  2 10:45:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
1793
1794         * Fixed a bug in Irssi SILC client; do not show that you are
1795           server/router operator if you really are not.  Affected file is
1796           irssi/src/silc/core/client_ops.c.
1797
1798         * Renamed silc_command_free_payload to silc_command_payload_free.
1799           Affected file lib/silccore/silccommand.h
1800
1801         * Added silcmath.h to include the prototoypes of various routines
1802           in the lib/silcmath.  Removed the old modinv.h, mpbin.h and
1803           silcprimegen.h.
1804
1805         * Changed the following headers to ROBODoc format:
1806
1807                 lib/silccore/silcchannel.h
1808                 lib/silccore/silccommand.h
1809                 lib/silccore/silcid.h
1810                 lib/silccore/silcidcache.h
1811                 lib/silccore/silcmode.h
1812                 lib/silccore/silcnotify.h
1813                 lib/silccore/silcpacket.h
1814                 lib/silcmath/silcmath.h
1815
1816 Fri Jun  1 22:19:37 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
1817
1818         * Added checking to the server code not to start the server if
1819           ciphers and stuff are not configured properly.  Affected files
1820           silcd/serverconfig.[h] and silcd/server.c.
1821
1822         * Changed the layout of the header files of the public interfaces
1823           in the SILC libraries.  The new layout supports ROBODoc 
1824           documentation tool (and some others) so that it is easy to create
1825           a library reference manual.  All the other headers and source
1826           code must still follow the CodingStyle document.  Also source
1827           code must not include these ROBODoc stuffs, only the headers.
1828           Furthermore, all public interface headers must now be named
1829           by using `silc' prefix, example: silcapi.h, silccipher.h.
1830           Some files were renamed due to this.  All the other headers
1831           must not be used as public interfaces.  I will update the
1832           CodingStyle document later.  Changed following headers, so far:
1833
1834                 lib/silcclient/silcapi.h
1835                 lib/silccore/silcauth.h
1836                 lib/silccore/silcprivate.h
1837                 lib/silccrypt/silcdh.h
1838
1839 Fri Jun  1 10:28:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
1840
1841         * Updated TODO.
1842
1843         * Removed silc_client_packet_send_flush from the client library
1844           as it is not needed.  Affected file lib/silcclient/client.[ch].
1845
1846         * Added printing of message of unresolved authentication method
1847           to the Irssi SILC client.  Added it to the module formats.
1848           Removed the same message from the client library.
1849
1850 Thu May 31 13:57:33 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
1851
1852         * Added new distribution feature, DISTLABEL.  Every distribution
1853           can define own preprocessor label that can be used in the
1854           source code.  For example: #ifdef SILC_DIST_CLIENT.  Affected
1855           file distributions, acconfig.h.pre and prepare.
1856
1857 Tue May 29 22:16:40 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
1858
1859         * Added Makefile.defines_int to include the actual definitions
1860           for Makefile.defines.in.  Tested the new distribution system,
1861           created distributions and tested installation.
1862
1863         * Added AWAY message printing to the Irssi SILC client.  Added
1864           the messages to the irssi/src/fe-common/silc/module-formats.[ch].
1865
1866         * Added SCONNECT command to call the SILC's CONNECT command.
1867           Cannot use CONNECT directly since Irssi uses that internally.
1868           Affected file irssi/src/silc/core/silc-servers.c.
1869
1870           Added ACTION local command.  It is same as ME command but takes
1871           the channel as mandatory argument.
1872
1873           Rewrote some of the Irssi's help files to suite for SILC
1874           protocol.
1875
1876 Mon May 28 19:05:22 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
1877
1878         * Added Makefile.defines[.in] that should for now on be included
1879           in all Makefile.am file in the source tree.  That file includes
1880           all common compilation definitions for SILC source tree.
1881
1882 Mon May 28 10:30:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
1883
1884         * Minor changes to the ./prepare script to change the package
1885           name according the distribution name to the configure.in.
1886
1887 Sun May 27 22:24:57 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
1888
1889         * Created new distribution system.  Added file `distributions'
1890           that defines all the distributions that can be created out of
1891           the SILC source tree.  The ./prepare script now reads that
1892           file to determine how to prepare the distributions.  The
1893           first argument to the ./prepare is the name of the distribution
1894           and second is the version of the distribution.  If given
1895           without arguments it creates the default (toolkit) distribution
1896           with the default version (defined in ./prepare).
1897
1898           All Makefile.am files that are subject to the distributions
1899           are now named as Makefile.am.pre.  These are ./Makefile.am
1900           and lib/Makefile.am.  Others may be changed later.
1901
1902 Sun May 27 15:57:17 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
1903
1904         * Added invite list, ban list, some key management and connection
1905           error message printing to module formats in the Irssi SILC client.
1906
1907         * Added new silc_client_set_away_message to set the away message
1908           that is back to the person who sent private message.  The 
1909           affected file lib/silcclient/silcapi.h and the
1910           lib/silcclient/client_prvmsg.c.
1911
1912 Sun May 27 12:39:48 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
1913
1914         * Fixed the private message sending in the Irssi SILC client,
1915           added local command KEY to the Irssi SILC client.
1916
1917           Added key management and key agreement message formats to the
1918           irssi/src/fe-common/silc/module-formats.[ch].
1919
1920           Added USERS (alias WHO) printing, server/router operator
1921           indication and LIST command printing to the module formats.
1922
1923 Sat May 26 17:43:42 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
1924
1925         * Fixed channel joining notify handling, cumode notify handling
1926           from Irssi SILC client.
1927
1928         * Added SILC specific module-formats to the Irssi SILC client so
1929           that SILC specific message hilighting, colors etc is possible.
1930           Affected file irssi/src/fe-common/silc/module-formats.[ch].
1931
1932           Added channel mode, channel user mode, actions, notices,
1933           whois and whowas printing to the the module-formats.c.
1934
1935         * Fixed a bug in channel deletion in the server.  The channel
1936           is not left to the cache even if the channel founder auth mode
1937           is set when there are no users anymore on the channel.  Affected
1938           file silcd/server.c.
1939
1940         * The silc_net_localhost now resolves the entire hostname including
1941           the domain name.  Affected file lib/silcutil/silcnet.c.
1942
1943 Sat May 26 12:13:37 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
1944
1945         * Changed the ask_passphrase client operation to be ascynchronous.
1946           It has now a completion callback and a context that the 
1947           application must call after it has got the passphrase from
1948           the user.  Affected files lib/silcclient/silcapi.h,
1949           lib/silcclient/protocol.c, lib/silcclient/command.c and
1950           silc/client_ops.c.
1951
1952           Added SilcAskPassphrase callback that the application calls
1953           to deliver the passphrase to the library.
1954
1955         * Changed the SKE protocol's SilcSKEVerifyCb to be asynchronous.
1956           The public key verification and especially a certificate
1957           verification is asynchronous procedure.
1958
1959           Added new SILC_SKE_STATUS_PENDING status to indicate the
1960           request is pending and a callback will be called to finalize
1961           the request.
1962
1963           Added also SILC_SKE_STATUS_PUBLIC_KEY_NOT_PROVIDED status to
1964           indicate that remote end did not send its public key (or
1965           certificate), even though we require it.  Added check for this
1966           condition in the SKE.  This was a security bug, now fixed.
1967
1968           Defined new SilcSKEVerifyCbCompletion callback that is called
1969           when the verification process is completed.
1970
1971           The affected files lib/silcske/silcske_status.h and
1972           lib/silcske/silcske.[ch].
1973
1974         * Changed the verify_public_key client operation to be async
1975           as well.  Defined SilcVerifyPublicKey callback that is used to
1976           indicate the success of the public key verification process.
1977
1978           Changed the server and client to use the new async client 
1979           operations.
1980
1981         * Changed the Irssi SILC client's internal scheduler to be called
1982           twice as many times as it used to be.  As a result the client
1983           should be a bit faster now.  Affected file is
1984           irssi/src/silc/core/silc-core.c.
1985
1986         * Added support to Irssi SILC client of asynchronous public key
1987           verification and passphrase inquiry.  Affected file is
1988           irssi/src/silc/core/silc-core.c.
1989
1990 Fri May 25 14:38:38 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
1991
1992         * Do not say "You have left channel %s" in client library.
1993           Moved it to the application.  Affected files are
1994           lib/silcclient/command.c and silc/client_ops.c.
1995
1996         * Fixed silc_client_get_clients.  Command context was not
1997           duplicated and was freed memory in the callback.  Affected
1998           file lib/silcclient/idlist.c.
1999
2000         * Do not say "you are now talking..." on JOIN command in the
2001           client library.  The appliation must handle it.
2002
2003         * Do not say ".. changed topic to" in command reply in the
2004           client libary.  The application must handle it.
2005
2006         * Fixed TOPIC command sending in the client library.
2007
2008         * Fixed a memory leak in silc_client_command_free in the file
2009           lib/silcclient/command.c.
2010
2011 Thu May 24 19:08:55 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2012
2013         * Imported a modified version of Irssi client to the source tree.
2014           The Irssi will be used to create a new client called
2015           Irssi SILC.  Imported to irssi/.
2016
2017           Added silc_core_init_finish function to the Irssi.  Affected
2018           file irssi/configure.in.
2019
2020           A lot changes in the Makefile.ams around the irssi tree.
2021
2022 Tue May 22 22:23:49 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2023
2024         * Do not rehash if the new size is same as the old size of the
2025           hash table, in the silc_hash_table_rehash*.  The affected file
2026           lib/silcutil/silchashtable.c.
2027
2028         * Replaced hash_table_del_by_context calls from the server
2029           (when channel->user_list and client->channels) to the
2030           hash_table_del as it is sufficient and faster.
2031
2032 Tue May 22 17:27:16 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2033
2034         * Added silc_hash_table_list, silc_hash_table_get and the
2035           SilcHashTableList structure to provide an alternative way to
2036           traverse the hash table.  The affected files are
2037           lib/silcutil/silchashtable.[ch].
2038
2039         * Changed the server's idlist routines to use the hash table
2040           routines to optimize the code.
2041
2042 Mon May 21 21:46:20 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2043
2044         * Replaced the client entry's `channel' list and channel entry's
2045           `user_list' list to hash tables for optimized lookup.  Changed
2046           the code to use the hash table interface around the code. 
2047           Affected file lib/silcd/idlist.[ch].
2048
2049         * Added `auto_rehash' boolean argument to the function
2050           silc_hash_table_alloc to indicate whether the hash table should
2051           auto-rehash when it thinks is appropriate time.  It will
2052           increase the hash table size if the there is twice as much
2053           entries in the table than the size of the table, and will
2054           decrease the size if there are twice as less entries than
2055           the size of the table.
2056
2057 Mon May 21 09:51:11 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2058
2059         * Fixed silc_xxx_get_supported to not crash at some circumstances.
2060
2061 Sun May 20 13:45:58 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2062
2063         * silc_idcache_purge_by_context deletes the entry now by context
2064           as it is supposed to do.  Affected file lib/silccore/idcache.c.
2065
2066         * Send the ERR_NO_SUCH_NICK in the WHOIS command reply if the
2067           client is not anymore valid (WHOWAS givens the info) and not
2068           the ERR_NO_SUCH_CLIENT_ID if the nickname still exists.
2069
2070 Sat May 19 16:30:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2071
2072         * Removed the `data' and `data_len' arguments from the ID Cache
2073           interfaces and added `name' argument.  ID Cache does not handle
2074           anymore the binary data only a names associated with given ID.
2075
2076         * When hashing a Client ID with silc_hash_id the entire ID is
2077           not hashed anymore, instead only the hash of the Client ID is
2078           hashed.  This way we can access the Client ID from the cache
2079           with Client ID but with the hash of the ID (which is a hash of
2080           the nickname) as well without any difference in performance.
2081
2082           Added also silc_idcache_find_by_id_one_ext to do one on one 
2083           searching when we have the actual ID.  Added also function
2084           silc_hash_client_id_compare.  The affected files are
2085           lib/silccore/idcache.[ch] and lib/silcutil/silcutil.[ch].
2086
2087         * When hashing the name associated with a ID it is always done
2088           in lowercase.  This way we can access the cache without worrying
2089           about case-sensitivity, even though, for example nicknames are
2090           case sensitive.
2091
2092         * Fixed a bug in server with channel message sending.  It put
2093           wrong ID type as destination ID.  The affected file 
2094           silcd/packet_send.c.
2095
2096         * silc_idcache_del_by_context now deletes from all hash tables
2097           by context.  Affected file lib/silccore/idcache.c.
2098
2099 Fri May 18 17:42:00 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2100
2101         * Changed the client library to use the new ID Cache interface.
2102           Changes around the source tree.
2103
2104         * Added silc_hash_table_rehash_ext to rehash with specific
2105           hash function.  Affected file lib/silcutil/silchashtable.[ch].
2106
2107         * Added silc_hash_string_compare to compare two strings in the
2108           hash table.  Affected file lib/silcutil/silcutil.[ch].
2109
2110 Fri May 18 11:18:45 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2111
2112         * Added new function silc_idcache_del_by_context into the
2113           lib/silccore/idcache.[ch].
2114
2115         * Changed the server's ID list routines to use the new ID Cache
2116           interface.  Changes around the source tree.
2117
2118 Fri May 18 08:35:31 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2119
2120         * Added silc_hash_table_del[_by_context]_ext functions in to the
2121           lib/silcutil/silchashtable.[ch].
2122
2123           Removed silc_hash_table_find_all* routines and added new
2124           silc_hash_table_find_foreach to replace them.
2125
2126           Added silc_hash_table_replace_ext function as extended
2127           replacing function.  Separated the simple hash table interface
2128           from the extended hash table interface in the file
2129           lib/silcutil/silchashtable.h.
2130
2131         * Fixed minor bugs and changed it to use some of the new
2132           hash table functions in lib/silccore/idcache.c
2133
2134 Thu May 17 18:15:12 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2135
2136         * Added new function silc_hash_table_find_all to return all keys
2137           in the hash table by the specified key.  As the hash table is
2138           collision resistant it also makes it possible to have several
2139           duplicate keys in the hash table.  This function may be used to
2140           find all of the keys from the hash.
2141
2142           Added user_context arguments to the SilcHashFunction,
2143           SilcHashCompare and SilcHashDestructor to deliver user specified
2144           context.
2145
2146           Added new fuctions silc_hash_table_find[_all]_ext to do
2147           extended lookup with specified hash and compare functions and
2148           specified user contexts.
2149
2150           Added new function silc_hash_table_add_ext to add the key
2151           with specified hash function and user context.
2152
2153           Added new function silc_hash_table_foreach to traverse all
2154           entrys in the hash table.  Added SilcHashForeach callback
2155           function.
2156
2157           Added new function silc_hash_table_del_by_context to delete
2158           the entry only if the context associated with the key matches.
2159
2160           Affected files are lib/silcutil/silchashtable.[ch].
2161
2162         * Removed silc_hash_[server/client/channel]_id and added just
2163           silc_hash_id to the lib/silcutil/silcutil.[ch].  Added also
2164           silc_hash_id_compare to compare two ID's using as the hash table
2165           comparison function.  Added also silc_hash_data to hash
2166           binary data and silc_hash_data_compare to compare it.
2167
2168         * Removed silc_idlist_find_client_by_hash as it is not needed
2169           anymore.  Affected file silcd/idlist.[ch].
2170
2171         * Rewrote the entire ID Cache system (in lib/silccore/idcache.[ch])
2172           to use internally the SilcHashTable.  The new ID Cache is a lot
2173           faster than the old one.  Some of the ID Cache interface was also
2174           rewritten and obsolete and stupid functions were removed.
2175
2176 Wed May 16 23:03:30 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2177
2178         * Added entry_count field to the SilcHashTable to keep the number
2179           of the entries in the table.  Implemented the function
2180           silc_hash_table_rehash.  Added new function
2181           silc_hash_table_count.  Affected file lib/silcutil/silchashtable.c.
2182
2183           Fixed a minor bug in silc_hash_table_free.
2184
2185         * Added silc_hash_string, silc_hash_uint, silc_hash_ptr,
2186           silc_hash_client_id, silc_hash_server_id and silc_hash_channel_id
2187           into the lib/silcutil/silcutil.[ch].
2188
2189 Wed May 16 20:02:47 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2190
2191         * Implemented a collision resistant hash table into the
2192           lib/silcutil/silchashtable[ch].  See the header and the source
2193           for the SilcHashTable API.
2194
2195 Tue May 15 22:05:46 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2196
2197         * Merged dotconf version 1.0.2 into lib/dotconf.
2198
2199 Sun May 13 19:32:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2200
2201         * Do not compile anything in lib/silcsim/* if the SIM support
2202           is not enabled.  The tree should now compile without problems
2203           under cygwin.
2204
2205 Thu May 10 22:49:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2206
2207         * Compiled the SILC under cygwin.  Compiled and tested briefly
2208           without problems.  More tests needed.  The SIMs didn't compile
2209           though.
2210
2211         * Added various #ifdef HAVE_* stuff to lib/silccrypt/silrng.c.
2212
2213         * Fixed possible crash in silc_get_username in the
2214           lib/silcutil/silcutil.c.
2215
2216 Tue May  8 09:04:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2217
2218         * Fixed a va_arg in silc/client_ops.c.
2219
2220         * Oops, RC5 routines were named AES and caused some problems
2221           when not using SIM's.  Affected file lib/silccrypt/rc5.c.
2222
2223 Sun May  6 13:59:48 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2224
2225         * Added new SilcIDIP structure into the lib/silccore/id.h and
2226           replaced the old `ip' fields from all SILC ID's to that type.
2227           This is a step towards IPv6 support.
2228
2229           The silc_id_get_len takes now the ID as an extra argument.
2230           The silc_id_id2str, silc_id_str2id and silc_id_dup now supports
2231           both IPv4 and IPv6 based ID's.
2232
2233           The affected files are lib/silccore/id.[ch] and other files
2234           around the tree using these routines.
2235
2236         * Removed the ID length arguments in server from various 
2237           silc_server_send_notify_* routines -> they are not needed 
2238           anymore.
2239
2240 Sat May  5 13:56:33 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2241
2242         * Fixed memory leak in silc_encode_pem_file in the file
2243           lib/silcutil/silcutil.c.
2244
2245 Thu May  3 21:23:50 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2246
2247         * Check minor version as well in the SKE.  Affected files are
2248           silcd/protocol.c and lib/silcclient/protocol.c.
2249
2250         * Added --identifier option to the server so that an identifier
2251           can be when creating the public key for the server.  Affected
2252           file is silcd/silcd.c.
2253
2254         * Fixed minor decoding bug in silc_pkcs_decode_identifier in
2255           lib/silccrypt/silcpkcs.c.
2256
2257 Wed May  2 20:50:49 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2258
2259         * Register default ciphers and stuff when using -C option with
2260           the server.  Affected file sildc/silcd.c.
2261
2262         * Put back the servers public key filename format, it is better
2263           than the new one.  For now, the client keys are saved with the
2264           new filename format.  The affected file silc/client_ops.c.
2265
2266         * Implemented the Cipher API for the rest of the ciphers that
2267           did not implement it or implemented it the wrong way.
2268
2269 Wed May  2 13:31:26 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2270
2271         * Register default ciphers and stuff when using the -S option
2272           in the client.  Affected file silc/silc.c.  Same also when
2273           creating new key pair with -C option.
2274
2275 Tue May  1 14:18:13 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2276
2277         * Fixed the silc_verify_public_key client operation function to
2278           save the public keys differently.  The fingerprint is now 
2279           used as filename and not the hostname.  This way also the
2280           client keys are saved uniquely and not with hostnames.  The
2281           affected file is silc/client_ops.c.
2282
2283         * Trimmed the silc_hash_fingerprint function to remove extra
2284           whitespaces from the end of the fingerprint.  The affected
2285           file is lib/silccrypt/silchash.c.
2286
2287         * Updated TODO.
2288
2289         * Added silc_cipher_register_default function to register all
2290           default ciphers.  It can be used when configuration files
2291           does not exist and the application does not want any specific
2292           ciphers in any specific order.
2293
2294           The SilcDList is now used as silc_cipher_list dynamically
2295           allocated cipher list.  Removed the static list all together
2296           and now all ciphers must be allocated to the dynamic list.
2297           The silc_cipher_alloc routine was changed to check only the
2298           dynamic list.
2299
2300           All silc_cipher_* routines that used to return int returns
2301           now bool.
2302
2303           The affected files lib/silccrypt/silccrypt.[ch].
2304
2305         * The same thing was done to silc_hash_* as for silc_cipher_*
2306           routines.  Affected files lib/silccrypt/silchash.[ch].
2307
2308         * The same thing was done to silc_pkcs_* as for silc_cipher_*
2309           routines.  Affected files lib/silccrypt/silcpkcs.[ch].
2310           Added also silc_pkcs_[un]register[_default] functions.
2311           Removed the data_context from the PKCS API.
2312
2313         * Added silc_hmac_register_default function to register default
2314           hmacs.  Affected files lib/silccrypt/silchmac.[ch].  Added also
2315           SILC_ALL_HMACS macro that can be used with silc_hmac_unregister
2316           to unregister all hmacs at once.
2317
2318         * Register the default ciphers, hash functions, PKCSs and HMACs
2319           if client's configuration file does not exist.  The affected
2320           file silc/silc.c.
2321
2322         * The client did not load the hash functions from the SIM
2323           modules at all.  Added support for this.  Affected file is
2324           silc/clientconfig.c.
2325
2326         * When decoding public key with silc_pkcs_public_key_decode, check
2327           the supported algorithm only if PKCS are registered.  Affected
2328           file lib/silccrypt/silcpkcs.c.  The same was done with the
2329           silc_pkcs_private_key_decode.
2330
2331         * Fixed the SILC List routines to keep the list always in order.
2332           It used to change the list's order when traversing the list but
2333           not it preserves the order.  Affected file lib/trq/silclist.h.
2334
2335 Mon Apr 30 17:29:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2336
2337         * Added the client library to use the SilcSocketConnection's
2338           reference counter (by silc_socket_dup) to prevent the bug that
2339           the socket object may be freed underneath async operation.
2340
2341         * The name resolv library checking fixes in the configure.in.pre.
2342           The patch by salo.
2343
2344         * Created new version of the protocol drafts for future
2345           development. The -03 drafts are the ones that will be changed
2346           in the trunk now and the -02 will remain as they are.
2347
2348         * Send list of CUMODE notifys to the router when announcing
2349           the channel users to the router.  Affected file silcd/server.c.
2350           If the router receiving channel founder CUMODE for a channel
2351           that already has channel founder it will send CUMODE notify
2352           to the sender to remove the channel founder rights from the
2353           announced client.  Affected file silcd/packet_receive.c.
2354
2355         * The CUMODE notify may now use Server ID as well as the entity
2356           who changes the mode.  Updated protocool specs.
2357
2358         * Updated INSTALL and README files.
2359
2360 Sun Apr 29 23:17:50 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2361
2362         * New web pages in the http://silc.pspt.fi.  The pages was
2363           designed by salo.
2364
2365         * Updated CREDITS.
2366
2367 Sun Apr 29 13:33:41 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2368
2369         * Implemented the [DenyConnectin] config section in the server.
2370           Added silc_server_config_denied_conn to check whether incoming
2371           connection is denied.  Affected file silcd/serverconfig.[ch].
2372
2373         * Do not check the ports when checking the incoming configuration
2374           data if the port is 0, meaning any.  Affected file is
2375           silcd/serverconfig.c.
2376
2377 Fri Apr 20 18:58:43 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2378
2379         * Fixed buffer overflow in silc_string_compare in the file
2380           lib/silcutil/silcutil.c.
2381
2382         * Fixed double free in silc_server_command_leave in the file
2383           silcd/command.c.
2384
2385 Fri Apr 20 14:00:11 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2386
2387         * Fixed the version checking in the server.  Affected file is
2388           silcd/protocol.c.
2389
2390 Thu Apr 19 19:52:46 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2391
2392         * Fixed the configuration data fetching when accepting new
2393           connections in the server.  Affected file silcd/server.c.
2394
2395 Thu Apr 19 11:40:20 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2396
2397         * Added `sender_entry' argument to the function
2398           silc_server_packet_relay_to_channel so that we can check
2399           whether some destination actually belongs to the same route
2400           the sender belongs (ie, we must not resend the packet to the
2401           sender).  Affected file silcd/packet_send.[ch].
2402
2403         * Added `servername' field to the SilcClientEntry in the server
2404           to hold the name of the server where client is from.  Affected
2405           file is silcd/idlist.h.
2406
2407 Wed Apr 18 22:19:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2408
2409         * Moved the channel message encrypting in the router betwen
2410           router connections from silc_server_channel_message to the
2411           silc_server_packet_relay_to_channel since we want to check
2412           whether we have anybody channel before encrypting anything.
2413           Affected files silcd/packet_[receive/send].c.
2414
2415 Tue Apr 17 21:18:19 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2416
2417         * Fixed the [AdminConnection] server config section to support
2418           multiple entries.  Affected file silcd/serverconfig.c.
2419
2420         * Added support into the server to check the validity of the
2421           incoming connection before executing any KE or authentication
2422           protocols.
2423
2424         * The connection configuration is now saved to the KE and 
2425           connection auth protocol contexts and not fetched anymore in 
2426           the protocol.  Affected files silcd/server.c, silcd/protocol.[ch].
2427
2428         * The local hosts listenning address and port is also resolved
2429           now when starting the server.  We want to have the socket object
2430           to include the real address and port for the listener.  Added
2431           new function silc_net_check_local_by_sock into the files
2432           lib/silcutil/silcnet.[ch].
2433
2434         * Fixed a broadcast bug in server -> do not broadcast if we
2435           are standalone.
2436
2437         * Fixed a routing bug.  Do not route broadcast packets ever.
2438           Broadcast packets must be processed always and not routed since
2439           they may be destined to some other host than yourself and thus
2440           would get routed without no good reason.  Affected file is
2441           silcd/server.c.
2442
2443         * Added function silc_server_config_is_primary_route to check
2444           whether primary router connection has been configured (a router
2445           configuration that we are initiating).  If there is not, we 
2446           will assume that there is only two routers in the SILC network
2447           and we will use the incoming router connection as our primary
2448           route.  Affected files silcd/serverconfig.[ch], silcd/server.c.
2449
2450         * Changed the order of the broadcasting.  Broadcast _after_ the
2451           packet has been processed not before.  Affected file is
2452           silcd/server.c.
2453
2454         * Fixed a [ClientConnection] parsing bug.  The port was never
2455           parsed correctly thus resulting to port 0.  Affected file
2456           silcd/serverconfig.c.
2457
2458         * Fixed silc_server_send_notify_args -> it ignored the `broadcast'
2459           argument and did not set the broadcast packet flag.  Affected
2460           file silcd/packet_send.c.  Fixed same bug in the function
2461           silc_server_send_notify as well.
2462
2463         * If we receive NEW_ID packet for our own ID in the server, ignore
2464           the packet.
2465
2466 Mon Apr 16 12:10:33 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2467
2468         * Updated TODO.
2469
2470         * Removed the nickname from the Private Message Payload.
2471           Updated the code and the protocol specs.
2472
2473         * Updated protocol specs for submitting to the IETF.
2474
2475         * Tweaked the Random Number Generator a bit.  Affected file
2476           lib/silccrypt/silcrng.c.  Exported a new function
2477           silc_rng_[global]_add_noise which can be used to add more
2478           noise to the RNG.
2479
2480 Sat Apr 14 16:21:32 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2481
2482         * Do not parse packets with different timeout when protocol
2483           is active -> may cause problem with rekey.  Affected file
2484           silcd/server.c.
2485
2486         * When server receives signoff notify it must not create
2487           new channel key if the client is on any channels since the
2488           sender of the signoff notify will create it.
2489
2490 Fri Apr 13 17:12:46 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2491
2492         * Added printing of error messages during SKE protocol from the
2493           failure packet sent by server during SKE.  Affected file
2494           silc/client_ops.c.
2495
2496         * Removed the client's failure_callback handling with timeout
2497           and handle it immediately when received.
2498
2499         * The SKE library returned wrong type in SUCCESS and FAILURE 
2500           packets.  They must be 32 bit MSB not 16 bit MSB.
2501
2502 Fri Apr 13 00:09:08 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2503
2504         * Ok, rewrote the logic of the re-key and now it seems to work.
2505           I tested it on high traffic with frequent re-keys without
2506           problems.  Added hmac_receive (and renamed hmac to hmac_send)
2507           in SilcClientConnection in lib/silcclient/client.h and
2508           in SilcIDListData in silcd/idlist.h.  Also, removed the
2509           SilcPacketParserContext's cipher and hmac fields as they are
2510           not needed anymore and actually caused some problems when
2511           the ciphers and hmac's changed underneath the packet parser.
2512
2513 Thu Apr 12 14:42:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2514
2515         * If re-key protocol is active then process the incoming packets
2516           synchronously since we must assure that icoming packets encrypted
2517           with the old key is processed before the new keys is set to
2518           use.  This is true other packets than for REKEY packets.
2519           Affected file silcd/server.c.  The same was done to client library
2520           as well, affected file lib/silcclient/client.c.
2521
2522 Thu Apr 12 12:01:52 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2523
2524         * Fixed bug in client and server to accept the force send if
2525           the packet is send from silc_[server/client]_packet_process
2526           function.  Otherwise the packets are never delivered, oops.
2527
2528 Wed Apr 11 22:10:15 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2529
2530         * Disable force sending of packets when REKEY protocol is active.
2531           We must assure that no packet is sent directly when rekey is
2532           performed.  All packets must be sent through packet queue.
2533           Added macro SILC_SERVER_IS_REKEY to silcd/server.h and
2534           SILC_CLIENT_IS_REKEY to lib/silcclient/client.h.  Affected
2535           function is silc_[server/client]_packet_send_real to check
2536           the situation.
2537
2538         * Replaced the SIM paths from example config files to 
2539           /usr/local/modules.  Also, make install creates now
2540           /usr/local/silc/logs directory to hold all the SILC server
2541           logs.
2542
2543 Wed Apr 11 16:59:59 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2544
2545         * Made the configure.in.pre work on Solaris.  Patch by salo.
2546
2547         * Made all ciphers compatible with non-x86 machines.  Defined
2548           CBC mode macros into lib/silccrypt/ciphers_def.h.
2549
2550 Tue Apr 10 20:32:44 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2551
2552         * Fixed the make install.
2553
2554 Tue Apr 10 16:20:34 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2555
2556         * When MAC computation fails the silc_packet_decrypt returned 0
2557           even though it was supposed to return -1.  Fixed this.  The
2558           affected file is lib/silccore/silcpacket.c.
2559
2560         * Do not replace the config files in /etc/silc (in make install)
2561           if they already exist.  Affected file ./Makefile.am.
2562
2563         * Do not send re-key packets immediately but through packet queue.
2564           Affected file silcd/protocol.c and lib/silcclient/protocol.c.
2565
2566         * Changed silc_net_check_host_by_sock to return FALSE if the
2567           IP/DNS could not be resolved.  Though, it returns the IP address
2568           now even if it could not resolve it (but returns also FALSE).
2569           Affected file lib/silcutil/silcnet.[ch].
2570
2571 Mon Apr  9 21:54:44 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2572
2573         * Added silc_pkcs_decode_identifier to decode the public key's
2574           identifier.  Affected file lib/silccrypt/silpkcs.[ch].
2575           Added also silc_pkcs_free_identifier.  Added also new context
2576           SilcPublicKeyIdentifier.
2577
2578         * Added -S option to the silc client.  It is used to dump the
2579           contents of the specified public key file.
2580
2581         * Changed the PKCS api to return the public key length when
2582           setting the public key.
2583
2584         * Fixed a fatal bug in the public and private key file loading.
2585           Affected file lib/silccrypt/silcpkcs.c.
2586
2587         * Execute the packet parsing for client with zero (0) timeout
2588           if the protocol is active.  Affected file silcd/server.c.
2589
2590 Sun Apr  8 19:30:56 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2591
2592         * Made the key generation options to the silcd program.  Added
2593           -C option, equivalent to client's option.
2594
2595         * Added new [ServerKeys] config section to the server.  It
2596           configures the server's public and private key.
2597
2598         * Defined generic Public Key Payload into the protocol
2599           specification to send specific type of public keys and
2600           certificates.
2601
2602         * Defined new command SILC_COMMAND_GETKEY to fetch a client's
2603           public key or certificate.
2604
2605         * Implemented the GETKEY command to the server and to the
2606           client library and on user interface.
2607
2608 Sun Apr  8 01:37:21 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2609
2610         * Made preliminary `make install' work.
2611
2612 Thu Apr  5 17:42:30 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2613
2614         * Added SilcServerRekey context into silcd/idlist.h.
2615
2616         * Added the PFS support as defined in the specification to the
2617           SKE protocol.  Affected files lib/silcske/*.c.
2618
2619         * Added `ske_group' field to the SilcServerRekey context to hold
2620           the number of the SKE group that is used with PFS in re-key.
2621           Affected file silcd/idlist.h.
2622
2623         * Added PFS re-key support to the server.  Affected file is
2624           silcd/protocol.c.
2625
2626         * Added silc_protocol_cancel to cancel execution of the next
2627           state of the protocol.  Affected file is
2628           lib/silccore/silcprotocol.[ch].
2629
2630         * Added the re-key support with and without PFS to the client
2631           library.  Re-key is performed once in an hour, by default.
2632
2633           Added new protocol type SILC_PROTOCOL_CLIENT_REKEY.
2634           Added silc_client_rekey_callback and silc_client_rekey_final.
2635           Affected files are lib/silcclient/protocol.[ch] and
2636           lib/silcclient/client.[ch].
2637
2638         * Removed the `hmac_key' and `hmac_key_len' fields from the
2639           SilcClientConnection structure; not needed.  Affected file is
2640           lib/silcclient/client.h.
2641
2642         * Updated TODO.
2643
2644 Wed Apr  4 16:32:31 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2645
2646         * Do not ask whether user wants to use the negotiated private key
2647           for private messages, just use it.  Affected file is 
2648           silc/local_command.c.
2649
2650         * Added `send_enc_key' and `enc_key_len' fields to the 
2651           SilcIDListData structure since they are needed in the re-key
2652           phase.  Affected file is silcd/idlist.[ch].
2653
2654         * Implemented the simple re-key protocol into the server.
2655           Affected files silcd/server.c and silcd/protocol.[ch].  The
2656           re-key will be performed once in an hour, by default.
2657
2658           Added new protocol type SILC_PROTOCOL_SERVER_REKEY.
2659           Added silc_server_rekey, silc_server_rekey_callback and
2660           silc_server_rekey_final.
2661
2662         * Removed Tunneled flag from the protocol.  Updated the code
2663           and the specifications.
2664
2665         * Adde `pfs' field to the SilcIDListData to indicate whether
2666           the PFS is to be performed in the re-key.  Affected file is
2667           silcd/idlist.h.
2668
2669 Tue Apr  3 21:52:42 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2670
2671         * Defined uint8, int8, uint16, int16, uint32, int32, uint64 and
2672           int64 of at least the xintXX size.  If void * is less that 4
2673           bytes uint32 * will be used.  Defined bool as boolean.
2674
2675         * Changed _ALL_ unsigned long and unsigned int to uint32, 
2676           unsgined short to uint16 in the source tree.
2677
2678         * Fixed a fatal bug in silc_server_remove_clients_by_server.  Do
2679           not handle clients that has entry->data.registered == FALSE.
2680           They are not in the network anymore.  Affected file is
2681           silcd/server.c.
2682
2683 Tue Apr  3 16:39:19 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2684
2685         * Implemented the sending of the SERVER_SIGNOFF notify in the
2686           server.  Affected file is silcd/server.c.
2687
2688         * Added silc_server_send_notify_args into silcd/packet_send.[ch].
2689           Added also silc_notify_payload_encode_args into the
2690           lib/silccore/silcnotify.[ch].
2691
2692         * Implemented ther SERVER_SIGNOFF notify handling in the server.
2693           Affected file silcd/packet_receive.c.
2694
2695         * Implemented the SERVER_SIGNOFF notify handling in the client
2696           library.  Affected file lib/silcclient/client_notify.c.  Also,
2697           implemnted the printing of the SERVER_SIGNOFF info to the
2698           application.  Affected file silc/client_ops.c.
2699
2700         * The silc_idlist_del_server now returns TRUE or FALSE to indicate
2701           if the deleting was successful.  Affected file silcd/idlist.[ch].
2702
2703         * Added support for public key authentication in the connection
2704           authentication protocol in the client library.  Affected file
2705           lib/silcclient/protocol.c.
2706
2707         * Changed the server's silc_idlist_get_clients_by_* interface
2708           to support already allocated array so that new entries may be
2709           added to pre-allocated array.  Affected file silcd/idlist.[ch].
2710           This fixes some bugs with WHOIS, WHOWAS and IDENTIFY commands
2711           and command replies.
2712
2713         * All command reply functions in the server now calls the 
2714           pending command callback even if error occured.  This way the
2715           error will be delivered to the client as well.  Affected files
2716           silcd/command.c and silcd/command_reply.c.
2717
2718         * Fixed INFO command to return local server's info if no server
2719           was provided.  Affected file lib/silcclient/command.c.
2720
2721         * Removed RESTART command for good.  Updated the code and the
2722           protocol specs.
2723
2724         * Rewrote parts of the task system.  It is a bit simpler now.
2725           Removed unsued task priorities. The affected files are
2726           lib/silcutil/silctask.[ch].
2727
2728 Mon Apr  2 20:02:33 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2729
2730         * Moved the USERS printing from the library to the application.
2731           Affected files lib/silcclient/command.c and silc/client_ops.c.
2732
2733 Mon Apr  2 13:13:23 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2734
2735         * Updated TODO.
2736
2737         * Added channel key re-key support.  The re-key is perfomed
2738           only by the router and is done once in an hour.  Added `rekey'
2739           field to the SilcChannelEntry in the server.  Affected files
2740           silcd/server.c and silcd/idlist.h.
2741
2742         * Added silc_task_unregister_by_context into the file
2743           lib/silcutil/silctask.[ch].
2744
2745 Sun Apr  1 19:49:34 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2746
2747         * Added SILC_UMODE_GONE mode to indicate when the client is not
2748           present in the SILC network.  Added also support to the local
2749           command AWAY that will set this mode.  Added support of showing
2750           "xxx is gone" in WHOIS command.  The USERS command shows the
2751           gone status as well.
2752
2753         * Fixed setting server and router operator privileges in the
2754           server's UMODE command.  Affected file silcd/command.c.
2755
2756         * Merged the SKE KE1 and KE2 payloads into one payload.  The
2757           new KE payload is equivalent to the old KE2 payload.
2758
2759           Cleaned up the SKE Start Payload parsing.  It now uses the
2760           simple buffer unformatting to do the parsing.  A lot faster
2761           now.
2762
2763           Added new Mutual Authentication flag (SILC_SKE_SP_FLAG_MUTUAL)
2764           to the SKE that is used to indicate whether both of the SKE
2765           parties should perform authentication.  By default only the
2766           responder performs authentication.  By setting this flag also
2767           the initiator must do authentication.  By default it is unset
2768           since in normal SKE case, client to server connection, only
2769           the responder should do authentication.  When doing SKE between
2770           two clients both should perform authentication.  Updated the
2771           code and the protocol specs.
2772
2773         * A little fix to IDENTIFY command in the server.  Search the
2774           client first by hash not nickname.  Affected file is 
2775           silcd/command.c.
2776
2777         * Fixed the silc_client_close_connection to support closing
2778           the client to client connections wihtout deleting too much
2779           data.  Affected file lib/silcclient/client.c.
2780
2781         * Fixed a fatal bug in server and client; if KE1 or KE2 packets
2782           are received if protocol used to be active but is not anymore
2783           the application would crash due to NULL pointer dereference.
2784           Affected files silcd/server.c and lib/silcclient/client.c.
2785
2786         * Added `hash' field to the SilcClientConnection to include
2787           the hash function negotiated in the SKE protocol.
2788
2789         * Added new channel mode SILC_CMODE_FOUNDER_AUTH that is used
2790           to set the channel founder authentication data.  A client can
2791           claim the founder rights later by providing the authentication
2792           data to the CUMODE command using SILC_CUMODE_FOUNDER mode.
2793           This way the channel founder can regain the channel founder
2794           privileges even it is left the channel.  This works only on
2795           local server and the client must be connected to the same
2796           server to be able to regain the founder rights.  Updated the
2797           protocol specs accordingly.
2798
2799           Added support to the CMODE command in the client to set the
2800           founder auth data.  Read the README to see how to set it.
2801
2802           Added support to the CUMODE command to claim the founder
2803           rights.  Read the README to see how to do it.
2804
2805           Added support for the founder authentication to the Channel
2806           Entry in the server.  Affected file silcd/idlist.h.
2807
2808           Added support for the SILC_CMODE_FOUNDER_AUTH mode in the
2809           server's CMODE command.  Affected file silcd/command.c.
2810
2811         * Added the following new functions into lib/silccore/silcauth.[ch]:
2812           silc_auth_get_method and silc_auth_get_data.    
2813
2814         * The server now saves the remote hosts public key to the
2815           SilcIDListData pointer.  Affected file silcd/protocol.c.
2816
2817         * The normal server now does not remove the channel entry from
2818           the cache if the founder authentication data is set.  It used
2819           to remove it if the founder was the last one on the channel on 
2820           the server and left the channel.  The auth data is saved and
2821           if the channel is re-joined later the old entry is used with
2822           the old auth data.  Affected files silcd/command_reply.c and
2823           silcd/server.c.
2824
2825         * Removed the `pkcs' field from the SilcIDListData structure
2826           in the server; it is not used.  Affected file silcd/idlist.h.
2827
2828 Sat Mar 31 15:38:36 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2829
2830         * Fixed packet processing on slow links.  Partial packets were
2831           never re-processed because the incoming data buffer was cleared
2832           by the application.  Application must not directly clear the
2833           sock->inbuf, the packet processing routines handle it.  Fixed
2834           this in client library and in server.
2835
2836 Fri Mar 30 16:35:27 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2837
2838         * Fixed the WHOIS and IDENTIFY send reply function to really
2839           check whether to send list or just one entry.  Affected file
2840           silcd/command.c.
2841
2842         * Cleaned up the LEAVE command's channel key distribution.  The
2843           affected file silcd/command.c.
2844
2845         * Changed CMODE_CHANGE's <Client ID> to <ID Payload> as server
2846           can enforce the channel mode as well.  In that case the ID
2847           includes the ID of the server.  The code now enforces the
2848           mode change if the router have different mode than the server.
2849
2850         * The notify client operation with CMODE_CHANGE notify can now
2851           return NULL client_entry pointer if the CMODE was not changed
2852           by client.  Application must check for this.
2853
2854         * Added <Server ID> argument to INFO command to support server
2855           info fetching by Server ID.
2856
2857         * Added silc_server_announce_get_channel_users to get assembled
2858           packets of channel users of the specified channel.  Affected
2859           file silcd/server.[ch].
2860
2861         * Fixed bug in CHANNEL_CHANGE notify in the server.  The new ID
2862           was freed underneath the ID Cache.
2863
2864         * Re-announce clients when the server received CHANNEL_CHANGE
2865           notify from the router.  Affected file silcd/packet_send.c.
2866
2867 Thu Mar 29 19:10:28 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2868
2869         * Fixed a fatal bug when client does /join 1 2 3 4 5 6 the server
2870           crashed since it did not handle the fact that there is no cipher
2871           called "3" and didn't check the error condition.  Now fixed.
2872
2873         * Added SILC_MESSAGE_FLAG_REQUEST message flag as generic request
2874           flag.  It can be used to send message requests.
2875
2876 Thu Mar 29 12:26:25 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2877
2878         * Implemented the RESTART command in the client.
2879
2880         * Added SILC_MESSAGE_FLAG_NOTICE message flag for informational
2881           notice type messages.  Added notice printing to the user
2882           interface.
2883
2884         * The channel keys are not re-generated if the channel's mode
2885           is PRIVKEY, ie private key on the channel exists.  Affected
2886           files silcd/server.c and silcd/command.c.
2887
2888         * Fixed a little bug in channel message delivery when channel
2889           private keys are set in the server.  Affected file is
2890           silcd/packet_send.c.
2891
2892         * Changed the setting on channel->on_channel = TRUE from the
2893           silc_client_save_channel_key to the JOIN command reply.  The
2894           key payload is not received if the private channel key is set.
2895           Affected file lib/silcclient/command_reply.c and the
2896           lib/silcclient/client_channel.c.
2897
2898         * When the CMODE_CHANGE notify is sent and the channel private
2899           key mode is removed the channel key must be re-generated in
2900           other cells as well.  Added this support for the router in the
2901           silcd/packet_receive.c.
2902
2903         * Added new local command NOTICE to send notice message on
2904           channel.  Affected file silc/local_command.[ch].
2905
2906 Wed Mar 28 23:55:54 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2907
2908         * Added new local command ME to the client.  It is used to send
2909           message to a channel with SILC_MESSAGE_FLAG_ACTION to indicate
2910           some action.  Affected file silc/local_command.[ch].
2911
2912         * Changed channel_message and private_message client operations 
2913           to deliver the message flags to the application.  Added also
2914           the `flags' arguments to the silc_client_send_channel_message
2915           and silc_client_send_private_message functions.  Affected file
2916           silcapi.h.
2917
2918 Wed Mar 28 20:50:47 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2919
2920         * Redefined the Private Message Payload to support private message
2921           keys and to support the new private message flags.  Updated
2922           the protocol specs.  Flags makes it possible to have for example
2923           CTCP style messages.
2924
2925         * Added new type SilcPrivateMessagePayload and defined an API
2926           for it in the lib/silcclient/silcprivate.[ch].
2927
2928         * Tested private message private keys successfully.  Tested the
2929           private message key set, unset and list commands with the new
2930           KEY command.
2931
2932         * Redefined the Channel Message Payload to include the channel
2933           message flags (equal with private message flags) to support
2934           for example CTCP style messages.
2935
2936         * Defined some of the message (for channel and private message)
2937           flags.  Updated the protocol specs and added the flags to the
2938           lib/silccore/silcchannel.h.  The type is SilcMessageFlags.
2939
2940 Wed Mar 28 15:52:36 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2941
2942         * Added SilcKeyAgreementStatus type to the key agreement routines
2943           to indicate the current status and error if one occured.
2944           The status types are defined in the lib/silcclient/silcapi.h.
2945
2946         * Added new local command KEY that is used to set and unset private
2947           keys for channels, set and unset private keys for private messages
2948           with remote clients and to send key agreement requests and
2949           negotiate the key agreement protocol with remote client.  The
2950           key agreement is supported only to negotiate private message keys,
2951           it currently cannot be used to negotiate private keys for channels,
2952           as it is not convenient for that purpose.
2953
2954         * Fixed a minor pending callback setting bug in the function
2955           silc_client_get_client_by_id_resolve, now the function works.
2956           Affected file lib/silcclient/idlist.c.
2957
2958         * Added function silc_net_get_local_port to get local bound
2959           port by socket.  Added to lib/silcutil/silcnet.[ch].
2960
2961         * Added `sockets' and `sockets_count' fields to the SilcClient
2962           object.  They hold the sockets of the listenning sockets in
2963           the client.  Listenning sockets may be for example the key 
2964           agreement server.  Affected file lib/silcclient/client.[ch].
2965           Added functions the silc_client_add_socket and the
2966           silc_client_del_socket.  They are exported to the application
2967           as well.
2968
2969         * Added ~./silc/clientkeys to support other client's public keys.
2970
2971         * Renamed verify_server_key client operation to verify_public_key
2972           and added one argument to indicate the type of the connection
2973           (server, client etc.).
2974
2975 Tue Mar 27 22:22:38 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2976
2977         * Added silc_server_connection_auth_request to handle the
2978           incoming CONNECTION_AUTH_REQUEST packet.  Affected file is
2979           silcd/packet_receive.[ch].
2980
2981         * Added silc_server_send_connection_auth_request into the
2982           silcd/packet_send.c to send the connection auth request packet.
2983
2984         * Cleaned up the silcd/protocol.c a bit and fixed some memory
2985           leaks.
2986
2987         * Fixed the public key authentication in responder side in the
2988           server.  The `auth_data' pointer includes the SilcPublicKey
2989           not the path to the public key.  Affected file silcd/protocol.c.
2990
2991         * Implemented the public key authentication in the initiator side
2992           in the server.  Affected file silcd/protocol.c.
2993
2994         * Removed the [RedirectClient] config section from the server
2995           configuration.  Is not needed and I don't want to implement it.
2996
2997 Tue Mar 27 12:49:56 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
2998
2999         * Cleaned up the CMODE command in the server.  It now works
3000           correctly and supports all the modes defined in the protocol.
3001           Affected file is silcd/command.c.
3002
3003         * Added `hmac_name' field to the SilcChannelEntry in the server
3004           to hold the default HMAC of the channel.  It can be set when
3005           creating the channel (with JOIN command).  Affected files
3006           silcd/idlist.[ch].
3007
3008         * Added <cipher> and <hmac> argument to the CMODE_CHANGE notify
3009           type to indicate the change of the current cipher and hmac
3010           on the channel.  Client can safely ignore the <cipher> argument
3011           (if it chooses to do so) since the CHANNEL_KEY packet will 
3012           force the channel key change anyway.  The <hmac> argument is
3013           important since the client is responsible of setting the new
3014           HMAC and the hmac key into use.
3015
3016         * Fixed the CMODE command in the client library as well.
3017
3018         * Tested CMODE command in router environment successfully.
3019
3020 Mon Mar 26 14:39:48 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3021
3022         * Show the version of the remote client (or server) when connecting
3023           to the server.  It is logged to the log file.  Affected file
3024           is silcd/protocol.c.
3025
3026         * Fixed the KILLED notify handling in the client library.  The
3027           client must be removed from all channels when receiving the
3028           KILLED notify.
3029
3030           Also, do not remove the client entry when giving the KILL 
3031           command but when the KILLED notify is received.
3032
3033         * Removed silc_idlist_find_client_by_nickname from the server.
3034           Not needed anymore.  Affected files silcd/idlist.[ch].
3035
3036         * Implemented the CHANNEL_CHANGE notify type handling to the
3037           server.  Affected file silcd/server.c.
3038
3039         * Updated TODO.
3040
3041 Mon Mar 26 12:11:14 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3042
3043         * Added silc_server_send_notify_invite to send the INVITE
3044           notify between routers.
3045
3046         * Implemented the INVITE command correctly to the server.
3047
3048         * Implemented the INVITE notify type handling in the server.
3049
3050         * Implemented the INVITE command to the client library and on the
3051           user interface.
3052
3053 Sun Mar 25 20:27:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3054
3055         * Added function silc_server_get_client_resolve to find the
3056           client entry by ID from all ID lists and then resolve it
3057           (using WHOIS) if it cannot be found.  Affected file is
3058           silcd/server.[ch].
3059
3060 Sun Mar 25 13:52:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3061
3062         * Implemented the BAN command to the client library.
3063
3064         * The JOIN command in the server now checks the invite list
3065           and the ban list.
3066
3067         * Changed the silc_command_reply_payload_encode_va and the
3068           silc_command_payload_encode_va to support that if argument is
3069           NULL it ignores and checks the next argument.  Affected file
3070           lib/silccore/silccommand.c.
3071
3072         * Added silc_server_send_notify_ban to send the BAN notify
3073           type between routers.
3074
3075         * Chaned the silc_notify_payload_encode to support that if 
3076           argument is NULL it ignores and checks the next argument.
3077           Affected file lib/silccore/silcnotify.c.
3078
3079         * Tested ban lists in router environment successfully.
3080
3081 Sat Mar 24 14:47:25 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3082
3083         * Implemented BAN command to the server, in silcd/command.[ch].
3084
3085         * Removed the BAN and INVITE_LIST modes from the CMODE command
3086           in the server code.
3087
3088         * Added function silc_string_match to regex match two strings.
3089           Affected files lib/silcutil/silcutil.[ch].
3090
3091 Fri Mar 23 22:02:40 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3092
3093         * Redefined parts of the SilcChannelEntry in the server to support
3094           the new ban and invite lists.
3095
3096 Fri Mar 23 16:25:11 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3097
3098         * Redefined the INVITE command.  The same command can be used to
3099           invite individuals to the channel but also to manage the invite
3100           list of the channel (to add to and remove from the invite list).
3101           Updated the protocol specs.
3102
3103         * Added new command SILC_COMMAND_BAN that can be used to manage
3104           the ban list of the channel.  Updated the protocol specs.
3105
3106         * Removed the channel modes: the SILC_CMODE_BAN and the 
3107           SILC_CMODE_INVITE_LIST as they were a bit kludge to be included
3108           in the CMODE command.  The equivalent features are now available
3109           using INVITE and BAN commands.  Updated the protocol specs.
3110
3111         * Added new SILC_NOTIFY_TYPE_BAN notify type to notify routers
3112           in the network about change in the current ban list.  The notify
3113           type is not used by the client.
3114
3115         * Redefined parts of the SILC_NOTIFY_TYPE_INVITE command to 
3116           support the invite lists.
3117
3118 Thu Mar 22 22:52:23 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3119
3120         * Added new function silc_string_regexify that converts string
3121           including wildcard characters into regex string that can
3122           be used by the GNU regex library.  Added into the file
3123           lib/silcutil/silcutil.[ch].
3124
3125           Added silc_string_regex_combine to combine to regex strings
3126           into one so that they can be used as one regex string by
3127           the GNU regex library.  Added into the file
3128           lib/silcutil/silcutil.[ch].
3129
3130           Added silc_string_regex_match to match two strings.  It returns
3131           TRUE if the strings match.  Added into lib/silcutil/silcutil.[ch].
3132
3133 Thu Mar 22 15:29:42 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3134
3135         * Imported GNU regex to the soruce tree into lib/contrib.
3136           Fixed some compiler warning from the regex.c.
3137
3138 Wed Mar 21 15:27:58 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3139
3140         * Fixed MOTD command in the server to work in router environment.
3141
3142         * Fixed the MOTD command in the client library to support
3143           the server argument in the command.
3144
3145         * Added `nickname_len' argument to the silc_idlist_add_client
3146           in the server, as the `nickname' argument may be binary data
3147           (it may be hash).
3148
3149         * Added silc_idlist_get_channels to return all channels from
3150           the ID list.
3151
3152         * Implemented LIST command to the server.  Affected file is
3153           silcd/command.c.
3154
3155         * Implemented the LIST command to the client library and on the
3156           user interface.
3157
3158         * Added [<user count>] argument to the LIST command reply.
3159           With private channels the user count is not shown.
3160
3161         * Updated TODO and README.
3162
3163 Tue Mar 20 21:05:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3164
3165         * The client entry's data.registered must be TRUE even with
3166           global client entry on global client list.  The data.registered
3167           is used to check whether the client is anymore in the network,
3168           for example with WHOWAS command so it must be valid.
3169
3170         * Fixed the WHOWAS command in the server.  It now actually works
3171           in router environment.  Added function into silcd/command_reply.c
3172           silc_server_command_reply_whowas_save.
3173
3174         * Added silc_idlist_purge function to the silcd/idlist.c
3175           to periodically purge the ID Cache.
3176
3177         * Fixed INFO command in the server.  It works now in router
3178           environment.  Added <server name> argument to the INFO command
3179           reply.  Updated the protocol specs.
3180
3181         * Fixed minor bug in silc_idcache_purge to not purge if the
3182           expire value is zero.
3183
3184         * Fixed various bugs in WHOIS and IDENTIFY command handling as
3185           they were buggy because of the WHOWAS information.
3186
3187         * Fixed local command MSG to handle the async resolving of 
3188           the remote client properly.  It used to fail the first MSG.
3189           Affected file silc/local_command.c.
3190
3191         * Added `data_len' field to SilcIDCache context.
3192
3193 Tue Mar 20 16:29:00 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3194
3195         * Update TODO.  Todo in commands in the server.
3196
3197 Tue Mar 20 15:45:14 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3198
3199         * Added new notify type SILC_NOTIFY_TYPE_UMODE_CHANGE that is
3200           used by routers as broadcast packet to inform other routers
3201           about the changed user mode.
3202
3203           Implemented the notify handling in the server.  Affected file is
3204           silcd/packet_receive.c.  Added the function 
3205           silc_server_send_notify_umode to the silcd/packet_send.[ch].
3206
3207         * Added new generic Channel Payload and deprecated the New Channel
3208           Payload.  The New Channel Payload is now the generic Channel
3209           Payload.
3210
3211         * Added new argument `mode' to the silc_server_send_new_channel
3212           as it is required in the Channel Payload now.
3213
3214         * Renamed the SilcChannelPayload to SilcChannelMessagePayload
3215           and created a new and real SilChannelPayload to represent the
3216           new generic Channel Payload.  Implemented the encode/decode
3217           for Channel Payload.  Affected file lib/silccore/silcchannel.[ch].
3218
3219         * Added silc_server_get_client_channel_list to return the list
3220           of channels the client has joined for WHOIS command reply.
3221           Affected file silcd/server.[ch].
3222
3223         * Implemented the channel list sending in the WHOIS command reply
3224           in server and in the client.
3225
3226           Implemented the channel list displaying on the user interface
3227           as well.  Affected file silc/client_ops.c.
3228
3229         * Added silc_channel_payload_parse_list to parse list of Channel
3230           Payloads.  It returns SilcDList list of SilcChannelPayloads.
3231           Client for example can use this function to parse the list of
3232           channels it receives in the WHOIS command reply.  The caller
3233           must free the list by calling silc_channel_payload_list_free.
3234           Affected files lib/silccore/silcchannel.[ch].
3235
3236 Mon Mar 19 21:39:15 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3237
3238         * Added one new argument <user mode> to the WHOIS command reply
3239           to return the mode of the user in SILC.  Updated the protocol
3240           specs.
3241
3242           Implemented it to the server and client.
3243
3244 Mon Mar 19 18:43:06 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3245
3246         * Fixed the mode printing on the user interface on joining.
3247           Affected file silc/client_ops.c.
3248
3249         * Implemented the UMODE command and user modes in general to the
3250           client library and to the user interface.
3251
3252         * Implemented the UMODE command to the server.
3253
3254         * The server now sends UNKNOWN_COMMAND error status if client sends
3255           unknown command.  Affected file silcd/command.c.
3256
3257         * All server commands now handle the command identifier the right
3258           way when sending the command reply to the client.  The client can
3259           use to identify the command replies with the identifier.
3260
3261 Mon Mar 19 16:13:07 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3262
3263         * Added silc_server_get_client_route to resolve the route to
3264           the client indicated by the client ID.  Affected file is
3265           silcd/server.[ch].
3266
3267         * Added silc_server_relay_packet as general function to relay
3268           packet to arbitrary destination.  This deprecates functions
3269           like _send_private_message_key, _relay_notify etc.  Affected
3270           file is silcd/packet_send.[ch].
3271
3272           Removed silc_server_send_key_agreement, 
3273           silc_server_send_private_message_key and
3274           silc_server_packet_relay_notify functions from the file
3275           silcd/packet_send.[ch].
3276
3277         * Updated TODO.
3278
3279         * Implemented the SILC_NOTIFY_TYPE_KILLED notify handling in the
3280           server.  Affected file silcd/packet_receive.[ch].
3281
3282         * Implemented the KILL command to the client.  Implemented the
3283           SILC_NOTIFY_TYPE_KILLED notify handling in the client library.
3284           Affected files lib/silcclient/command[_reply].c and
3285           lib/silcclient/client_notify.c.  Implemented the KILL notify
3286           printing in the user inteface.
3287
3288         * Fixed a lot silc_parse_nick memory leaks from the client
3289           library in the file lib/silcclient/command.c.
3290
3291         * Changed the silc_server_send_notify_on_channels's `sender'
3292           argument from SilcSocketConnection to SilcClientEntry to 
3293           check the sender as entry and not as connection object and not
3294           to send to the client provided as argument.  The affected file
3295           is silcd/packet_send.[ch].
3296
3297         * The notify packets that are destined directly to the client used
3298           to not to be processed by the server.  Now changed that and the
3299           server processes all notify packets.  After relaying the packet
3300           to the client the notify packet is processed in the server.
3301
3302         * The silc_server_free_client_data now checks whether there is
3303           pending outgoing traffic for the client and purges the data to
3304           the network before removing the client entry.
3305
3306 Sun Mar 18 21:02:47 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3307
3308         * Added SILC_NOTIFY_TYPE_KILLED notify type.  It is sent when
3309           an client is killed from the SILC Network.  Updated the protocol
3310           specs accordingly.
3311
3312           Added new function silc_server_send_notify_killed to the
3313           silcd/packet_send.[ch].
3314
3315         * Added function silc_server_packet_relay_notify to relay notify
3316           packets that are destined directly to a client.  In this case
3317           the server does not process the notify packets but merely relays
3318           it to the client.  Affected file silcd/packet_send.[ch].
3319
3320           Added also silc_server_packet_process_relay_notify to check
3321           whereto relay the notify.  Affected file is 
3322           silcd/packet_receive.[ch].
3323
3324         * Implemented the KILL command to the server.
3325
3326         * Updated TODO.
3327
3328         * Added the backup schema desgined last fall to the protocol
3329           specs for everyone to see.  The specification is in the
3330           *-spec-xx.txt draft and the packet type definitions for the
3331           backup routers is in *-pp-xx.txt draft.  Thusly, added also
3332           new packet type SILC_PACKET_CELL_ROUTERS.
3333
3334         * A big security problem in the implementation discovered.  The
3335           signoff of an client did not cause new channel key generation
3336           which it of course should've done.  The channel keys must be
3337           always re-generated when client leaves (or signoffs) the channel.
3338           The silc_server_remove_from_channels funtion now handles
3339           the channel key re-generation.
3340
3341         * Added `sender' argument to the silc_server_send_notify_on_channels
3342           to not to send the client provided as argument.  Affected file
3343           silcd/packet_send.[ch].
3344
3345 Fri Mar 16 15:52:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3346
3347         * Implemented OPER and SILCOPER commands into the server and
3348           the client library.
3349
3350         * Added silc_auth_verify and silc_auth_verify_data to verify
3351           the authentication directly from the authentication payload.
3352           It supports verifying both passphrase and public key based
3353           authentication.  Affected file lib/silccore/silcauth.[ch].
3354
3355         * Added `hash' field to the SilcIDListData structure.  It is the
3356           hash negotiated in the SKE protocol.  Affected file is
3357           silcd/idlist.[ch].
3358
3359         * Slight redesigning of the SilcAuthPayload handling routines.
3360           Do not send SilcPKCS but SilcPublicKey as argument.
3361
3362         * Implemented the public key authentication support to the
3363           serverconfig.  The public key is loaded from the provided path
3364           and saved as authentication data to void * pointer.  Thus,
3365           changed the unsigned char *auth_data to void *auth_data;
3366
3367         * Fixed SHUTDOWN command to send the reply before the server
3368           is shutdown. :)  Affected file silcd/command.c.
3369
3370         * Fixed fatal bug in CONNECT command.  The hostname was invalid
3371           memory and server crashed.  Affected file silcd/command.c.
3372
3373         * Fixed fatal bug in CLOSE command.  The server_entry became
3374           invalid but was referenced later in the command.  Affected file
3375           silcd/command.c.
3376
3377 Thu Mar 15 12:46:58 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3378
3379         * Fixed fatal bug in failure packet handling.  Server ignored
3380           the failure and thus crashed when it came.
3381
3382         * Updated TODO.
3383
3384 Wed Mar 14 20:37:35 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3385
3386         * Added new SILC_CF_LAG_STRICT command flag that strictly forces
3387           that the command may be executed only once in (about) 2 seconds.
3388           The old SILC_CF_LAG flag is same but allows command bursts up
3389           to five before limiting.
3390
3391           Added the support for CF_LAG and CF_LAG_STRICT flags to the
3392           server code.  Various commands now includes the CF_LAG_STRICT
3393           flag to disallow any kind of miss-use of the command.
3394
3395         * Fixed the silc_buffer_unformat to not to allocate any data
3396           if the length of the data is zero.  It used to allocate the
3397           length + 1.  Affected file lib/silcutil/silcbuffmt.c.
3398
3399 Wed Mar 14 16:10:30 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3400
3401         * Changed the format of AdminConnection configuration section
3402           in the server.  Added username of the admin to the format.
3403           Affected files silcd/serverconfig.[ch].
3404
3405           Added silc_server_config_find_admin into silcd/serverconfig.[ch]
3406           to return admin configuration data by host, username and/or
3407           nickname.
3408
3409 Wed Mar 14 13:18:16 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3410
3411         * Implemented WHOWAS command to the server.  Added the functions:
3412
3413           silc_server_command_whowas_parse,
3414           silc_server_command_whowas_send_reply,
3415           silc_server_command_whowas_from_client and
3416           silc_server_command_whowas_from_server
3417
3418         * Added <Client ID> argument to the WHOWAS command reply.  Updated
3419           the protocol specs accordingly.
3420
3421         * Implemented WHOWAS command and command_reply to the client
3422           library.
3423
3424           Implemented the WHOWAS printing on the user interface.
3425
3426 Tue Mar 13 22:17:34 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3427
3428         * Added new argument to the WHOWAS command reply, the real name.
3429           It is an optional argument.  Updated the protocol specs.
3430
3431         * Added SilcIDCacheDestructor callback that is registered when
3432           the SilcIDCache is allocated.  The callback is called when
3433           an cache entry in the ID Cache expires, or is purged from the
3434           cache.  Added into lib/silccore/idcache.[ch].
3435
3436           Added silc_idlist_client_destructor to the silcd/idlist.[ch]
3437           to destruct the client entries when the cache entry expires.
3438           Other ID Cache's in server and in the client library ignores
3439           the destructor.
3440
3441         * If the ID Cache entry's `expire' field is zero then the entry
3442           never expires.  Added boolean `expire' argument to the
3443           silc_idcache_add function in the lib/silccore/idcache.[ch].
3444           If it is TRUE the default expiry value is used.
3445
3446         * Added silc_server_free_client_data_timeout that is registered
3447           when client disconnects.  By default for 5 minutes we preserve
3448           the client entry for history - for WHOWAS command.
3449
3450 Tue Mar 13 13:26:18 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3451
3452         * Added support to the server to enforce that commands are not
3453           executed more than once in 2 seconds.  If server receives 
3454           commands from client more frequently, timeout is registered
3455           to process the commands.  Affected file silcd/command.c.
3456           Added new function silc_server_command_process_timeout.
3457
3458         * Changed NICK_NOTIFY handling in client library to check that
3459           if the client's nickname was changed, so there is no need to
3460           resolve anything from the server.
3461
3462         * Removed error printing from the WHOIS and IDENTIFY commands.
3463           If error occurs then it is ignored silently in the client library.
3464           The application, however, may map the received error to 
3465           human readable error string.  The application currently maps
3466           the NO_SUCH_NICKNAME error to string.
3467
3468         * Made the command status message public to the application.  Moved
3469           them from lib/silcclient/command_reply.c to 
3470           lib/silcclient/command_reply.h.  The application can map the
3471           received command status to the string with the
3472           silc_client_command_status_message function.
3473
3474         * Added check to the server to check that client's ID is same
3475           as the Source ID in the packet the client sent.  They must
3476           match.
3477
3478 Tue Mar 13 12:49:21 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3479
3480         * Added dist-bzip hook to the Makefile.am to make bzip2
3481           compressed distributions.
3482
3483 Mon Mar 12 18:43:38 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3484
3485         * Server now enforces the maximum length for the nickname and
3486           the channel as protocol specification dictates.  128 bytes for
3487           nickname and 256 bytes for channel name.
3488
3489         * Moved the WHOIS printing to the application.  The client libary
3490           does not print out the WHOIS information anymore, the application
3491           must do it.  Renamed silc_client_command_reply_whois_print to
3492           the silc_client_command_reply_whois_save.
3493
3494           The client's idle time is also sent to the application now, and
3495           the idle is shown on screen.
3496
3497         * Added silc_client_command_reply_identify_save to save the
3498           received IDENTIFY entries.
3499
3500         * Do not check for channel private keys in message sending and
3501           reception if the channel does not have the PRIVKEY mode set.
3502           Affected file lib/silclient/client_channel.c.
3503
3504 Sun Mar 11 20:25:06 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3505
3506         * Fixed a minor bug if WHOIS and IDENTIFY command parsing that
3507           just surfaced after chaning the JOIN procedure.
3508
3509 Sun Mar 11 14:59:05 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3510
3511         * Added silc_client_get_clients_by_list to get client entries
3512           from Client ID list, that is returned for example by JOIN
3513           and USERS command replies.  The application should use this
3514           function for example when JOIN command reply is received to
3515           resolve the clients already on the channel (library does not
3516           do that anymore as USERS command reply is not used in the JOIN
3517           procedure anymore).  Affected files lib/silcclient/silcapi.h and
3518           lib/silcclient/idlist.c.
3519
3520         * JOIN command reply and USERS command reply returns now SilcBuffer
3521           pointers instead of unsigned char pointers when returning
3522           the client list and mode list.
3523
3524         * Added <Client ID> argument to the JOIN command reply, mainly
3525           for the server to identify for which client the command was
3526           originally sent.  Updated protocol specs accordingly.
3527
3528         * Added SilcDlist private_key pointer to the SilcChannelEntry
3529           in the client to support the channel private keys.  Affected
3530           file is lib/silcclient/idlist.h.
3531
3532         * Added SilcChannelPrivateKey argument to the function
3533           silc_client_send_channel_message so that application can choose
3534           to use specific private ke if it wants to.  If it is not provided,
3535           the normal channel key is used, unless private keys are set. 
3536           In this case the first (key that was added first) is used 
3537           as the encryption key.
3538
3539         * Implemented the support for channel private key handling.
3540           Implemented the following functions:
3541
3542           silc_client_add_channel_private_key,
3543           silc_client_del_channel_private_keys,
3544           silc_client_del_channel_private_key,
3545           silc_client_list_channel_private_keys and
3546           silc_client_free_channel_private_keys
3547
3548           Affected file lib/silcclient/client_channel.c.
3549
3550         * Added the support for the private keys in the channel message
3551           sending and encryption and in the message reception and
3552           decryption.  Affected funtions are
3553           silc_client_send_channel_message and silc_client_channel_message.
3554
3555 Sat Mar 10 21:36:22 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3556
3557         * Added SKE's key verify callback to the client library's
3558           KE protocol context. Affected files lib/silcclient/protocol.[ch].
3559
3560         * Removed the statement that server (or router) must send USERS
3561           command reply when joining to the channel so that the client
3562           knows who are on the channel.  Instead, the client list and 
3563           client's mode list is now sent in the JOIN command reply to the
3564           client who joined channel.  This is better solution.
3565
3566         * Added function silc_server_get_users_on_channel and function
3567           silc_server_save_users_on_channel to the silcd/server.[ch].
3568
3569         * Removed function silc_server_command_send_users from the
3570           silcd/command.c.
3571
3572         * Do not show topic on the client library anymore.  The topic is
3573           sent in the command reply notify to the application and the
3574           application must show the topic now.
3575
3576 Sat Mar 10 00:07:37 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3577
3578         * Added client searching by nickname hash into the IDENTIFY and
3579           WHOIS commands in the server as they were clearly missing from
3580           them.  Affected file is silcd/command.c.
3581
3582         * Fixed a bug in private message receiving in the client library.
3583           The remote ID was freed and it wasn't supposed, now it is
3584           duplicated.
3585
3586 Fri Mar  9 12:40:42 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3587
3588         * Minor fix to the channel payload; allocate the data area, as it
3589           needs to be of specific length.
3590
3591         * If the key agreement port is zero then the operating
3592           system will define the bound port.  Affected files are
3593           lib/silcclient/silcapi.h and lib/silcclient/client_keyagr.c.
3594
3595         * Added new function silc_channel_payload_decrypt into the file
3596           lib/silccore/silcchannel.[ch].
3597
3598         * Moved the channel message etc, check from silc_packet_decrypt
3599           to applications.  The library calls now a generic 
3600           SilcPacketCheckDecrypt callback which is to return TRUE or FALSE
3601           when the packet is either normal or special.  This was done to
3602           allow more wide range of checking that was not allowed when
3603           the code was in library.  Now applications can do virtually any
3604           checks to the packet and return to the library the decision how
3605           the packet should be processed.  Affected files are
3606           lib/silccore/silcpacket.[ch].
3607
3608           Added silc_server_packet_decrypt_check to the server and
3609           silc_client_packet_decrypt_check to the client library.
3610
3611         * Added silc_server_packet_send_srcdest into silcd/packet_send.[ch]
3612           to send with specified source and destination information.
3613
3614         * Channel message delivery between routers was broken after the
3615           channel key distribution was fixed earlier.  The channel key
3616           was used be to distributed to other routers as well which is not
3617           allowed by the protocol.  Now this is fixed and channel keys
3618           really are cell specific and the channel message delivery between
3619           routers comply with the protocol specification.
3620
3621         * Fixed various commands in server to check also the global list
3622           for the channel entry and not just the local list.  The affected
3623           file silcd/command.c.
3624
3625 Thu Mar  8 21:39:03 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3626
3627         * Added assert()s to buffer formatting and unformatting routines
3628           to assert (if --enable-debug) when error occurs.  Affected
3629           file: lib/silcutil/silcbuffmt.c.
3630
3631         * Changed to auto-reconnect to check whether the remote host is
3632           router and register the re-connect timeout if it is.  It used 
3633           to check that whether we are normal server, but router must do
3634           auto-reconnect with another router as well.  Affected file
3635           silcd/server.c.
3636
3637         * Removed the [<key len>] option from CMODE command as the cipher
3638           name decides the key length, nowadays.  See the defined ciphers
3639           from the protocol specification.
3640
3641         * Added [<hmac>] option to the CMODE command to define the HMAC
3642           for the channel.  Added SILC_CMODE_HMAC channel mode.
3643
3644         * Added [<hmac>] option for the JOIN command so that user can
3645           select which HMAC is used to compute the MACs of the channel
3646           messages.
3647
3648         * Added Hmac field to the Channel Message Payload.  The integrity
3649           of plaintext channel messages are now protected by computing
3650           MAC of the message and attaching the MAC to the payload.  The
3651           MAC is encrypted.  Now, it is clear that this causes some
3652           overhead to the size of the packet but rationale for this is that
3653           now the receiver can verify whether the channel message decrypted
3654           correctly and also when private keys are set for the channel the
3655           receiver can decrypt the packet with several keys and check from
3656           the MAC which key decrypted the message correctly.
3657
3658         * Added silc_cipher_encrypt and silc_cipher_decrypt into the
3659           lib/silccrypt/silccipher.[ch].
3660
3661         * Added silc_hash_len to return the digest length into the
3662           lib/silcrypt/silchash.[ch].
3663
3664         * Rewrote parts of Silc Channel Payload interface in the
3665           lib/silccore/silcchannel.[ch].  The encode function now also
3666           encrypts the packet and parse function decrypts it.
3667
3668 Wed Mar  7 20:58:50 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3669
3670         * Fixed a minor formatting bug in the SKE's key material processing.
3671           It actually might have processed the keys wrong way resulting
3672           into wrong keys.
3673
3674         * Redefined the mandatory HMAC algorithms and added new algorithms.
3675           Added hmac-sha1-96 and hmac-md5-96 which are normal hmac-sha1
3676           and hmac-md5 truncated to 96 bits.  The mandatory is now 
3677           hmac-sha1-96.  Rest are optional (including the one that used
3678           to be mandatory).  Rationale for this is that the truncated HMAC
3679           length is sufficient from security point of view and can actually
3680           make the attack against the HMAC harder.  Also, the truncated
3681           HMAC causes less overhead to the packets.  See the RFC2104 for
3682           more information.
3683
3684         * Added new [hmac] configuration section.  The SKE used to use
3685           the hash names (md5 and sha1) in the SKE proposal as HMCAS which
3686           is of course wrong.  The official names that must be proposed in
3687           the SKE are the ones defined in the protocol specification
3688           (hmac-sha1-96 for example).  The user can configure any hmac
3689           using any hash function configured in the [hash] section.  At
3690           least, the mandatory must be configured.
3691
3692           Rewrote the HMAC interface in lib/silccrypt/silchmac.[ch].
3693
3694         * Added HMAC list to the SKE proposal list.  It has now both
3695           hash algorithm list and HMAC list.  This makes the protocol
3696           incompatible with previous versions.  The SKE now seems to work
3697           the way it is supposed to work, for the first time actually.
3698
3699         * Defined plain Hash algorithms to the protocol specification.
3700           Added sha1 and md5.
3701
3702 Tue Mar  6 15:36:11 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3703
3704         * Implemented support for key agreement packets into the server.
3705           Added functions silc_server_key_agreement and
3706           silc_server_send_key_agreement.  Other than these functions,
3707           server has nothing to do with this packet.
3708
3709         * Added support for private message key packets into the server.
3710           Added functions silc_server_private_message_key and
3711           silc_server_send_private_message_key.
3712
3713         * Updated TODO.
3714
3715         * Changed the silc_[client|server]_protocol_ke_set_keys to be
3716           called in the protocol's final callback instead in the END
3717           protocol state.  This makes a little more sense and in the same
3718           time in client we can use the same protocol routines for normal
3719           key exchange and to key agreement packet handling as well.
3720
3721         * Added to both client's and server's KE protocol context the
3722           SilcSKEKeyMaterial pointer to save the key material.  We will
3723           bring the key material to the protocol's final callback by doing
3724           this.  The final callback must free the key material.
3725
3726         * Added SKE's packet_send callback into client's KE protocol
3727           context so that the caller can choose what packet sending function
3728           is used.  This way we can use different packet sending when
3729           doing normal SKE when doing key agreement packet handling (in
3730           the key agreement packet handling we do not want to encrypt
3731           the packets).
3732
3733         * Implemented the responder side of the key agreement routines
3734           in the client.  The client can now bind to specified port and
3735           accept incoming key negotiation.  The key material is passed
3736           to the application after the protocol is over.
3737
3738         * Implemented the processing of incoming Key Agreement packet
3739           in the client.  Added function silc_client_key_agreement to
3740           process the packet.
3741
3742         * Implemented the intiator side of the key agreement routines
3743           in the client.  The client can now initiate key agreement with
3744           another remote client.  The key material is passed to the
3745           application after the protocol is over.
3746
3747         * Created client_keyagr.c to include all the key agreement 
3748           routines.
3749
3750         * Added macro SILC_TASK_CALLBACK_GLOBAL which is equal to the
3751           SILC_TASK_CALLBACK except that it is not static.
3752
3753         * Created client_notify.c and moved the Notify packet handling
3754           from the client.[ch] into that file.
3755
3756         * Created client_prvmsg.c and moved all private message and
3757           private message key routines from the client.[ch] into that file.
3758
3759         * Create client_channel.c and moved all channel message and
3760           channel private key routines from the client.[ch] into that file.
3761
3762         * Changed silc_client_get_client_by_id_resolve to resolve with
3763           WHOIS command instead of IDENTIFY command, in the file
3764           lib/silclient/idlist.c.
3765
3766 Mon Mar  5 18:39:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3767
3768         * Implemented the SKE's responder side to the Client library.
3769
3770         * When FAILURE is received to the protocol do not trust it
3771           blindly.  Register a timeout to wait whether the remote closes
3772           the connection as it should do it, only after that process the
3773           actual failure.  This was changed to both client and server.
3774
3775         * Added client_internal.h to include some of the structures
3776           there instead of client.h in lib/silcclient/.
3777
3778         * Added function silc_task_unregister_by_callback to unregister
3779           timeouts by the callback function.
3780
3781 Sat Mar  3 19:15:43 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3782
3783         * Some "Incomplete WHOIS info" errors has been appearing on the
3784           log files.  Took away the entry->userinfo check from WHOIS
3785           reply sending.  The entry->userinfo is now " " if client did not
3786           provide one.  I thought this was fixed earlier but something
3787           is wrong still.  Let's see if the error still appears.
3788
3789 Wed Feb 28 20:56:29 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3790
3791         * Fixed a minor bug in the login when the channel key is
3792           re-generated in the server.  It used to generate the key in
3793           wrong order and thus caused problems in the channel traffic.
3794
3795         * Fixed a minor bug in channel key distsribution after
3796           KICK command.  The key was not sent to the router even though
3797           it should've been.
3798
3799 Tue Feb 27 20:24:25 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3800
3801         * Added silc_ske_process_key_material_data as generic routine
3802           to process any key material as the SILC protocol dictates.  The
3803           function is used by the actual SKE library but can be used by
3804           applications as well.  This relates to the private message keys
3805           and the channel private keys since they must be processed the
3806           same way the normal SILC session keys.  The protocol dictates
3807           this.  Affected files: lib/silcske/silcske.[ch].
3808
3809           Added also silc_ske_free_key_material to free the
3810           SilcSKEKeyMaterial structure.
3811
3812         * Defined silc_cipher_set_key function to set the key for
3813           cipher without using the object's method function.  The affected
3814           files: lib/silccrypt/silccipher.[ch].
3815
3816         * Implemented silc silc_client_add_private_message_key,
3817           silc_client_add_private_message_key_ske, 
3818           silc_client_del_private_message_key,
3819           silc_client_list_private_message_keys and
3820           silc_client_free_private_message_keys functions in the
3821           client library.
3822
3823           Added functions silc_client_send_private_message_key to send
3824           the Private Message Key payload and silc_client_private_message_key
3825           to handle incoming Private Message Key payload.
3826
3827         * Added Cipher field to the Private Message Key payload to set
3828           the cipher to be used.  If ignored, the default cipher defined
3829           in the SILC protocol (aes-256-cbc) is used.
3830
3831 Tue Feb 27 13:30:52 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3832
3833         * Removed lib/silcclient/ops.h file.
3834
3835           Redefined parts of the SILC Client Library API. Created new
3836           file silcapi.h that deprecates the ops.h file and defines the
3837           published Client Library API.  Defined also private message key
3838           API and channel private key API into the file.
3839
3840           This is the file that the application must include from the
3841           SILC Client Library.  Other files need not be included by
3842           the application anymore.
3843
3844         * Added new key_agreement client operation callback and also
3845           defined the Key Agreement library API for the application.
3846
3847 Tue Feb 27 11:28:31 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3848
3849         * Added new packet type: SILC_PACKET_KEY_AGREEMENT.  This packet
3850           is used by clients to request key negotiation  between another
3851           client in the SILC network.  If the negotiation is started it
3852           is performed using the SKE protocol.  The result of the
3853           negotiation, the secret key material, can be used for example
3854           as private message key.
3855
3856           Implemented the Key Agreement payload into the files
3857           lib/silccore/silauth.[ch].
3858
3859 Mon Feb 26 12:13:58 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3860
3861         * Redefined ciphers for the SILC protocol.  Added some new ciphers
3862           and defined the key lengths for the algorithms.  Changed the
3863           code accordingly.  The default key length is now 256 bits.
3864
3865         * Fixed SKE key distribution function silc_ske_process_key_material
3866           when the key length is more than 128 bits.  The default key 
3867           length in SILC is now 256 bits.
3868
3869         * Added new command status type: SILC_STATUS_ERR_UNKOWN_ALGORITHM
3870           to indicate unsupported algorithm.
3871
3872         * Renamed rijndael.c to aes.c and all functions as well.
3873
3874         * Fixed a long standing channel key setting bug in client library.
3875           Weird that it has never surfaced before.
3876
3877         * Fixed bug in channel deletion.  If the entire channel is removed
3878           then it must also delete the references of the channel entry
3879           from the client's channel list as the client's channel entry and
3880           the channel's client entry share same memory.
3881
3882 Sun Feb 25 20:47:29 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3883
3884         * Implemented CONNECT and SHUTDOWN commands in the client.
3885
3886         * Implemented CLOSE command to the client.
3887
3888         * Added the function silc_idlist_find_server_by_name into the
3889           files silcd/idlist.[ch].
3890
3891           Added the function silc_idlist_find_server_by_conn into the
3892           files silcd/idlist.[ch].
3893
3894 Sat Feb 24 23:45:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3895
3896         * DIE command was renamed to SHUTDOWN.  Updated the both code
3897           and protocol specs.
3898
3899         * Defined SILC_UMODE_NONE, SILC_UMODE_SERVER_OPERATOR and
3900           SILC_UMODE_ROUTER_OPERATOR modes into lib/silccore/silcmode.h.
3901
3902         * Implemented CONNECT, CLOSE and SHUTDOWN commands to the server
3903           side.
3904
3905         * Added function silc_server_create_connection function to create
3906           connection to remote router.  My server implementation actually
3907           does not allow router to connect to normal server (it expects
3908           that normal server always initiates the connection to the router)
3909           so the CONNECT command is only good for connecting to another
3910           router.
3911
3912 Sat Feb 24 16:03:45 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3913
3914         * Added SILC_NOTIFY_TYPE_KICKED to indicate that the client
3915           or some other client was kicked from the channel.
3916
3917           Implemented the handling of the notify type to both client
3918           and server.
3919
3920           Implemented silc_server_send_notify_kicked to send the KICKED
3921           notify.  It is used to send it to the server's primary router.
3922
3923         * Implemented the KICK command into server and client.
3924
3925         * Added `query' argument to the silc_idlist_get_client function
3926           to indicate whether to query the client from server or not if
3927           it was not found.
3928
3929         * Added new command status type SILC_STATUS_ERR_NO_CHANNEL_FOPRIV
3930           to indicate that the client is not channel founder.
3931
3932         * Updated TODO.
3933
3934 Sat Feb 24 00:00:55 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3935
3936         * Removed the rng context from SilcPacketContext structure and
3937           changed that the packet routine uses the Global RNG API.
3938
3939 Fri Feb 23 11:22:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3940
3941         * Added support for quit message that client can "leave" on the
3942           channel when it quits the SILC.  It is ditributed inside the
3943           SILC_NOTIFY_TYPE_SIGNOFF notify type.
3944
3945           Added silc_server_free_client_data that will take the
3946           signoff message as argument.
3947
3948         * Changed SKE routines to use the silc_pkcs_sign/verify routines.
3949
3950 Thu Feb 22 23:05:36 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3951
3952         * Updated parts of the protocol specification to keep it up
3953           to date.
3954
3955 Thu Feb 22 15:08:20 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3956
3957         * Added List flag (SILC_PACKET_FLAG_LIST) to indicate list of
3958           payloads in one packet.
3959
3960         * Deprecated following packet types: NEW_ID_LIST, NEW_CHANNEL_LIST,
3961           NEW_CHANNEL_USER_LIST, SET_MODE and SET_MODE_LIST.  List packets
3962           use now the new List flag.
3963
3964         * Also deprecated the following packet types: REPLACE_ID,
3965           NEW_CHANNEL_USER and REMOVE_CHANNEL_USER packet types.
3966          
3967         * Added list support for Notify packet in server.
3968
3969         * Added silc_server_send_notify_channel_change to send the
3970           CHANNEL_CHANGE notify type to replace channel ID's.  Deprecates
3971           the silc_server_send_replace_id.
3972
3973         * Added silc_server_send_notify_nick_change to send the
3974           NICK_CHANGE notify type.  Deprecates the function
3975           silc_server_send_replace_id.
3976
3977         * Added silc_server_send_notify_join to send the JOIN notify type.
3978           Deprecates the function silc_server_send_new_channel_user.
3979
3980         * Added silc_server_send_notify_leave to send LEAVE notify type.
3981           Deprecates the function silc_server_send_remove_channel_user.
3982
3983         * Added silc_server_send_notify_cmode and 
3984           silc_server_send_notify_cumode to send CMODE and CUMODE notify
3985           types.  Deprecates the silc_server_send_set_mode function.
3986
3987         * Added SERVER_SIGNOFF notify type to indicate that server has
3988           quit.  This means that all clients on the channel from that 
3989           server will drop.  This can be also used when netsplit happens.
3990
3991           Deprecated REMOVE_ID packet type since it is not needed anymore
3992           even from server.
3993
3994           Added silc_server_send_notify_server_signoff to send the
3995           SERVER_SIGNOFF notify type.  Deprecates the function
3996           silc_server_send_remove_id.
3997
3998           Added also silc_server_send_notify_signoff to send the
3999           SIGNOFF notify type.
4000
4001         * Employed the PKCS #1. It is the mandatory way to do RSA in the
4002           SILC protocol from this day on.  Changed the protocol 
4003           specification as well.
4004
4005         * Added silc_server_send_notify_topic_set to send TOPIC_SET
4006           notify type.  It is used between routers to notify about
4007           topic changes on a channel.
4008
4009         * Added silc_id_dup into lib/silccore/id.[ch] to duplicate
4010           ID data.
4011
4012         * Partly updated the protocol specification to comply with the
4013           changes now made.  It is still though a bit outdated.
4014
4015         * The JOIN notify type now takes one extra argument <Channel ID>.
4016           The packet used to be destined to the channel but now the
4017           JOIN type may be sent as list thus it is impossible to 
4018           destine it to any specific channel.  By adding this argument
4019           it is again possible.
4020
4021 Wed Feb 21 22:39:30 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4022
4023         * Added CREDITS file.  The CHANGES and CREDITS file will appear
4024           in the distribution as well.
4025
4026 Wed Feb 21 14:17:04 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4027
4028         * Implemented CMODE_CHANGE, CUMODE_CHANGE and TOPIC_SET notify
4029           types in the server's silcd/packet_receive.c.
4030
4031         * Implemented CMODE and CUMODE to work in router environment.
4032
4033         * Fixed minor encoding and decoding buglet from the
4034           lib/silccore/silcmode.c.
4035
4036         * Fixed buffer overflow from lib/silcclient/command.c in USERS
4037           command parsing.
4038
4039 Wed Feb 21 12:44:00 EET 2001  Mika Boström <bostik@lut.fi>
4040
4041         * Changed all SilcConfigServer* and silc_config_server* to
4042           SilcServerConfig* and silc_server_config*, respectively.
4043           Patch by Bostik.
4044
4045 Wed Feb 21 00:10:00 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4046
4047         * Associated the ID (client or server ID) to the Authentication
4048           Payload to avoid any possibility of forging.  Updated the
4049           protocol specification and the code accordingly.
4050
4051 Tue Feb 20 14:14:14 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4052
4053         * The RSA key length is now save to the RsaKey context in the
4054           key generation process in lib/silccrypt/rsa.c.  The key length
4055           is now used to figure out the maximum size of the block allowed
4056           to be encrypted/signed.
4057
4058         * Added silc_mp_mp2bin_noalloc into lib/silcmath/mpbin.[ch].  It
4059           is equivalent to the silc_mp_mp2bin but does not allocate any
4060           memory.
4061
4062         * Changed silc_mp_mp2bin API to take length argument.  If it is
4063           non-zero then the buffer is allocated that large.  If zero, then
4064           the size is approximated using silc_mp_sizeinbase, which however
4065           is not relieable.
4066
4067         * Created Global RNG API which is global RNG that application can
4068           initialize.  After initializing, any routine anywhere in the
4069           code (including library) can use RNG without allocating a new
4070           RNG object.  This was done to allow this sort of use of the 
4071           RNG in code that has no chance to allocate RNG object.  All
4072           applications currently allocate this and many routines in the
4073           library use this.  Affected file lib/silccrypt/silcrng.[ch].
4074
4075         * Removed the RNG kludge from lib/silcmath/primegen.c and changed
4076           it to use the Global RNG API.
4077
4078         * Defined Authentication Payload into protocol specification that
4079           is used during SILC session to authenticate entities.  It is
4080           used for example by client to authenticate itself to the server
4081           to obtain server operator privileges.
4082
4083           Implemented this payload into the lib/silccore/silcauth.[ch].
4084           Implemented also routines for public key based authentication
4085           as the new protocol specification dictates.
4086
4087           Moved definitions of different authentication methods from
4088           lib/silccore/silcprotocol.h into lib/silccore/silcauth.h.
4089
4090         * Added silc_pkcs_encrypt, silc_pkcs_decrypt, silc_pkcs_sign,
4091           silc_pkcs_verify and silc_pkcs_sign_with_hash and
4092           silc_pkcs_verify_with_hash functions into the file 
4093           lib/silccrypt/silcpkcs.[ch].
4094
4095 Mon Feb 19 19:59:28 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4096
4097         * The client entry's userinfo pointer must be always valid. 
4098           Otherwise the [<unknown>] bug will surface beacuse the WHOIS
4099           will fail since it requires the userinfo.  Now, the userinfo
4100           is allocated as "" if actual userinfo does not exist.  Actually,
4101           it must exist and it is totally Ok to drop client connections
4102           that does not announce the userinfo.  However, we will make
4103           this workaround for now.
4104
4105         * Added silc_net_get_remote_port into lib/silcutil/silcnet.[ch]
4106           to return the remote port by socket.
4107
4108 Mon Feb 19 14:26:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4109
4110         * Changed SILC_SERVER_COMMAND_EXEC_PENDING macro to the name
4111           SILC_SERVER_PENDING_EXEC and added an new macro
4112           SILC_SERVER_PENDING_DESTRUCTOR which is called to free the
4113           data or when error occurs while processing the pending command.
4114
4115           Added new argument `destructor' into silc_server_command_pending
4116           and to the SilcServerCommandPending object.  This destructor is
4117           now called after calling the pending callback or if error occurs
4118           immediately.  If error occurs the actual pending callback won't
4119           be called at all - only the destructor.  The destructor may be
4120           NULL if destructor is not needed.
4121
4122           All this applies for client library code as well.  Similar
4123           changes were made there as well for the pending commands.
4124
4125           In the client, the application must now allocate the 
4126           SilcClientCommandContext with the silc_client_command_alloc
4127           function.
4128
4129         * Added reference counter to the SilcServerCommandContext.  Added
4130           function silc_server_command_alloc and silc_server_command_dup 
4131           functions.
4132
4133           Same type of functions added to the client library for the same
4134           purpose as well.
4135
4136         * Removed the cmd_ident from IDListData away since it is now 
4137           global for all connections.  It is the command identifier used
4138           in command sending and with pending commands.  The affected file
4139           is silcd/idlist.h.
4140
4141         * Added reference counter to the SilcSocketConnection objecet to
4142           indicate the usage count of the object.  The object won't be
4143           freed untill the reference counter hits zero.  Currently only
4144           server uses this, and client ignores it.  The client must be
4145           set to use this too later.  The affected files are
4146           lib/silccore/silcsockconn.[ch].  Added also the function
4147           silc_socket_dup to increase the reference counter.
4148
4149           This was mainly added because it is possible that the socket
4150           is removed underneath of pending command or other async
4151           operation.  Now it won't be free'd and proper DISCONNECTING
4152           flags, etc. can be set to avoid sending data to connection that
4153           is not valid anymore.
4154
4155         * Added SILC_SET_DISCONNECTING to server.c when EOF is read from
4156           the connection.  After that it sets SILC_SET_DISCONNECTED.
4157           It is, however, possible that the socket data is not still freed.
4158           The silc_server_packet_process now checks that data is not
4159           read or written to connection that is DISCONNECTED.  The socket
4160           get's freed when the reference counter hits zero.
4161
4162 Mon Feb 19 00:50:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4163
4164         * Changed the client operation API: channel_message operation's
4165           `sender' is now the client entry of the sender, not the nickname
4166           and the `channel' is the channel entry, not the channel name.
4167
4168           In the private_message operation the `sender' is now also the
4169           client entry of the sender not the nickname.
4170
4171           Affected file is lib/silcclient/ops.h and all applications
4172           using the client operations.
4173
4174 Sat Feb 17 22:11:50 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4175
4176         * Moved the calling of ops->connect() from connect_to_server_final
4177           into receive_new_id functin since that is the point when the
4178           client is actually allowed to send traffic to network.  The
4179           affected file is lib/silcclient/client.c.
4180
4181 Sat Feb 17 13:15:35 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4182
4183         * When receiving NEW_CHANNEL_LIST, NEW_CHANNEL_USER_LIST,
4184           NEW_ID_LIST and SET_MODE_LIST packets, broadcast the list packet
4185           (if needs broadcasting) instead of broadcasting the packets one
4186           by one which would make a burst in the network traffic.
4187
4188         * Added `broadcast' argument to the functions in silcd/server.[ch]
4189           silc_server_create_new_channel[_with_id] to indicate whether
4190           to send New Channel packet to primary router.
4191
4192 Sat Feb 17 01:06:44 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4193
4194         * Added new function into the silcd/server.[ch] files:
4195           silc_server_create_new_channel_with_id to create new channel with
4196           already existing Channel ID.
4197
4198         * Added new packet type SILC_PACKET_SET_MODE_LIST into the file
4199           lib/silccore/silcpacket.h.  This packet is used t send list of
4200           Set Mode payloads inside one packet.  Server uses this to set
4201           the modes for the channels and clients on those channels, that it
4202           announced to the router when it connected to it.  The protocol
4203           specification has been updated accordingly.
4204
4205         * The silc_server_new_channel did not handle the packet coming
4206           from normal server as it normally does not send that.  However,
4207           when it announces its channels it does send it.  Implemented
4208           the support for that.
4209
4210         * Added SILC_ID_CHANNEL_COMPARE macro to compare to Channel ID's
4211           into the file lib/silccore/id.h.
4212
4213 Fri Feb 16 23:57:29 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4214
4215         * Fixed memory leaks in the functions silc_idlist_del_client,
4216           silc_idlist_del_channel and silc_idlist_del_server in the file
4217           silcd/idlist.c.  All of those leaked like a sieve.
4218
4219         * Fixed some small memory leaks in the client's function
4220           silc_client_notify_by_server.
4221
4222         * Added functions into silcd/server.c: silc_server_announce_clients,
4223           silc_server_announce_channels and silc_server_announce_server.
4224           These functions are used by normal and router server to announce
4225           to its primary router about clients, channels and servers (when
4226           router) that we own.  This is done after we've connected to the
4227           router.
4228
4229           These functions effectively implements the following packet types:
4230           SILC_PACKET_NEW_CHANNEL_LIST, SILC_PACKET_NEW_CHANNEL_USER_LIST
4231           and SILC_PACKET_NEW_ID_LIST.
4232
4233         * Added new functions into the silcd/packet_receive.[ch]:
4234           silc_server_new_id_list, silc_server_new_channel_list and
4235           silc_server_new_channel_user_list to handle the incoming 
4236           NEW_ID_LIST, NEW_CHANNEL_LIST and NEW_CHANNEL_USER_LIST packets.
4237
4238         * Added support of changing Channel ID in the function
4239           silc_server_replace_id.  If the server that announces a channel
4240           to the router already exists in the router (with same name but
4241           with different Channel ID), router is responsible to send
4242           Replace ID packet to the server and force the server to change
4243           the Channel ID to the one router has.
4244
4245         * Added new notify type SILC_NOTIFY_TYPE_CHANNEL_CHANGE to notify
4246           client that the Channel ID has been changed by the router.  The
4247           normal server sends this to the client.  Client must start using
4248           the new Channel ID as the channel's ID.
4249
4250           Implemented handling of this new type into lib/silcclient/client.c
4251           into the function silc_client_notify_by_server.
4252
4253         * Added new function silc_idlist_replace_channel_id into the files
4254           silcd/idlist.[ch] to replace the Channel ID.
4255
4256 Fri Feb 16 14:14:00 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4257
4258         * Call silc_server_command_identify_check always when processing
4259           the IDENTIFY command in silcd/command.c
4260
4261 Thu Feb 15 20:07:37 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4262
4263         * Added new packet type SILC_PACKET_HEARTBEAT that is used to
4264           send keepalive packets.  The packet can be sent by clients, 
4265           servers and routers.
4266
4267           Added function silc_socket_set_heartbeat into the file
4268           lib/silccore/silcsockconn.[ch] to set the heartbeat timeout.
4269           If not set, the heartbeat is not performed.  The actual 
4270           heartbeat is implemented in the low level socket connection
4271           library.  However, application is responsible of actually
4272           sending the packet.
4273
4274           Added silc_server_send_heartbeat to send the actual heartbeat
4275           packet into silcd/packet_send.[ch].  Server now performs
4276           keepalive with all connections.
4277
4278         * Added silc_task_get_first function into lib/silcutil/silctask.c
4279           to return the timeout task with shortest timeout.  There was a bug
4280           in task unregistration that caused problems.  TODO has been
4281           updated to include that task system must be rewritten.
4282
4283         * The client library will now resolve the client information when
4284           receiving JOIN notify from server for client that we know but
4285           have incomplete information.
4286
4287         * Rewrote parts of silc_server_remove_from_channels and
4288           silc_server_remove_from_one_channel as they did not remove the
4289           channel in some circumstances even though they should've.
4290
4291         * Encryption problem encountered in server:
4292
4293           The LEAVE command used to send the Channel Key packet to the
4294           router immediately after generating it.  However, the code
4295           had earlier sent Remove Channel user packet but not immediately,
4296           ie. it was put to queue.  The order of packets in the router
4297           was that Channel Key packet was first and Remove Channel User
4298           packet was second, even though they were encrypted in the
4299           reverse order.  For this reason, MAC check failed.  Now, this
4300           is fixed by not sending the Channel Key packet immediately but
4301           putting it to queue.  However, this is more fundamental problem:
4302           packets that are in queue should actually not be encrypted 
4303           because packets that are sent immediately gets encrypted
4304           actually with wrong IV (and thus MAC check fails).  So, packets
4305           that are in queue should be encrypted when they are sent to
4306           the wire and not when they put to the queue.
4307
4308           However, the problem is that the current system has not been
4309           designed to work that way.  Instead, the packet is encrypted
4310           as soon as possible and left to the queue.  The queue is then
4311           just purged into wire.  There won't be any fixes for this
4312           any time soon.  So, the current semantic for packet sending
4313           is as follows:
4314
4315           o If you send packet to remote host and do not force the send
4316           (the packet will be in queue) then all subsequent packets to the
4317           same remote host must also be put to the queue.  Only after the
4318           queue has been purged is it safe again to force the packet
4319           send immediately.
4320
4321           o If you send all packets immediately then it safe to send
4322           any of subsequent packets through the queue, however, after
4323           the first packet is put to queue then any subsequent packets
4324           must also be put to the queue.
4325
4326           Follow these rules and everything works fine.
4327
4328 Thu Feb 15 14:24:32 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4329
4330         * Added new function silc_server_remove_clients_by_server to
4331           remove all client entries from ID list when the server connection
4332           is lost.  In this case it is also important to invalidate all
4333           client entires as they hold the invalid server entry.  This
4334           fixes fatal bug when server has lost connection and will reconnect
4335           again.
4336
4337 Wed Feb 14 16:03:25 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4338
4339         * Made some sanity checks to silc_server_daemonise like to check
4340           whether the requested user and group actually exists.
4341
4342         * Added sanity check to SKE's silc_ske_responder_finish to check
4343           that the public and private key actually is valid. 
4344
4345         * Invalidate the client's nickname when receiving Replace ID
4346           packet and the Client ID is being replaced.  This means that the
4347           server will query the nickname if someone needs it (client)
4348           a bit later.
4349
4350         * Sort the ID Cache in client library when the ID Cache data
4351           has changed (needs sorting).
4352
4353         * Do not allow for SILC client to create several connections to
4354           several servers.  The client does not support windows right now
4355           and generating multiple connections causes weird behaviour.
4356
4357           Irssi-silc client does support windows and can handle several
4358           connections without problems, see: www.irssi.org and SILC plugin.
4359
4360         * Fixed some places where client was added to the IDList.  The
4361           rule of thumb is following (in order to get everything right):
4362           If the client is directly connected local client then the 
4363           `connection' argument must be set and `router' argument must be 
4364           NULL to silc_idlist_add_client function.  If the client is not
4365           directly connected client then the `router' argument must
4366           bet set and the `connection' argument must be NULL to the
4367           silc_idlist_add_client function.
4368
4369         * The funtion silc_server_packet_send_local_channel actually did
4370           not check whether the client was locally connected or not.  It
4371           does that now.  Fixed a bug related to LEAVE command.
4372
4373         * Fixed Remove Channel User payload parsing bug in server's
4374           silcd/packet_receive.c.  Fixed a bug related to LEAVE command.
4375
4376         * The server's silc_server_save_channel_key now checks also the
4377           global ID list for the channel as it might not be in the local
4378           list.  Fixed a bug related to LEAVE command.
4379
4380         * Is this the end of the [<unknown>] buglet that has been lurking
4381           around for a long time?  A little for loop fix in server's
4382           silc_server_command_whois_parse that is used by both IDENTIFY
4383           and WHOIS command.  At least, this was a clear bug and a cause
4384           of one type of [<unknown>] buglet.
4385
4386         * WHOIS and IDENTIFY commands call the function
4387           silc_server_command_[whois/identify]_check function even if
4388           we are not router server.
4389
4390 Tue Feb 13 19:55:59 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4391
4392         * Added --with-gmp configuration option.  If set the GMP
4393           is always compiled in the SILC source tree.  If not set then
4394           it is checked whether the system has the GMP3 installed.  If
4395           it has then the GMP won't be compiled (the system's headers
4396           and library is used), if it doesn't have it then the GMP is
4397           compiled in the SILC source tree.
4398
4399 Mon Feb 12 11:20:32 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4400
4401         * Changed RSA private exponent generation to what PKCS #1
4402           suggests.  We try to find the smallest possible d by doing
4403           modinv(e, lcm(phi)) instead of modinv(e, phi).  Note: this is
4404           not security fix but optimization.
4405
4406 Sun Feb 11 18:19:51 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4407
4408         * Added new config entry [Identity] to fork the server and run
4409           it as specific user and group.  A patch from Bostik.
4410
4411         * Imported Dotconf configuration library into lib/dotconf.
4412           This will be used to create the SILC configuration files later.
4413           It will appear in the distsribution after this commit.
4414
4415 Sat Feb 10 21:13:45 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4416
4417         * A big code auditing weekend happening.  Auditing code for 
4418           obvious mistakes, bugs and errors.  Also, removing any code
4419           that is obsolete.
4420
4421           Removed files for being obsolete:
4422
4423           o lib/silcutil/silcbuffer.c (the buffer interface is entirely in
4424           inline in the file lib/silcutil/silcbuffer.h)
4425
4426           o lib/silcutil/silcbufutil.c (the header has inline versions)
4427
4428           Changed code to fix possible error conditions:
4429
4430           o The buffer formatting routines now check that the destination
4431           buffer really has enough space to add the data.  This applies for
4432           both buffer formatting and unformatting 
4433           (lib/silcutil/silcbuffmt.[ch]).  Also, the entire buffer
4434           unformatting was changed to accomodate following rules: 
4435           XXX_*STRING_ALLOC will allocate space for the data into the pointer
4436           sent to the function while XXX_*STRING will not allocate or copy 
4437           the data into the buffer.  Instead it sets the pointer from the
4438           buffer into the pointer sent as argument (XXX_*STRING used to
4439           require that the pointer must be allocated already).  This change
4440           makes this whole thing a bit more consistent and more optimized
4441           (note that the data returned in the unformatting with XXX_*STRING
4442           must not be freed now).  The routines return now -1 on error.
4443
4444           o Tried to find all code that use buffer_format and buffer_unformat
4445           and added return value checking to prevent formatting and
4446           especially unformatting errors and possible subsequent fatal
4447           errors.
4448
4449           o Changed ske->x and ske->KEY to mallocated pointers in
4450           lib/silcske/silcske.h.  Fixed possible data and memory leak.
4451
4452           o Added return value checking to all *_parse* functions.  Fixed
4453           many memory leaks as well.
4454
4455           o Added length argument to silc_id_str2id in lib/silccore/id.[ch]
4456           so that buffer overflows would not happen.  All code now also
4457           checks the return value as it can fail.
4458
4459 Mon Feb  5 20:08:30 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4460
4461         * Added reconnection support to server if the normal server looses
4462           its connection to the router (for example if router is rebooted).
4463           The server performs normal reconnection strategy implemented
4464           to the server.  Affected file silcd/server.c.
4465
4466 Sun Feb  4 13:18:32 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4467
4468         * Added new packet type SILC_PACKET_SET_MODE that is used to
4469           distribute the information about changed modes (for clients,
4470           channels and clients channel modes) to all routers in the
4471           network.  Updated the protocol specification accordingly.
4472
4473           Added functions into silcd/packet_send.c and 
4474           silcd/packet_receive.c: silc_server_send_set_mode, 
4475           silc_server_set_mode.
4476
4477           Added new files silcmode.[ch] into lib/silccore that implements
4478           the encoding and decoding of Set Mode Payload.  Added new type
4479           SilcSetModePayload.  Moved the definitions of different modes
4480           from lib/silccore/silcchannel.h into lib/silccore/silcmode.h.
4481
4482 Sat Feb  3 15:44:54 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4483
4484         * Oops, a little mistake in server's connection authentication 
4485           protocol.  The protocol is not ended with FAILURE but with
4486           SUCCESS if the authentication is Ok. :)  Affected file is
4487           silcd/protocol.c.
4488
4489         * Implemented NICK_CHANGE notify handling in server in the file
4490           silcd/packet_receive.c  The NICK_CHANGE notify is distributed to
4491           the local clients on the channel.  After the changing nickname
4492           in router environment snhould work and the [<unknown>] nickname
4493           should appear no more.
4494  
4495           The silc_server_replace_id function that receives the Replace ID
4496           payload now sends the NICK_CHANGE notify type also in the file
4497           silcd/packet_receive.c
4498
4499         * Changed WHOIS and IDENTIFY command to support the maximum amount
4500           of arguments defined in protocol specs (3328 arguments).  This 
4501           fixed a bug that caused problems when there were more than three
4502           users on a channel.
4503
4504 Fri Feb  2 11:42:56 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4505
4506         * Added extra parameter, command identifier, to the
4507           silc_client_send_command so that explicit command identifier
4508           can be defined.
4509
4510           Changed that ID list routines uses specific command identifier
4511           when sending WHOIS/IDENTIFY requests to the server so that they
4512           can be identified when the reply comes back.
4513
4514           Affected files lib/silcclient/command.[ch],
4515           lib/silcclient/client.c and lib/silcclient/idlist.[ch].
4516
4517         * Added `sender' argument to silc_server_packet_send_to_channel
4518           to indicaet the sender who originally sent the packet to us
4519           that we are now re-sending.  Ignored if NULL.  Affected file
4520           silcd/packet_send.[ch].
4521
4522         * Added some server statistics support in silcd/server_internal.h
4523           SilcServerStatistics structure and around the server code.  Also
4524           send some nice statistics information when client is connecting
4525           to the client.
4526
4527 Thu Feb  1 23:31:21 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4528
4529         * Fixed channel ID decoding in server's JOIN command reply in
4530           silcd/command_reply.c
4531
4532         * Fixed braodcasting of replace ID payload to not to send it if
4533           we are standalone server in silcd/packet_receive.c.
4534
4535         * Fixed all channel message sending routines to not to send
4536           packets to clients that has router set, since they are routed
4537           separately in the same function earlier.  Affects file
4538           silcd/packet_send.c and all channel packet sending functions.
4539
4540         * In USERS reply, res_argv[i] are not allocated, the table
4541           is allocated.  Thus changed that free the table, not its
4542           internals.
4543
4544         * In server's whois_check and identify_check if the client is
4545           locally connected do not send any WHOIS commands - they are not
4546           needed.
4547
4548 Thu Feb  1 21:32:27 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4549
4550         * Fixed some minor bugs in client when sending WHOIS command.  The
4551           arguments was in wrong order.
4552
4553         * Removed statis function add_to_channel from server in 
4554           silcd/command.c that was previously used with the joining but
4555           is obsolete now.
4556
4557         * Tested USERS command in router environment successfully with two
4558           routers, two servers and two clients.
4559
4560 Thu Feb  1 00:54:26 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4561
4562         * Reorganized the USERS command and command reply in client library
4563           in lib/silcclient/command.c and lib/silcclient/command_reply.c.
4564           When the command is given by user we register a pending command
4565           callback that will reprocess the command after the reply has been
4566           received from the server.  When reprocessing the packet we then
4567           display the information.  Thus, the USERS information is displayed
4568           now in the command callback instead of in the command reply
4569           callback.  The processing of the command is same as previously
4570           when server has sent the command reply in the JOINing process.
4571
4572         * Added to USERS command in silcd/command_reply.c to join the client,
4573           we didn't use to know about, to the channel after we've created
4574           a client entry for it.  Also, for clienet we did know already still
4575           check whether it is on the channel or not and add it if not.
4576
4577         * Removed silc_server_command_join_notify as the function and its
4578           use was obsolete.
4579
4580 Tue Jan 30 22:39:15 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4581
4582         * Changed the client's pending command handling to the same as the
4583           server's pending command handling.  It is also now possible to
4584           execute command reply functions from other command reply
4585           function as the function callbacks for commands and command
4586           replies are one and same.  The pending commands are not static
4587           list anymore, it is mallocated SilcDList in lib/silcclient/client.h
4588           in client connection context.  Thus, pending commands are server
4589           connection specific as it is convenient.
4590
4591           Changed the function silc_client_command_pending and
4592           silc_client_command_pending_del and added new function
4593           silc_client_command_pending_check.  Removed the 
4594           SILC_CLIENT_CMD_REPLY_EXEC, and SILC_CLIENT_PENDING_COMMAND_CHECK
4595           macros.
4596
4597         * Added cmd_ident, current command identifier, to the client
4598           connection context in lib/silcclient/client.h to keep track on
4599           command identifiers used in command sending.  Client's command reply
4600           function handling now supports the mandatory command identifiers.
4601
4602         * Added SILC_CLIENT_COMMAND_EXEC_PENDING macros to all command reply
4603           funtions in client to fully support pending command callbacks.
4604
4605         * NOTE: the name_list in USERS (old NAMES) command is NOT sent anymore
4606           as one of the arguments to the application in the command reply
4607           client operation.
4608
4609         * NOTE: The FORWARDED flag is depracated.  It used to be depracated
4610           before first releasing SILC but came back.  Now it is removed again
4611           and should come back nomore.  The FORWARDED flag was used only
4612           by the JOINing procedure by forwarding the command packet to router.
4613           Now, the JOINing procedure has been changed to more generic (due
4614           to various router environment issues) and FORWARDED is not needed
4615           anymore for anything.  The protocol specification is yet to be
4616           updated.
4617
4618           Now, removed silc_server_packet_forward from server and the flag
4619           SILC_PACKET_FORWARDED from lib/silccore/silcpacket.h.
4620
4621 Tue Jan 30 00:05:05 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4622
4623         * Renamed NAMES command to USERS command.  The NAMES was named that
4624           due to historical reasons.  Now it is renamed.  Also, rewrote
4625           parts of the USERS command.  The nickname list is not sent anymore
4626           by the server.  Only Client ID and mode lists are sent in the USERS
4627           command.  Changed this also to the protocol specification.
4628
4629           The client now resolves the names and stuff after it receives
4630           the USERS list from the server when joining to the channel.
4631
4632         * WHOIS and IDENTIFY commands has been changed to support multiple
4633           Client ID's per command.  One can now search for multiple users
4634           in the network by sending only one WHOIS or IDENTIFY command.
4635           Changed the code and the protocol specifications.
4636
4637         * Removed silc_server_command_identify_parse and changed that IDENTIFY
4638           uses silc_server_command_whois_parse to parse the request. */
4639
4640         * If normal server, do not parse the WHOIS and IDENTIFY requests
4641           before sending it to the router.  Saves some time.
4642
4643 Sun Jan 28 16:19:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4644
4645         * Fixed JOIN command on client library.  Wrong number of arguments
4646           used to crash the client.
4647
4648         * Added silc_server_channel_has_global function to check whether
4649           channel has global users or not.
4650
4651         * Added silc_server_channel_has_local function to check whether channel
4652           has locally connected clients on the channel.
4653
4654         * The silc_server_remove_from_one_channel now checks whether the
4655           channel has global users or not after given client was removed from
4656           the channel.  It also checks whether the channel has local clients
4657           on the channel anymore.  If it does not have then the channel entry
4658           is removed as it is not needed anymore.
4659
4660         * The silc_server_notify now checks on JOIN notify whether the joining
4661           client is one of locally connected or global.  If it is global then
4662           the channel has now global users on the channel and that is marked
4663           to the channel entry.  Also, it now saves the global client to
4664           global list who is joining and JOINs it to the channel.  This is
4665           for normal server, that is.
4666
4667           Changed silc_server_send_notify_on_channel, 
4668           silc_server_packet_relay_to_channel and 
4669           silc_server_packet_send_to_channel check if we are normal server
4670           and client has router set (ie. global client) do not send the
4671           message to that client, as it is already routed to our router.
4672
4673         * Implemented LEAVE notify type handling in silc_server_notify 
4674           function.
4675
4676         * Tested LEAVE command in router environment successfully.  Tested
4677           with two routers, two servers and two clients.
4678
4679         * Updated TODO.
4680
4681         * idlist_find_xxx_by_id routines now dumps the ID on the debug mode.
4682
4683         * Implemented SIGNOFF notify type handling in silc_server_notify
4684           function.
4685
4686         * silc_server_remove_id now removes the client entry from all channels
4687           it has joined and thusly sends SIGNOFF notify type.
4688
4689         * Rewrote the NAMES list generation in server by removing two excess
4690           loops.  The lists are created now inside one loop.
4691
4692 Sat Jan 27 22:34:56 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4693
4694         * silc_server_remove_channel_user checks now also global list
4695           for channel and client.
4696
4697         * silc_server_new_channel_user checks now both local and global
4698           list for channel and client.  Fixed a bug in client id decoding.
4699           Used to decode wrong buffer.
4700
4701         * silc_server_channel_message checks now both local and global
4702           list for channel entry.
4703
4704         * Tested channel joining (hence JOIN) in router environment
4705           successfully.  Tested with two routers, two servers and two
4706           clients.
4707
4708         * Tested channel message sending in router environment successfully.
4709
4710 Thu Jan 11 03:22:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4711
4712         * Added silc_server_save_channel_key into server.[ch] to save the
4713           received channel key in Channel Key payload processing. It is
4714           also used in JOIN command reply handling.
4715
4716           Equivalent function silc_client_save_channel_key added into
4717           client.[ch] into client library.
4718
4719         * Changed JOIN command reply to send information whether the channel
4720           was created or not (is existing already) and the channel key 
4721           payload.  Changed protocol specs accordingly.
4722
4723         * Fixed bugs in WHOIS and IDENTIFY command reply sending when
4724           the request was sent by ID and not by nickname.  Crashed on
4725           NULL dereference.
4726
4727 Sat Dec 23 21:55:07 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
4728
4729         * Fixed a bug in Client library.  IDENTIFY and WHOIS reply functions
4730           now correctly save the received data.
4731
4732         * silc_server_free_sock_user_data now notifies routers in the 
4733           network about entities leaving the network.
4734
4735           At the same time implemented functions silc_server_remove_id
4736           and silc_server_send_remove_id to receive and send REMOVE_ID
4737           packets.  The packet is used to notify routers in the network
4738           about leaving entities.  The ID removed will become invalid in
4739           the network.
4740
4741         * Added function silc_idlist_del_server into server. Removes and
4742           free's server entry from ID list.
4743
4744         * silc_server_private_message function now checks, if we are router,
4745           that the destination ID really is valid ID, naturally.
4746
4747         * In router when NEW_ID packet is received (for new client) the
4748           hash of the Client ID is saved in the ID Cache but the
4749           client->nickname is set to NULL, instead of putting the hash
4750           to it as well.
4751
4752           IDENTIFY command now also checks that client->nickname must be
4753           valid. If it is not if will request the data from the server who
4754           owns the client.  Added new function 
4755           silc_server_command_identify_check.
4756
4757         * Added silc_command_set_command into lib/silccore/silcommand.[ch]
4758           to set the command to already allocated Command Payload.
4759
4760         * Tested private message sending in router environment with two
4761           routers, two servers and two clients.  Fixed minor bugs and now
4762           it works fine.
4763
4764         * Fixed segfault from client's NAMES command. Used to crash if
4765           not on any channel.
4766
4767         * Forwarded packets must not be routed even if it is not destined
4768           to the receiver.  Changed server code comply with this.
4769
4770 Sun Dec 17 14:40:08 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
4771
4772         * Added `require_reverse_mapping' boolean value to ServerParams
4773           structure. If TRUE (not default) the server will require that
4774           the connecting host has fully qualified domain name.
4775
4776           If the reverse mapping is not required and hostname could not be
4777           found the IP address is used as hostname.
4778
4779 Sat Dec 16 17:39:54 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
4780
4781         * Implemented version string checking to both client and server.
4782           The check is incomplete currently due to the abnormal version 
4783           strings used in development version of SILC.
4784
4785         * Changed all command functions in server to use the new
4786           CHECK_ARGS macro.
4787
4788 Fri Dec 15 15:55:12 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
4789
4790         * Changed char *data to unsigned char *data in ID Cache system to
4791           support binary data as ID Cache data. Changed code to support
4792           binary data in lib/silccore/idcache.c.
4793
4794         * Renamed silc_server_packet_relay_command_reply to 
4795           silc_server_command_reply as it is normal packet receiving
4796           function. Rewrote the function to accept command replys for
4797           servers and not only for clients.
4798
4799         * Mark remote router always as registered server if we are connecting
4800           to it.  Otherwise, commands sent by the router to us are ignored.
4801
4802         * All ID List find routines now returns the ID Cache Entry pointer
4803           as well if requested.
4804
4805         * WHOIS command works now in router environment, tested with two
4806           routers, two servers and two clients.
4807
4808         * Cleaned up and rewrote IDENTIFY command. IDENTIFY should work now
4809           in router environment (as it is almost equivalent to WHOIS) but
4810           hasn't been tested thoroughly.  Added new functions:
4811
4812           silc_server_command_identify_parse
4813           silc_server_command_identify_send_reply
4814           silc_server_command_identify_from_client
4815           silc_server_command_identify_from_server
4816
4817         * Disabled route cache adding because adding two different ID's with
4818           same IP replaces the old cache entry thus giving wrong route.
4819           The entry->router->connection is always the fastest route anyway
4820           so route cache may not be needed.  Of course, new routes maybe
4821           established after receiving the ID when the entry->router->connection
4822           might not be anymore the most optimal.
4823
4824 Thu Dec 14 15:55:35 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
4825
4826         * Add route cache for received ID for fast routing.
4827
4828         * Added silc_server_packet_route to route received packet on router
4829           that is not destined to us.
4830
4831         * Renamed silc_server_get_route to silc_server_route_get.
4832
4833         * Added id_string and id_string_len fields into SilcServer to
4834           include encoded ServerID for fast comparing without excess
4835           encoding of the ID's.
4836
4837         * Cleaned up WHOIS command on server side. Added following static
4838           functions:
4839
4840           silc_server_command_whois_parse
4841           silc_server_command_whois_check
4842           silc_server_command_whois_send_reply
4843           silc_server_command_whois_from_client
4844           silc_server_command_whois_from_server
4845
4846         * Added macro SILC_SERVER_COMMAND_CHECK_ARGC to check mandatory
4847           arguments in command replies. All command functions should be
4848           updated to use this macro.
4849
4850 Sun Dec 10 23:52:00 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
4851
4852         * Minor typo fixes on command reply handling on server.
4853
4854 Tue Nov 28 11:05:39 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
4855
4856         * Added silc_server_command_add_to_channel internal routine to add
4857           the client to the channel after router has created the channel and
4858           sent command reply to the server.
4859
4860         * Added generic silc_server_send_command to send any command from
4861           server.
4862
4863         * Use static buffer with ID rendering instead of duplicating data.
4864
4865 Mon Nov 27 21:39:40 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
4866
4867         * Fixed a channel user mode bug when joining to a channel server gave
4868           everybody channel founder rights, oops.
4869
4870         * We mark ourselves as the router of the incoming server connection
4871           if we are router ourselves.  This way we can check in some packet
4872           sending functions whether it is locally connected server.  For
4873           incoming router connections we put NULL.
4874
4875         * For router sending packets locally means now always sending the
4876           packet cell wide; to local clients and local servers.  For normal
4877           server sending packet locally means sending it to only local
4878           clients.
4879
4880         * Fixed the JOIN command to really work in router environment.  If the
4881           channel is created it is always created by the router.  Router is
4882           also responsible of making the initial joining to the channel,
4883           sending JOIN notify to the sending server and distributing 
4884           NEW_CHANNEL and NEW_CHANNEL_USER packets.  Hence, if the channel
4885           does not exist server doesn't do anything else but forward the
4886           command to the router which performs everything.
4887
4888         * Added silc_server_send_channel_key function to send the Channel Key
4889           payload.
4890
4891         * Added silc_server_create_channel_key to create new channel key.  The
4892           channel key is now re-generated everytime someone joins or leaves
4893           a channel, as protocol dictates.  Note: channel->key_len is the
4894           key length in bits.
4895
4896 Wed Nov 22 22:14:19 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
4897
4898         * Splitted server.[ch] finally.  Created now packet_send.[ch] and
4899           packet_receive.[ch] to separate packet sending and receiving
4900           routines.  The server.[ch] now includes everything else including
4901           actual packet processing (writing and reading data) and other
4902           server issues.
4903
4904           Renamed silc_server_private_message_send_internal to
4905           silc_server_send_private_message.  The routine is still though
4906           used only to relay private messages as server does not send
4907           private messages itself.
4908
4909           Renamed silc_server_new_channel to silc_server_create_new_channel
4910           and added new function sicl_server_new_channel that handles the
4911           incoming New Channel packet.  Added also new sending function
4912           silc_server_send_new_channel to send New Channel Payload.
4913
4914         * Added new function silc_server_notify to process incoming notify
4915           packet to the server/router. Server may then relay the notify
4916           to clients if needed.
4917
4918         * Added new function silc_server_new_channel_user to process incoming
4919           New Channel User packet.  Router will redistribute the packet and
4920           send JOIN notify to its local clients and locally connected servers
4921           if needed.  Normal server will send JOIN notify to its local client
4922           on same channel when received this packet.  Added also corresponding
4923           sending function silc_server_send_new_channel_user to sent the
4924           payload.
4925
4926         * Added boolean route argument to send_notif_to_channel and
4927           packet_send_to_channel functions to attempt to route the packet
4928           if it is TRUE and send only locally if it is FALSE.
4929
4930 Tue Nov 21 19:49:31 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
4931
4932         * silc_server_replace_id now broadcasts the received replace ID
4933           packet if it is not broadcast packet already. The router must
4934           broadcast to inform other routers about changed ID.
4935
4936         * Added backpointer to server's router into SilcServer context in
4937           silcd/server_internal.h.
4938
4939         * Fixed silc_server_packet_broadcast to send correct broadcast
4940           packets.
4941
4942         * The channel key is now distributed to the local client as soon
4943           as it is received from the router (in router environment) so that
4944           no other packet may be sent for the channel until client has 
4945           received the key.
4946
4947         * silc_server_remove_channel_user now broadcasts the received
4948           Remove Channel User packet if it is not broadcast packet already.
4949           The router must broadcast to inform other routers about removed
4950           channel user.
4951
4952         * Added users field into SilcPacketContext that is a reference count
4953           of the context.  One can increase the reference count by calling
4954           silc_packet_context_dup which is now changed to just increase the
4955           reference count instead of duplicating the data.  The reference
4956           count is decresed by calling silc_packet_context_free that will
4957           free the data after the reference count hits zero.
4958
4959           For now on the packet context and everything allocated into it
4960           (including the raw packet from network) must be freed by calling
4961           the new silc_packet_context_free function.  Added also new function
4962           silc_packet_context_alloc that must be used now to allocate the
4963           context.  This also means that if a routine is asynchronous from
4964           silc_[client/server]_packet_parse_type the packet context must
4965           be duplicated by calling silc_packet_context_dup.  Otherwise it
4966           gets free'd after silc_[client/server]_packet_parse_type returns.
4967           Also, one must remember that if packet is duplicated then its 
4968           reference count must be decresed by calling the free function as
4969           many times as it was duplicated.
4970
4971         * Changed SilcBuffer field from protocol contexts to SilcPacketContext
4972           from both client and server.
4973
4974 Mon Nov 20 23:47:03 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
4975
4976         * Made joining to a channel working in router environment.
4977
4978         * Cleaned up JOIN command on server side and create function
4979           silc_server_command_join_channel internal routine to make the
4980           joining happen.
4981
4982 Thu Nov  9 21:12:39 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
4983
4984         * Changed silc_command_pending list to SilcDList.  Also, added
4985           `ident' field to SilcServerCommandPending structure to identify
4986           the reply and to call correct callback.
4987
4988           Added silc_server_command_pending_check function to replace the
4989           corresnponding macro.  The silc_command_pending list is not
4990           extern anymore.
4991
4992         * Added silc_command_set_ident into lib/silccore/silccommand.[ch]
4993           to set identifier to previously allocated Command Payload.  It
4994           is used to set identifier for command when resending Command
4995           Payload.
4996
4997         * Added silc_command_payload_encode_payload to encode Command
4998           Payload buffer from SilcCommandPayload structure.
4999
5000         * Added silc_argument_payload_encode_payload to encode Argument
5001           payload buffer from SilcArgumentPayload structure.
5002
5003 Wed Nov  8 21:03:28 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5004
5005         * Changed WHOIS command to support router connection on server side.
5006           The whois request is always sent to router unless the server is
5007           standalone server.  After server has received the reply from the
5008           router will it send the reply to the client.
5009
5010         * Added silc_server_packet_broadcast into silcd/server.[ch] to
5011           broadcast received broadcast packet.  The function is used only
5012           by router.  The broadcast packet is always sent to the router's
5013           primary route.
5014
5015         * Added silc_id_render function in lib/silcutil/silcutil.[ch] to
5016           render given ID to printable string, for log files for example.
5017
5018 Tue Nov  7 22:14:19 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5019
5020         * Made basic router to router connections working.  At least they
5021           can now connect to each other but nothing really works the way
5022           they are supposed - yet.
5023
5024         * Added new initiator token to RouterConnection configuration
5025           file in silcd/serverconfig.[ch].  It is used to tell whether we
5026           are the initiator to the remote router or whether we'll expect
5027           the other end to connect.
5028
5029         * Moved registering of listener task to silc_server_init, hence
5030           the server starts listenning as soon as it is run, even if it
5031           does not have connections to other routers.  Let's see how well
5032           this will work.
5033
5034         * Changed default connection retry timeouts for more suitable in
5035           silcd/server.h.
5036
5037         * Removed cipher and such arguments from silc_idlist_add_client
5038           and silc_idlist_add_server prototypes from silcd/idlist.[ch].
5039           Added new function silc_idlist_add_data to add the keys and stuff
5040           to any ID entry.
5041
5042         * Added SilcIDListData structure and added it to SilcClientEntry
5043           and SilcServerEntry as their first field in the structure.  This
5044           way we can explicitly cast the ID entries to the SilcIDListData
5045           structure and get common data for the entries.  In past, we had
5046           to first check what type of connection it is and then cast it to
5047           correct ID entry type.  Now, we can directly cast the opaque
5048           pointer to the SilcIDListData (no matter what ID entry it actually
5049           is) and get the data needed.
5050
5051 Mon Nov  6 21:56:12 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5052
5053         * Wow, found a bug in scheduler.  The scheduler uninitialized itself
5054           in some circumstances even if threre were timeout tasks, though not
5055           IO tasks, but tasks anyway.  Now fixed.
5056
5057         * Defined SilcServerConnection structure to hold connection specific
5058           stuff about directly connected servers and routers.  The definition
5059           is currently in silcd/server_internal.h.  I thought about having
5060           a bit more important role fro this struct but for now it is used
5061           only when connecting to other server (or router actually).
5062
5063         * Added connecting retry support in server when connecting to
5064           router(s).  The retry feature implement exponential backoff
5065           algorithm.  Also, added SilcServerParams structure to hold default
5066           parameters for server.  For now, it include these retry settings
5067           and are hard coded.  After server is moded to be as Silc Server
5068           Library this structure will be more important.
5069
5070 Sun Nov  5 22:28:44 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5071
5072         * Changed client librarys channel->clients table to SilcList and
5073           changed code accordingly.
5074
5075 Thu Nov  2 16:28:01 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5076
5077         * Changed client's channel table to SilcList and changed code 
5078           accordingly.  Also changed SilcChannelClientEntry to include back-
5079           pointer to the channel so that client entry can use that structure
5080           as list as well and we have fast cross-reference to the channel.
5081           This change dramatically decreased the complexity of channel
5082           handling with client entry and vice versa (removed one extra
5083           loop when searching for channel entry from many functions).
5084
5085         * Changed server->sim from table to SilcDList and changed code
5086           accordingly.
5087
5088         * NAMES command can now be used from user interface.  It will show
5089           the user list on the channel, neatly.
5090
5091         * Added realname pointer to SilcClientEntry in lib/silcclient/idlist.h.
5092           Code now saves realname of the user if it becomes available.
5093
5094         * Renamed configure.in to configure.in.pre and made ./prepare
5095           script to automatically add correct version string to
5096           configure.in which it creates from configure.in.pre.
5097
5098 Wed Nov  1 17:21:26 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5099
5100         * NAMES command reply now shows users mode with the nickname when
5101           joining to channel.
5102
5103         * Moved silc_client_ch[u]mode[_char] functions from 
5104           silc/clientutil.[ch] to lib/silcclient/client.[ch].  Though, that
5105           place sucks, they are utility functions and should be in some
5106           other file.
5107
5108         * Fixed some unsigned int's to unsigned short's.  Patch by cras.
5109
5110         * Fixed contrib/getopt*.[ch] to not require config.h.  Patch by
5111           cras.
5112
5113 Tue Oct 31 20:10:37 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5114
5115         * Updated README.
5116
5117         * Added TRQ (efficient deque and list library) into lib/trq.  This is
5118           a very good list library that is currently used in the SILC.  Defined
5119           SilcList API over the library because I didn't like the API very
5120           much.  See lib/trq/silclist.h for the API and examples of how to
5121           use the API.  Fixed various places in the code to use the new
5122           SilcList API. The SilcList is meant for lists that has a structure
5123           already defined as a list.  It is not suitable to add just some
5124           context to the list (in TRQ, the context is the list actually).
5125
5126           So, I defined SilcDList that can be used for the purpose where 
5127           predefined list structure does not exit.  This can be used as
5128           such list.  Now some context just can be added to the SilcDList.
5129           Currently this list is not used in the SILC just yet, though there
5130           are a lot places where this can replace dynamically allocated
5131           tables and I will fix these places, later, to use SilcDList.
5132           See lib/trq/silcdlist.h for SilcDList (they are all inline functions,
5133           and use TRQ internally).
5134
5135           Also fixed some annoying warning messages that the original TRQ
5136           code generated.  Also minor changes to TRQ's Makefile.in.
5137
5138         * Added support for querying by Client ID to both WHOIS and 
5139           IDENTIFY commands into server, as required by the protocol.
5140
5141         * Removed method function pointers from SilcBuffer structure. They
5142           weren't used to anything and just increased the context size for
5143           no good reason.  This change also made silc_buffer_alloc and
5144           silc_buffer_free functions inline functions.
5145
5146         * Disabled command flooding detection support until it's fixed so 
5147           that it accepts commands in but does not execute them more than once
5148           in two seconds.
5149
5150         * Added silc_net_localhost(), to return local hostname, into
5151           lib/silcutil/silcnet.[ch].  Also added client->hostname pointer
5152           that must be initialized before calling silc_client_init.
5153
5154         * Added new function: silc_server_send_notify_on_channels to send
5155           notify messages to all channels client has joined.  It is assured
5156           that the message is sent only once per client.
5157
5158         * Moved silc_log_format (from lib/silcutil/silclog.[ch] into
5159           lib/silcutil/silcutil.[ch] as silc_format function.  The new 
5160           function is generic and is used by server as well, not only by
5161           the logging routines.
5162
5163         * Added new SKE status type: SILC_SKE_STATUS_BAD_VERSION to indicate
5164           the provided version string was not acceptable.  Added new function:
5165           silc_ske_check_version into lib/silcske/silcske.h.  The function
5166           must be implemented by the application (client or server) and it
5167           does not reside in the SKE library.  The function checks the version
5168           string remote end sent.
5169
5170         * Added back pointers (to opaque context and to SilcSocketConnection) 
5171           into SilcPacketContext structure into lib/silccore/silcpacket.h.
5172
5173         * Added silc_packet_context_dup into lib/silccore/silcpacket.[ch] to
5174           duplicate packet context structure.
5175
5176         * Changed `notify' client operation to send same arguments as client
5177           receives from server except for ID's.  ID's are mapped to correct
5178           ID entry and that is returned.  Also, if channel entry is not sent
5179           by server but the notify is for channel the channel entry is sent
5180           to application (otherwise application doesn't know that it is for
5181           channel (library gets it from packet's Destination ID)).
5182
5183         * Added silc_client_remove_from_channels into client library to 
5184           remove a client from all channels it has joined to.  Used when 
5185           received SIGNOFF notify from server.  Added also new function
5186           silc_client_replace_from_channels to replace old ID entry with
5187           new ID entry on all channels.  Used when received NICK_CHANGE
5188           notify from server.
5189
5190         * Fixed ID Cache list handling in silc_idlist_get_client in 
5191           lib/silcclient/idlist.c.  Also, added silc_idlist_get_client_by_id
5192           to get (or query) client by ID.
5193
5194         * Updated TODO list.
5195
5196         * Added connection authentication status message defined by the
5197           protocol: SILC_CONN_AUTH_OK and SILC_CONN_AUTH_FAILED and added the
5198           support for these into the code in client and server side.
5199
5200         * Added generic function silc_client_send_command to send any command
5201           with variable argument list.  Application should use this function
5202           to send commands if the command functions provided by the library
5203           does not suite for the application's user interface needs.
5204
5205         * Added new `failure' client operation.  Application is notified about
5206           received failure packet if client is executing a protocol.  In this
5207           case the protocol's execution has failed.
5208
5209         * Added SKE's end notify to send the SKE_SUCCESS notify message that
5210           is required by the protocol.
5211
5212         * Added SILC_PROTOCOL_STATE_FAILURE to indicate received failure
5213           packet from remote.  SILC_PROTOCOL_STATE_ERROR indicates local
5214           error at our end.
5215
5216         * Added status flag to SilcSKE object to indicate realtime status
5217           of the SKE protocol.
5218
5219         * Application receives now exactly same command reply arguments as
5220           the library receives from server.  However, if ID is received the
5221           corresponding ID entry is returned to the application (eg. Client
5222           ID is mapped to correct SilcClientEntry entry and that is returned).
5223           Changed command_reply client operation due to this change.
5224
5225         * Changed all ID's in commands and in command replys as ID Payloads.
5226           Change affected both client and server side codes.
5227
5228           All ID's sent in SILC network (with execption of ID's in SILC
5229           Packet header) are sent in ID Payload to support variable length
5230           ID's.
5231
5232         * Server now notifies nick changes and notifies all clients on
5233           the channels about the new nickname (about the new Client ID,
5234           actually).
5235
5236         * Implemented CMODE command to change channel modes. Supports all
5237           channel modes defined by the protocol specs except ban and invite
5238           lists. (Also, private channel key mode is supported but support for
5239           setting private channel key in client is missing, thus, this mode
5240           has no effect on client side (except that server requires that the
5241           client uses private channel key and normal channel traffic does not
5242           work anymore)).
5243
5244           Also, invite mode works per se, but INVITE command does not work
5245           yet correctly, so you can set channel as invite only channel but
5246           inviting clients to the channel does not work (it is yet to be
5247           thought what's the best way to do it).
5248
5249         * Added new command SILC_COMMAND_CUMODE to change user mode on the
5250           channel.  Defined user modes: CHANNEL_FOUNDER and CHANNEL_OPERATOR.
5251           Implemented CUMODE command to change user's mode on the channel.
5252           Supports all modes defined by the protocol specs.
5253
5254         * Added NAMES command reply to return users modes on the channel.
5255
5256         * Removed unnecessary and slow ciphers from lib/silccrypt.
5257
5258         * Set SO_KEEPALIVE option to connection sockets by default.
5259
5260         * Added new command reply status: SILC_STATUS_USER_NOT_ON_CHANNEL.
5261
5262         * Added notify types: MOTD, CMODE_CHANGE and CUMODE_CHANGE.  Also,
5263           redefined the Notify Payload into protocol specs.
5264
5265         * Added silc_id_payload_parse_id to get ID directly from raw
5266           ID payload data.
5267
5268 Mon Oct  9 20:57:02 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5269
5270         * Changed SILC_COMMAND_IDENTIFY in protocol specification to 
5271           accept searching by Client ID as well.
5272
5273         * Added support for LEAVE and SIGNOFF notify types in client library.
5274
5275         * Added silc_id_payload_parse_data into lib/silccore/silcpayload.[ch]
5276           to parse ID Payload from raw data.
5277
5278 Sun Oct  8 19:33:08 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5279
5280         * Added flags parameter into silc_ske_assemble_security_properties
5281           function in lib/silcske/silcske.[ch].
5282
5283         * Changed notify client operation to fit better for notify messages
5284           sent by server.  The notify payload received from server is now
5285           passed to the application (after parsing it to SilcNotifyPayload).
5286           It is application's responsibility to retrieve the arguments
5287           from the payload and show the message the way it wants.  The message
5288           sent by server is implementation specific.
5289
5290         * Changed public keys to comply with the protocol specification.
5291           Old public keys are not supported anymore and are not compatible.
5292
5293         * Removed nickname from Channel Payload as the latest draft removed
5294           it.  The client must resolve the nickname from the NAMES command
5295           reply received when it joined the channel.
5296
5297           Also, changed all channel_xxxx_payload to channel_payload_xxxx.
5298
5299 Sat Oct  7 21:55:01 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5300
5301         * Fixed some errors in protocol specification drafts.
5302
5303         * Created lib/silccore/silcnotify.c to implement Notify Payload
5304           encoding and decoding, lib/silccore/silcpayload.[ch] to implement
5305           generic payloads described by protocol specifications.  The file
5306           includes implementations for ID Payload and Argument Payload.
5307
5308         * Changed Command Payload implementation to use the new Argument
5309           Payload.  Changed command_xxxx_payload to command_payload_xxxx
5310           to comply with SILC coding conventions.
5311
5312         * Added suppport for Argument Payload handling in Notify Payload
5313           implementation as protocol requires it.  Added the new support
5314           into server and client lib as well.
5315
5316 Thu Oct  5 21:16:28 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5317
5318         * Added support for multiple nicknames on same channel.  [n] is
5319           added locally to the nickname if there are more than one same
5320           nicknames on the channel.
5321
5322         * Server now sends all nicknames that matched WHOIS request.
5323           Client also shows the list received from server.
5324
5325         * Added TOPIC command to client side.  User can now set and show
5326           current topic on channel.
5327
5328         * Added MOTD command to client and server.  Also, server sends the
5329           motd when client connects to the server.
5330
5331         * Changed version strings to comply ISO 8601.
5332
5333 Wed Oct  4 23:29:06 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5334
5335         * Fixed protocol error handling in client library.  It should now
5336           cope even if the SKE fails for some reason.
5337
5338         * Made new protocol specification drafts for submitting to IETF.
5339
5340         * Implemented TOPIC command to server in silcd/command.c.
5341
5342         * Added two new notify types into lib/silccore/silcnotify.h:
5343           SILC_NOTIFY_TYPE_NICK_CHANGE and SILC_NOTIFY_TYPE_TOPIC_SET to
5344           notify nickname change and topic setting/change on a channel.
5345
5346         * API change of command_reply operation in client library.  The
5347           application gets now the status type received from server as well.
5348
5349 Sat Sep 30 16:57:42 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5350
5351         * Removed the function just added to lib/silcutil/silcschedule.[ch].
5352
5353         * Cras fixed and optimized the packet handling even further and
5354           it should work now.  Minor change to the prototype of function
5355           silc_packet_receive_process in lib/silccore/silcpacket.[ch].
5356
5357 Sat Sep 30 08:48:47 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5358
5359         * Added new function into lib/silcutil/silcschedule.[ch]:
5360           silc_schedule_with_fd to select() a specified fd.  The function
5361           returns after timeout expires or data arrives or goes.  The
5362           function is used by packet routines to wait that all data is
5363           received from network.
5364
5365         * Fixed data reading from network in lib/silccore/silcpacket.c.
5366           The code now assures that all data is read from the fd and then
5367           continues packet processing.  This was a bug fix since the code
5368           used to drop some data in some circumstances.
5369
5370         * Added new function into lib/silcclient/client.[ch]:
5371           silc_client_start_key_exchange to start key exchange after
5372           connection has been established to server.  The code internally
5373           now uses this funtion but its main purpose was to provide it
5374           for applications that perform their own connecting.  After
5375           application has created a connection it merely calls this
5376           function to start the key exchange between client and server.
5377           The library takes care of everything else after that.
5378
5379           Updated also lib/silcclient/README to explain the usage of
5380           this new function.
5381
5382         * Do not send to application information that connection has
5383           been established.  Application gets notified it by connect
5384           operation anyway.
5385
5386 Thu Sep 28 23:40:19 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5387
5388         * Applied cras's patch to add silc_schedule_one function.  The
5389           function runs scheduler once and returns.
5390
5391         * Fixed the scheduler after cras messed it up.  The timeout
5392           handling works now as it's supposed to work.
5393
5394         * Added into lib/silccore/ silcnotify.h to include notify
5395           message types support.  Changed silc_server_send_notify*
5396           functions, in server.[ch], to support those new notify types.
5397           Added the support for the notify types into client library,
5398           as well.  Added new notify client operation into ops.h in
5399           lib/silcclient/.
5400
5401         * Changed silc_server_packet_send_to_channel to send normal
5402           packets instead of just channel message packets.  The function
5403           is now used to send the notify packets to channels.  It is not
5404           used to send channel message packets anymore, as server never
5405           sends them anymore.
5406
5407         * Added explicit casting into lib/silcutil/silcbuffmt.c to few
5408           va_arg()s as it seems to require it nowadays.  I guess, if SILC
5409           is compiled with older va_arg() the new code should work anyway.
5410
5411 Wed Sep 13 18:10:14 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5412
5413         * Splitted core library.  Core library (lib/silccore) includes
5414           now only SILC protocol specific core (and common) components.
5415           Created new utility library (lib/silcutil) that includes more
5416           generic purpose stuff.  The stuff for util library was taken
5417           from the old core library.  This was minor and easy split.
5418
5419         * Created SILC Client Library (lib/silcclient) that includes
5420           implementation of the SILC client without user interface.  This
5421           was major move from silc/ directory.  The code has been changed
5422           so that it is transparent towards the user interface.  The
5423           silc/ directory includes now the same user interface as before
5424           and it uses the new client library.  Read lib/silcclient/README.
5425           Basicly, the client library performs everything else related
5426           to SILC except user interface handling.  Also, configuration
5427           files are considered to be part of user interface and library
5428           does not handle them.
5429
5430           This change also changed a lot of structures, function naming etc.
5431           Most important change was that SilcClientWindow object was
5432           renamed to SilcClientConnection in the client library.  Created
5433           also new file lib/silcclient/ops.h.  Also added new files
5434           silc/local_command.[ch] and silc/client_ops.[ch].
5435
5436           All these changes were made to make it easier for user interface
5437           designers to create what ever user interface for the SILC client
5438           they want.
5439
5440           It is also expected that the server will be moved to lib
5441           directory as well and SILC Server Library will be created;
5442           sometimes in the future.
5443
5444         * Removed Local commands from lib/silccore/silccommand.h as
5445           they are application specific and new client library does not
5446           handle any of those anymore.
5447
5448         * Several functions moved to lib/silcutil/silcutilc.[ch] from
5449           old client implementation in silc/.
5450
5451         * Added support for callback functions in SILC_LOG_* macros.
5452           Application can now set its own callbacks that will be called
5453           instead of using the default functions that will always print
5454           the debug messages to stderr (or stdout).  Also, debugging can
5455           now be disabled by setting silc_debug to FALSE and re-enabled by
5456           setting it to TRUE.  Note, that logging will still work even
5457           if debugging is disabled.
5458
5459           New functions in lib/silcutil/silclog.[ch]: silc_log_set_callbacks,
5460           silc_log_reset_callbacks, silc_log_set_debug_callbacks and
5461           silc_log_reset_debug_callbacks.
5462
5463         * To enable debugging in silc client one must give now -d
5464           option on command line.
5465
5466         * Changed silc_schedule_init to automatically allocate task queues
5467           if they are not allocated before calling it.
5468
5469 Thu Sep  7 10:49:33 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5470
5471         * Added GMP 3.1 into math library.
5472
5473 Sun Aug 20 21:27:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5474
5475         * Added SILC_PACKET_REMOVE_CHANNEL_USER to remove a client from
5476           a channel in SILC network.  The packet is used by servers and
5477           routers to notify other routers that user has left a channel.
5478           This little feature was missing until now.  Added the feature
5479           to protocol specification as well.
5480
5481           Added functions: silc_server_send_remove_channel_user and
5482           silc_server_remove_channel_user into server.[ch].
5483
5484         * Added SILC_PACKET_REKEY and SILC_PACKET_REKEY_DONE into
5485           lib/silccore/silcpacket.h.  However, they are not implemented
5486           yet.
5487
5488 Sat Aug 19 23:04:16 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5489
5490         * Fixed joining to a channel and sending channel messages
5491           between server and router.  The channel message sending should
5492           now work inside a cell.
5493
5494 Tue Jul 25 20:46:13 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5495
5496         * Fixed the private message sending between server and router.
5497           The private message sending should now work inside a cell.
5498
5499         * Added silc_server_replace_id into server.[ch] to replace
5500           existing ID in the SILC network.
5501
5502         * Added silc_idlist_find_server_by, silc_idlist_replace_client_id
5503           and silc_idlist_replace_server_id into idlist.[ch] in server.
5504
5505 Mon Jul 24 18:33:31 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5506
5507         * Fixed the server to server connections.  Server can again now
5508           connect to router.  Router to router connections probably does
5509           not work just yet.
5510
5511 Thu Jul 20 13:15:01 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5512
5513         * Added dynamic protocol registering support.  Now protocols can
5514           registered and unregistered on the fly.  Patch by cras.
5515
5516 Wed Jul 19 19:08:46 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5517
5518         * Added lib/contrib directory to hold routines that some platforms
5519           don't have but are needed by SILC.
5520
5521         * Added getopt.c, getopt1.c and getopt.h from GNU C library
5522           into lin/contrib to provide getopt() and getopt_long() for
5523           those who don't have it.
5524
5525 Tue Jul 18 20:41:20 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5526
5527         * Added AWAY command to client.  When away message is set and
5528           client receives a private message packet the client automatically
5529           replies to the sender with the away message.
5530
5531         * Fixed a bug in lib/silcmath/mpbin.c: silc_mp_mp2bin.  This
5532           bug seemed to be the cause of recent problems when compiling
5533           with gcc-2.95.
5534
5535         * Added version detection support to SKE protocol specification
5536           and added the new changes to the SKE implementation as well.
5537           There were other minor changes in the SKE protocol as well.
5538
5539           Many changes in lib/silcske/silcske.[ch] and in
5540           lib/silcske/payload.[ch].
5541
5542         * Added ^U functionality, clear input line.  Patch from cras.
5543
5544 Mon Jul 17 23:33:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5545
5546         * Mainly small bugfixes on core library.  Fixed some debugging
5547           logging and buffer overflow in silclog.c.
5548
5549         * Updated config.sub and config.guess on the distribution tree.
5550
5551 Sat Jul 15 15:33:48 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5552
5553         * Added command lagging support in server. Client may execute
5554           commands now only once in two seconds.
5555
5556 Thu Jul 13 22:10:21 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5557
5558         * Optimized packet reception. MAC computation and checking is now
5559           also more optimized.  A lot previously duplicated code is now
5560           used as generic by both client and server.
5561
5562         * Fixed key pair generation in clientutil.c
5563
5564 Wed Jul 12 18:28:07 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5565
5566         * Added into lib/silccore/silcbufutil.[ch] new function;
5567           silc_buffer_realloc.
5568
5569         * Moved generic packet sending/encryption functions to 
5570           lib/silccore/silcpacket.[ch] from client and server.  Some
5571           rewriting of the functions.
5572
5573         * Moved all generic packet reception/decryption functions to
5574           lib/silccore/silcpacket.[ch] from client and server.  The
5575           packet processing is now much cleaner in both client and server.
5576           These were major changes in both client and server.
5577
5578         * Created many common functions in server to do packet sending.
5579           Previously code were duplicated a lot, this has been removed
5580           with these changes.
5581
5582 Tue Jul 11 20:27:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5583
5584         * Rewrote major parts of the ID cache system.  Don't know 
5585           whether it is better now or not but at least the API is more
5586           cleaner now.
5587
5588         * Major rewrite on ID cache stuff on client because of the ID
5589           cache API changes.  Added idlist.c to client.
5590
5591         * Also major rewrite on ID cache stuff on server as well.
5592           Major rewrite of idlist.[ch]. SilcXXXList's are now named
5593           SilcXXXEntry's.  We won't keep anymore idlist specific pointers
5594           in hand, instead they are all put into the ID cache system now.
5595           All server_idlist_* routines uses ID cache now instead of
5596           traversing its own lists (those lists does not exist anymore).
5597           SilcIDList though still exists.  Also, SilcXXXEntry's are
5598           now pointers.
5599
5600 Sun Jul  9 15:19:24 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5601
5602         * Finally made the SKE implementation compliant to the protocol
5603           specification.  All mp integers are now binary encoded as
5604           opposed being HEX encoded.
5605
5606         * Added lib/silcmath/mpbin.[ch].  Encoding mp intergers to and
5607           from binary data.
5608
5609         * Added into lib/silccore/silcutil.[ch] PEM encoding/decoding
5610           functions: silc_[encode/decode]_pem.  Also added function
5611           silc_encode_pem_file to PEM encode with newlines ('\n') for
5612           saving into a file.
5613
5614         * SILC public keys are now encoded either PEM or binary.  Same
5615           option is for private keys as well.  By default private keys
5616           are binary encoded and public keys PEM encoded.  Silly HEX
5617           encoding were removed.
5618
5619         * Added into lib/silccrypt/silchash.[ch] silc_hash_fingerprint
5620           function to create fingerprints.
5621
5622         * Fixed a bug in SHA1; does not change the original data anymore.
5623
5624         * Partly implemented INFO command on client and server side.
5625           Fixed CLEAR command.  Changes to SERVER command; show current
5626           server(s) when giving command without arguments.  Added
5627           VERSION command to client.
5628
5629         * Added check to server that unregistered connections cannot
5630           execute commands (unless it is specificly allowed).
5631
5632 Thu Jul  6 18:12:24 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5633
5634         * Fixed screen refresh.
5635
5636         * Fixed channel joining bug from client.  On some circumstances
5637           client tried to join to a channel it had already joined.
5638
5639         * Added public key verification process into client's protocol.c.
5640           The client now verifies the public key from user and saves
5641           it into ~./silc/serverkeys/ directory. 
5642
5643           Added into: clientutil.[ch]: silc_client_verify_server_key.
5644
5645         * Changed SKE protocol's silc_ske_initiator_finish function
5646           to accept callback function that verifies the received public
5647           key.  Removed old silc_ske_verify_public_key function.
5648
5649 Wed Jul  5 19:19:02 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5650
5651         * Added into silcpkcs[ch]: silc_pkcs_public_key[_data]_set and
5652           silc_pkcs_private_key[_data]_set.
5653
5654         * Made the password and public authentication more cleaner in
5655           server's protocol.c.
5656
5657         * Removed historic and obsolete protocol `channel_auth' from
5658           both client and server.
5659
5660         * Removed wrong way of sending command status messages from
5661           server to client in server's command.c.  The old way violated
5662           protocol specification.  
5663
5664           Changes to silccore/silccommand.[ch]: removed
5665           silc_command_encode_status_payload -> not needed anymore,
5666           changed silc_command_encode_payload_va to accept extra
5667           argument on variable argument list.  The argument type must
5668           now be provided to the function.  Also, added new function:
5669           silc_command_encode_reply_payload_va which is same as
5670           normal command_encode_payload_va except command status type
5671           is provided as extra argument.
5672
5673 Tue Jul  4 18:26:39 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5674
5675         * Added ~./silc directory handling.  The directory includes the
5676           public and private keys for the client.
5677
5678           Added silc_client_check_silc_dir, silc_client_create_identifier
5679           and silc_client_load_keys.
5680
5681         * Implemented SILC protocol compliant public key.  Added public
5682           and private key saving to and loading from files.
5683
5684           Added into silcpkcs.[ch]: silc_pkcs_encode_identifier,
5685           silc_pkcs_public_key_encode[_data], silc_pkcs_public_key_decode,
5686           silc_pkcs_private_key_encode[_data], silc_pkcs_private_key_decode,
5687           silc_pkcs_public_key_alloc, silc_pkcs_public_key_free,
5688           silc_pkcs_private_key_alloc and silc_pkcs_private_key_free.
5689
5690           Implemented: silc_pkcs_save_[public/private]_key[_data] and
5691           silc_pkcs_load_[public/private]_key.
5692
5693 Mon Jul  3 18:51:27 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5694
5695         * Added silc_server_get_route (route.[ch]) to get connection
5696           data for the fastest route for given ID.
5697
5698         * Implemented INVITE command on client and server.  The command
5699           were re-defined in the SILC Protocol Specification and the
5700           implementation now complies with the specification.
5701
5702         * Implemented PING command on client and server.
5703
5704         * Implemented NAMES command on client and server.  The server side
5705           supports currently only normal server not router server yet.
5706           Some changes to NAMES definition in SILC protocol specification.
5707
5708 Sun Jul  2 18:23:01 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5709
5710         * Implemented LEAVE command on client and server.
5711
5712         * Previously deprecated SILC_PACKET_FORWARDED flag is now in use 
5713           again.  This change was made to the protocol as well.  Server
5714           should not violate the protocol specification anymore.
5715
5716 Fri Jun 30 14:03:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
5717
5718         * Added SOCKS4 and SOCKS5 support to SILC client.  SOCKS5
5719           was tested.  SOCKS4 was not but should work anyway.