X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=TODO;h=fc44accbb42a8a7b98236d62f0edf8f5cc247712;hp=dfc086079e045a9d6b61a71d9767cf08a93a3015;hb=e5d8d3db6caa344b3d419b884556c21b15e7d123;hpb=3e265c812176cac635a3c2de387ab1b6abc94532 diff --git a/TODO b/TODO index dfc08607..fc44accb 100644 --- a/TODO +++ b/TODO @@ -1,81 +1,121 @@ -TODO/bugs In SILC Client Library -================================ +TODO/bugs in Irssi SILC client +============================== + + o Add local command to switch the channel's private key when channel has + several private keys. Currently sending channel messages with many + keys is not possible because changing the key is not possible by the + user. + + o JOINing to +a (requires passphrase to JOIN) does not work on autojoin. + Seems the passwords in the .silc/config has no effect. + + o Add local commands to list the current server and client public keys + that the user has. And a local command to dump the contents of the + public key to the screen. Something like LISTKEYS, SHOWKEY... + + o The QUIT command should wait for server's disconnection (at least for + a while) before exiting the application. - o Client library crashes if for example server timeouts protocol - execution and disconnects the client. The client, on the other hand - may still assume that the connection is active, even after receiving - the EOF. Reason for this is that the clien library does not handle - the SilcSocketConnection reference counter at all. This must be - fixed. + o The JOIN command's HELP is generated from Irssi IRCs JOIN help and + the syntax is not same in SILC. This must be fixed. Most likely + we must forget the Irssi's JOIN command and mimic it to get our + required syntax for it too. - o When receiving client's public key with GETKEY or in key agreement - protoocl it probably should be saved using the nickname and the real - name of the client instead of the host name of the client. + o We should get rid of the clientconfig.[ch] in Irssi SILC and move the + cipher, hash, hmac and pkcs configuration to the Irssi SILC's config + file. - o Add client library parameters or options that handle what kind of - messages the library should print out (using `say' client operation, - for example) and what is left for the application to print. The - appliation could for example set that it handles all command printing - but all error printing should be handled by the library, etc... - This is not a showstopper. + o Add PERL scripting support from Irssi CVS. + + o Extend the /HELP command to support sub commands or something. So + that user can say /help set mutual_authentication they would get + help of the mutual_authentication setting. + + o Set different kind of settings, like, /set mutual_authentication, + /set key_exchange_timeout, /set conn_auth_timeout etc etc. + + +TODO/bugs In SILC Client Library +================================ - o Input line on UI is buggy. Cursor movement etc bugs. Too lazy to - fix it. + o JOIN command's argument handling is buggy. See the XXX in the code. TODO/bugs In SILC Server ======================== - o Send SILC_NOTIFY_TYPE_CUMODE_CHANGE when received announced channels - and channel users and we (router) already has a channel founder on the + o On normal server the channel count can go negative (like -3 channels). + + o Change the sever to connect to another server from low ports (706) + and not from high ports. Currently we cannot do incoming connection + checking by remote port because the port is not fixed. + + o Add a timeout to handling incoming JOIN commands. It should be + enforced that JOIN command is executed only once in a second or two + seconds. Now it is possible to accept n incoming JOIN commands + and process them without any timeouts. THis must be employed because + each JOIN command will create and distribute the new channel key + to everybody on the channel. + + o Optimize the JOIN command in normal server. When router returns + command reply for JOIN it returns the new channel key. We however + still create new channel key when processing the pending JOIN command. + This works ok but is not necessary. + + o Optimize the WHOIS and IDENTIFY commands to somehow check whether the + requested clients are on some channel that the server knows about. If + this is the case then the request is not needed to be forwarded to the + router. One specific optimization could be done with JOIN command. + If the previous command to the WHOIS and IDENTIFY commands are JOIN + command (from the client) it can be expected (though it must be + verified) that the client is resolving the users on the channel it just + joined. If server has done this once there is really no reason to + resolve it twice (from the router), it can reply directly back with + the information it knows. This is because the server would (will) + receive notifications from the router for users that are on a local channel. - o When server quits and all clients of that server are removed from all - channels the channel keys are re-generated for all clients. This is - a bug and should be done only once per channel after all clients of - the server has been removed. + The same is with whowas command. Actually with all these commands + it should be checked also whether the requested information is local. + If it is, there is no reason to send it to the router, since the server + knows it best. - o DNS/IP lookup blocks the server. This must be fixed. Check the - resolver stuff (resolver(3), resolver(5)). Either we have to do the - own resolver stuff (through scheduler, if possible without writing - too much own stuff) or use threads. + o Add support for sending the LIST command to primary router on normal + server to receive all the created channels. Currently the command + returns only the channels the server knows about. The protocol spec + does not prohibit of sending the LIST to the router. - o The ID List must be optimized. When the lists grow the searching - becomes a lot slower and is some cases the lists are searched many - times, like with channel messages (twice at least). Some sort of - hash tables should replace the lists. Thus, the ID cache should be - rewritten to use hash tables internally. + o Incomplete IPv6 support: - o The backup router support described in the protocol specification - should be done at some point. + o silcd/serverid.c and its routines supports only IPv4. - o Server says that it is able to listen on multiple ports but currently - that is bogus. It can, but internals are for single server. + o Add perhaps /var/run/silcd.pid for PID information for the server. - o Protocol execution timeouts are hard coded, should be configurable. + o New configuration file format must be added. The new one will be + done using the dotconf config library (lib/dotconf). The following + tasks relates closely to this as well and must be done at the same time + when adding the new config file format: - o IP address fields in configuration file should accept mask format - as well, IP/MASK, and not just plain IP. + o Server says that it is able to listen on multiple ports but + currently that is bogus. It can, but internals are for single + server. - o Connection classes should be actually implemented in serverconfig.c. - They can be defined but they are totally ignored currently. And they - should be redefined also. + o Protocol execution timeouts are hard coded, should be + configurable. + + o IP address fields in configuration file should accept mask + format as well, IP/MASK, and not just plain IP. + + o Connection classes should be actually implemented in + serverconfig.c. They can be defined but they are totally + ignored currently. And they should be redefined also. TODO/bugs In SILC Libraries =========================== - o Remove the static lists from SILC ciphers, PKCS and hash functions - in the crypto library. The currently acceptable code is used in the - HMAC library, look from there. The config file must decide the order - of the algorithms, not the static lists, as they are doing now. - Actually the way to do this is to keep the static lists, but register - the algorithms to the dynamic list and make the alloc routines to - check only the dynamic list. Also, replace the lists used by these - routines with SilcList. Also, for applications it might be nice - to export a function that registers default algorithms, if application - does not want to register them one by one (if for example SILC client - is run without config files at all). + o Security fixes from the latest draft for MAC key and MAC computation: + the packet sequence number. o Compression routines are missing. The protocol supports packet compression thus it must be implemented. SILC Comp API must be @@ -83,31 +123,45 @@ TODO/bugs In SILC Libraries not in distribution), but it is not used yet, and it requires some tweaking on the Makefiles (we want static lib not shared). - o Some of the ciphers in lib/silccrypt does not implement the SILC - Crypto API correctly. + o All payload parsing (decoding) functions should take unsigned char * + and uint32 as data and data length as arguments. Now some of the + routines do already that but most of the routines use SilcBuffer. + The SilcBuffer ones should be removed since buf->data and buf->len + is more convenient to use. These are currently only cosmetic changes + but at some point must be done to make the payload interfaces + consistent. - o IPv6 support for ID's and into the code. + o Incomplete IPv6 support: - o SIM support for SILC PKCS API needs to made so that they could be - used as SIM's. At the same time some work is required on prime - generation as the way it is done now sucks. Read from code for - more (silcpkcs.h). + o All network routines in lib/silcutil/silcnet.[ch] does not + support IPv6. + o silc_id_render supports only IPv4 based ID's in the file + lib/silcutil/silcutil.c. + o Add builtin SOCKS and HTTP Proxy support, well the SOCKS at least. + SILC currently supports SOCKS4 and SOCKS5 but it needs to be compiled + in separately. -TODO After 1.0 -============== - o Pthreads support. A lot of problems are solved with server (and with - client as well) if we add pthread support. We can forget things such - as non-blocking connecting etc, and we can do things such as DNS/IP - lookups async. The server itself also benefits great deal from - threads, especially from performance point of view. +TODO/Bugs in native WIN32 support (libraries) +============================================= + + o silc_net_create_connection_async does not work the same way than on + Unix. Do it with threads on WIN32. The function works but is not + actually async currently. + - But, this is not a small task and almost entire SILC Library has to - be made re-entrant. Own API is probably added for the threads support - to make changes in the future as painless as possible. So the API - would have things like silc_mutex_lock, silc_mutex_unlock and - friends... +TODO In SILC Protocol +===================== + + o If channel founder mode is set and the invite mode is set on channel + then the founder should be added to the list automatically so that + if the founder signoff's it will be able join again to the invite only + channel wihtout being invited. + + +TODO After 1.0 +============== o X.509 certificate support. SILC protocol supports certificates and it would be great to have support for them. This is a big task as @@ -124,6 +178,8 @@ TODO After 1.0 to start writing one myself. Anyhow, the OpenSSL X.509 lib should be checked. + Other package that should be checked is the NSS's X509 library. + o SSH2 public keys support. Maybe - not really needed but could be nice as SSH is widely used all over the place. SILC Protocol supports SSH2 public keys.