X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=TODO;h=cc5fc769a559e397fee0dbfc0528d3ca0eb3f862;hb=017dec75a98209fbef49eb496c2269b0c49e736d;hp=efd655d9aca2256faa3162fed4136aaf7e9d3beb;hpb=42ca8e12cdd2bac5540cdbf5a08bcc25ae6fae45;p=silc.git diff --git a/TODO b/TODO index efd655d9..cc5fc769 100644 --- a/TODO +++ b/TODO @@ -1,115 +1,87 @@ -TODO -==== +TODO/bugs in Irssi SILC client +============================== -This is more or less complete list of tasks that has to be done before -SILC 1.0 could ever be released. It is clear that the list does not -include all the bugs that exists. At the end of list are tasks that -needs to be done but are probably post 1.0. + 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. -Feel free to contribute if you have the ability and free time - all the -help is really appreciated - and needed. + 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... - - Pekka + 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 The QUIT command should wait for servers disconnection (at least for + a while) before exiting the application. -TODO General -============ + 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. - o We should replace all short, int, long, unsigned short, unsigned int, - unsigned long with some pre-defined datatypes that really are what - we want on all platforms. int16, uint16, int32, uint32 etc. are - what we could use or maybe SilcInt16, SilcUInt16 etc. Also, boolean - datatype should be defined. + o With USERS command to a channel user is not joined the name of the + channel is printed as garbled. + o Add PERL scripting support from Irssi CVS. -TODO In SILC Client Library -=========================== - - 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 Logic for handling multiple same nicknames for example in private - message sending. I guess the logic is done in server side but is - missing from client. - - o I guess, public key authentication (when connecting to a server) - is not working currently. It is just matter of loading the keys - from file and using them (see corresponding code in server, it should - support public key authentication already). - - o Non-blocking connection on the background must be stopped if some - other connection on same window has established. Now it is possible - that some non-blocking connection timeouts on the background when - we already have a working connection to some other place; things - goes bad. + 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 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 Set different kind of settings, like, /set mutual_authentication, + /set key_exchange_timeout, /set conn_auth_timeout etc etc. - o Input line on UI is buggy. Cursor movement etc bugs. Too lazy to - fix it. +TODO/bugs In SILC Client Library +================================ -TODO In SILC Server -=================== + o JOIN command's argument handling is buggy. See the XXX in the code. - o TODO in commands (command.c and command_reply.c): - o RESTART is not implemented - o In servers all command reply funtions should still call the - pending command reply even if the reply was error. In client - it is not called but in server, I think, it must be called. - When implementing this check that all commands handle the - situation correctly when it is called as pending command - (it should most likely check that cmd->pending == TRUE/FALSE). +TODO/bugs In SILC Server +======================== - o TODO in notify types (packet_receive.c): + o Add perhaps /var/run/silcd.pid for PID information for the server. - o SERVER_SIGNOFF notify type is not implemented + o Add a timeout to handling incmoing 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 Packet processing can be made faster. All packet function in the - packet_receive.c has same prototypes. Instead of calling those from - huge switch() make a table of callback functions that can be called - directly by the packet type. + o Incomplete IPv6 support: - 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 silcd/serverid.c and its routines supports only IPv4. - o Acceptance of incoming connections (client and server connections) - should be checked before key exchange protocol. Currently it is - checked at the authentication phase after KE, that is ok, but it should - be checked before starting KE, as well. + o The backup router support described in the protocol specification + should be done at some point. - 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 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 Protocol execution timeouts are hard coded, should be configurable. + 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 IP address fields in configuration file should accept mask format - as well, IP/MASK, and not just plain IP. + o Protocol execution timeouts are hard coded, should be + configurable. - o Connection classes should be actually implemented in serverconfig.c. - They can be defined but they are totally ignored currently. + 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 In SILC Libraries -====================== - o Implement PFS (Perfect Forward Secrecy) flag in SKE (and in client and - server, actually). If PFS is set, re-key must cause new key exchange. - This is required by the SILC protocol. +TODO/bugs In SILC Libraries +=========================== - o Re-key in general is actually missing (from everywhere) and must be done. + o Some ./prepare problems with latest autoconf and automake. o Compression routines are missing. The protocol supports packet compression thus it must be implemented. SILC Comp API must be @@ -117,67 +89,47 @@ TODO 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 Rewrite the task system. I made it too complex and too "neat" and - it really should be rewritten. We don't need priorities really, one - priority is enough. This will simplify a lot the task system. - - 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 Random Number Generator needs some tweaking. Reading /dev/random may - block resulting slow initialization of RNG. Some other things in the - RNG may block as well. Also, I have some pending changes to the RNG - that needs to be commited (from Schneier's Yarrow-160 paper). They - should make the RNG even better. - - -TODO in the protocol before SILC 0.x -==================================== - - o New commands and features in the commands - (draft-riikonen-silc-spec-xx.txt): - - o Define GETKEY command to fetch the public key of a server - and/or a client in the SILC Network. - o Define SENDKEY command to send your public key to a client - in the network. Sending to the server must not be done due - to various security reasons (the server must not trust the - public keys blindly without third party verification; that's - why SENDKEY is not for servers). - o Define AWAY command to set the indication flag whether the - client is present or not. Do not save the away message to the - server though. - o Define the channel founder property to be permanent locally in - the server so that channel founder can regain its rights even - if it disconnects from the server. Thus, define a new command - or channel user mode that can be used to set the channel founder - passphrase or public key that can be used in the authentication - when regaining the founder rights. - - o New features in the KE/auth protocol - (draft-riikonen-silc-ke-auth-xx.txt): - - o Define group exchange support for the SKE so that the SKE - could be performed among more than two entities. This is not - a showstopper and may be defined later. + 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. However, the silc_buffer_[un]format + routines support only SilcBuffer so they would require reallocation + of SilcBuffer. Maybe support for raw data (and not just SilcBuffer) + should be added silc_buffer_[un]format_? routines. These are currently + only cosmetic changes but at some point must be done to make the + payload interfaces consistent. + o Incomplete IPv6 support: -TODO After 1.0 -============== + 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. - 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. - 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/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. + + +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 @@ -194,6 +146,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.