updates
[silc.git] / CHANGES
1 Sat Sep 30 08:48:47 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
2
3         * Added new function into lib/silcutil/silcschedule.[ch]:
4           silc_schedule_with_fd to select() a specified fd.  The function
5           returns after timeout expires or data arrives or goes.  The
6           function is used by packet routines to wait that all data is
7           received from network.
8
9         * Fixed data reading from network in lib/silccore/silcpacket.c.
10           The code now assures that all data is read from the fd and then
11           continues packet processing.  This was a bug fix since the code
12           used to drop some data in some circumstances.
13
14         * Added new function into lib/silcclient/client.[ch]:
15           silc_client_start_key_exchange to start key exchange after
16           connection has been established to server.  The code internally
17           now uses this funtion but its main purpose was to provide it
18           for applications that perform their own connecting.  After
19           application has created a connection it merely calls this
20           function to start the key exchange between client and server.
21           The library takes care of everything else after that.
22
23           Updated also lib/silcclient/README to explain the usage of
24           this new function.
25
26         * Do not send to application information that connection has
27           been established.  Application gets notified it by connect
28           operation anyway.
29
30 Thu Sep 28 23:40:19 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
31
32         * Applied cras's patch to add silc_schedule_one function.  The
33           function runs scheduler once and returns.
34
35         * Fixed the scheduler after cras messed it up.  The timeout
36           handling works now as it's supposed to work.
37
38         * Added into lib/silccore/ silcnotify.h to include notify
39           message types support.  Changed silc_server_send_notify*
40           functions, in server.[ch], to support those new notify types.
41           Added the support for the notify types into client library,
42           as well.  Added new notify client operation into ops.h in
43           lib/silcclient/.
44
45         * Changed silc_server_packet_send_to_channel to send normal
46           packets instead of just channel message packets.  The function
47           is now used to send the notify packets to channels.  It is not
48           used to send channel message packets anymore, as server never
49           sends them anymore.
50
51         * Added explicit casting into lib/silcutil/silcbuffmt.c to few
52           va_arg()s as it seems to require it nowadays.  I guess, if SILC
53           is compiled with older va_arg() the new code should work anyway.
54
55 Wed Sep 13 18:10:14 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
56
57         * Splitted core library.  Core library (lib/silccore) includes
58           now only SILC protocol specific core (and common) components.
59           Created new utility library (lib/silcutil) that includes more
60           generic purpose stuff.  The stuff for util library was taken
61           from the old core library.  This was minor and easy split.
62
63         * Created SILC Client Library (lib/silcclient) that includes
64           implementation of the SILC client without user interface.  This
65           was major move from silc/ directory.  The code has been changed
66           so that it is transparent towards the user interface.  The
67           silc/ directory includes now the same user interface as before
68           and it uses the new client library.  Read lib/silcclient/README.
69           Basicly, the client library performs everything else related
70           to SILC except user interface handling.  Also, configuration
71           files are considered to be part of user interface and library
72           does not handle them.
73
74           This change also changed a lot of structures, function naming etc.
75           Most important change was that SilcClientWindow object was
76           renamed to SilcClientConnection in the client library.  Created
77           also new file lib/silcclient/ops.h.  Also added new files
78           silc/local_command.[ch] and silc/client_ops.[ch].
79
80           All these changes were made to make it easier for user interface
81           designers to create what ever user interface for the SILC client
82           they want.
83
84           It is also expected that the server will be moved to lib
85           directory as well and SILC Server Library will be created;
86           sometimes in the future.
87
88         * Removed Local commands from lib/silccore/silccommand.h as
89           they are application specific and new client library does not
90           handle any of those anymore.
91
92         * Several functions moved to lib/silcutil/silcutilc.[ch] from
93           old client implementation in silc/.
94
95         * Added support for callback functions in SILC_LOG_* macros.
96           Application can now set its own callbacks that will be called
97           instead of using the default functions that will always print
98           the debug messages to stderr (or stdout).  Also, debugging can
99           now be disabled by setting silc_debug to FALSE and re-enabled by
100           setting it to TRUE.  Note, that logging will still work even
101           if debugging is disabled.
102
103           New functions in lib/silcutil/silclog.[ch]: silc_log_set_callbacks,
104           silc_log_reset_callbacks, silc_log_set_debug_callbacks and
105           silc_log_reset_debug_callbacks.
106
107         * To enable debugging in silc client one must give now -d
108           option on command line.
109
110         * Changed silc_schedule_init to automatically allocate task queues
111           if they are not allocated before calling it.
112
113 Thu Sep  7 10:49:33 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
114
115         * Added GMP 3.1 into math library.
116
117 Sun Aug 20 21:27:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
118
119         * Added SILC_PACKET_REMOVE_CHANNEL_USER to remove a client from
120           a channel in SILC network.  The packet is used by servers and
121           routers to notify other routers that user has left a channel.
122           This little feature was missing until now.  Added the feature
123           to protocol specification as well.
124
125           Added functions: silc_server_send_remove_channel_user and
126           silc_server_remove_channel_user into server.[ch].
127
128         * Added SILC_PACKET_REKEY and SILC_PACKET_REKEY_DONE into
129           lib/silccore/silcpacket.h.  However, they are not implemented
130           yet.
131
132 Sat Aug 19 23:04:16 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
133
134         * Fixed joining to a channel and sending channel messages
135           between server and router.  The channel message sending should
136           now work inside a cell.
137
138 Tue Jul 25 20:46:13 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
139
140         * Fixed the private message sending between server and router.
141           The private message sending should now work inside a cell.
142
143         * Added silc_server_replace_id into server.[ch] to replace
144           existing ID in the SILC network.
145
146         * Added silc_idlist_find_server_by, silc_idlist_replace_client_id
147           and silc_idlist_replace_server_id into idlist.[ch] in server.
148
149 Mon Jul 24 18:33:31 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
150
151         * Fixed the server to server connections.  Server can again now
152           connect to router.  Router to router connections probably does
153           not work just yet.
154
155 Thu Jul 20 13:15:01 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
156
157         * Added dynamic protocol registering support.  Now protocols can
158           registered and unregistered on the fly.  Patch by cras.
159
160 Wed Jul 19 19:08:46 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
161
162         * Added lib/contrib directory to hold routines that some platforms
163           don't have but are needed by SILC.
164
165         * Added getopt.c, getopt1.c and getopt.h from GNU C library
166           into lin/contrib to provide getopt() and getopt_long() for
167           those who don't have it.
168
169 Tue Jul 18 20:41:20 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
170
171         * Added AWAY command to client.  When away message is set and
172           client receives a private message packet the client automatically
173           replies to the sender with the away message.
174
175         * Fixed a bug in lib/silcmath/mpbin.c: silc_mp_mp2bin.  This
176           bug seemed to be the cause of recent problems when compiling
177           with gcc-2.95.
178
179         * Added version detection support to SKE protocol specification
180           and added the new changes to the SKE implementation as well.
181           There were other minor changes in the SKE protocol as well.
182
183           Many changes in lib/silcske/silcske.[ch] and in
184           lib/silcske/payload.[ch].
185
186         * Added ^U functionality, clear input line.  Patch from cras.
187
188 Mon Jul 17 23:33:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
189
190         * Mainly small bugfixes on core library.  Fixed some debugging
191           logging and buffer overflow in silclog.c.
192
193         * Updated config.sub and config.guess on the distribution tree.
194
195 Sat Jul 15 15:33:48 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
196
197         * Added command lagging support in server. Client may execute
198           commands now only once in two seconds.
199
200 Thu Jul 13 22:10:21 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
201
202         * Optimized packet reception. MAC computation and checking is now
203           also more optimized.  A lot previously duplicated code is now
204           used as generic by both client and server.
205
206         * Fixed key pair generation in clientutil.c
207
208 Wed Jul 12 18:28:07 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
209
210         * Added into lib/silccore/silcbufutil.[ch] new function;
211           silc_buffer_realloc.
212
213         * Moved generic packet sending/encryption functions to 
214           lib/silccore/silcpacket.[ch] from client and server.  Some
215           rewriting of the functions.
216
217         * Moved all generic packet reception/decryption functions to
218           lib/silccore/silcpacket.[ch] from client and server.  The
219           packet processing is now much cleaner in both client and server.
220           These were major changes in both client and server.
221
222         * Created many common functions in server to do packet sending.
223           Previously code were duplicated a lot, this has been removed
224           with these changes.
225
226 Tue Jul 11 20:27:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
227
228         * Rewrote major parts of the ID cache system.  Don't know 
229           whether it is better now or not but at least the API is more
230           cleaner now.
231
232         * Major rewrite on ID cache stuff on client because of the ID
233           cache API changes.  Added idlist.c to client.
234
235         * Also major rewrite on ID cache stuff on server as well.
236           Major rewrite of idlist.[ch]. SilcXXXList's are now named
237           SilcXXXEntry's.  We won't keep anymore idlist specific pointers
238           in hand, instead they are all put into the ID cache system now.
239           All server_idlist_* routines uses ID cache now instead of
240           traversing its own lists (those lists does not exist anymore).
241           SilcIDList though still exists.  Also, SilcXXXEntry's are
242           now pointers.
243
244 Sun Jul  9 15:19:24 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
245
246         * Finally made the SKE implementation compliant to the protocol
247           specification.  All mp integers are now binary encoded as
248           opposed being HEX encoded.
249
250         * Added lib/silcmath/mpbin.[ch].  Encoding mp intergers to and
251           from binary data.
252
253         * Added into lib/silccore/silcutil.[ch] PEM encoding/decoding
254           functions: silc_[encode/decode]_pem.  Also added function
255           silc_encode_pem_file to PEM encode with newlines ('\n') for
256           saving into a file.
257
258         * SILC public keys are now encoded either PEM or binary.  Same
259           option is for private keys as well.  By default private keys
260           are binary encoded and public keys PEM encoded.  Silly HEX
261           encoding were removed.
262
263         * Added into lib/silccrypt/silchash.[ch] silc_hash_fingerprint
264           function to create fingerprints.
265
266         * Fixed a bug in SHA1; does not change the original data anymore.
267
268         * Partly implemented INFO command on client and server side.
269           Fixed CLEAR command.  Changes to SERVER command; show current
270           server(s) when giving command without arguments.  Added
271           VERSION command to client.
272
273         * Added check to server that unregistered connections cannot
274           execute commands (unless it is specificly allowed).
275
276 Thu Jul  6 18:12:24 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
277
278         * Fixed screen refresh.
279
280         * Fixed channel joining bug from client.  On some circumstances
281           client tried to join to a channel it had already joined.
282
283         * Added public key verification process into client's protocol.c.
284           The client now verifies the public key from user and saves
285           it into ~./silc/serverkeys/ directory. 
286
287           Added into: clientutil.[ch]: silc_client_verify_server_key.
288
289         * Changed SKE protocol's silc_ske_initiator_finish function
290           to accept callback function that verifies the received public
291           key.  Removed old silc_ske_verify_public_key function.
292
293 Wed Jul  5 19:19:02 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
294
295         * Added into silcpkcs[ch]: silc_pkcs_public_key[_data]_set and
296           silc_pkcs_private_key[_data]_set.
297
298         * Made the password and public authentication more cleaner in
299           server's protocol.c.
300
301         * Removed historic and obsolete protocol `channel_auth' from
302           both client and server.
303
304         * Removed wrong way of sending command status messages from
305           server to client in server's command.c.  The old way violated
306           protocol specification.  
307
308           Changes to silccore/silccommand.[ch]: removed
309           silc_command_encode_status_payload -> not needed anymore,
310           changed silc_command_encode_payload_va to accept extra
311           argument on variable argument list.  The argument type must
312           now be provided to the function.  Also, added new function:
313           silc_command_encode_reply_payload_va which is same as
314           normal command_encode_payload_va except command status type
315           is provided as extra argument.
316
317 Tue Jul  4 18:26:39 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
318
319         * Added ~./silc directory handling.  The directory includes the
320           public and private keys for the client.
321
322           Added silc_client_check_silc_dir, silc_client_create_identifier
323           and silc_client_load_keys.
324
325         * Implemented SILC protocol compliant public key.  Added public
326           and private key saving to and loading from files.
327
328           Added into silcpkcs.[ch]: silc_pkcs_encode_identifier,
329           silc_pkcs_public_key_encode[_data], silc_pkcs_public_key_decode,
330           silc_pkcs_private_key_encode[_data], silc_pkcs_private_key_decode,
331           silc_pkcs_public_key_alloc, silc_pkcs_public_key_free,
332           silc_pkcs_private_key_alloc and silc_pkcs_private_key_free.
333
334           Implemented: silc_pkcs_save_[public/private]_key[_data] and
335           silc_pkcs_load_[public/private]_key.
336
337 Mon Jul  3 18:51:27 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
338
339         * Added silc_server_get_route (route.[ch]) to get connection
340           data for the fastest route for given ID.
341
342         * Implemented INVITE command on client and server.  The command
343           were re-defined in the SILC Protocol Specification and the
344           implementation now complies with the specification.
345
346         * Implemented PING command on client and server.
347
348         * Implemented NAMES command on client and server.  The server side
349           supports currently only normal server not router server yet.
350           Some changes to NAMES definition in SILC protocol specification.
351
352 Sun Jul  2 18:23:01 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
353
354         * Implemented LEAVE command on client and server.
355
356         * Previously deprecated SILC_PACKET_FORWARDED flag is now in use 
357           again.  This change was made to the protocol as well.  Server
358           should not violate the protocol specification anymore.
359
360 Fri Jun 30 14:03:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
361
362         * Added SOCKS4 and SOCKS5 support to SILC client.  SOCKS5
363           was tested.  SOCKS4 was not but should work anyway.