X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=TODO;h=cc5fc769a559e397fee0dbfc0528d3ca0eb3f862;hp=13beb86d0e651192bba149c56478a3f111cbe28b;hb=017dec75a98209fbef49eb496c2269b0c49e736d;hpb=ea1378b9634fa68df8fcdf1f50b6d90609137a85 diff --git a/TODO b/TODO index 13beb86d..cc5fc769 100644 --- a/TODO +++ b/TODO @@ -1,90 +1,87 @@ -TODO General -============ +TODO/bugs in Irssi SILC client +============================== - 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 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 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... -TODO In SILC Client Library -=========================== + 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. + + 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 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 With USERS command to a channel user is not joined the name of the + channel is printed as garbled. - 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). + o Add PERL scripting support from Irssi CVS. - 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 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 Input line on UI is buggy. Cursor movement etc bugs. Too lazy to - fix it. + o Set different kind of settings, like, /set mutual_authentication, + /set key_exchange_timeout, /set conn_auth_timeout etc etc. -TODO In SILC Server -=================== +TODO/bugs In SILC Client Library +================================ - o TODO in commands (command.c and command_reply.c): + o JOIN command's argument handling is buggy. See the XXX in the code. - 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). - o TODO in notify types (packet_receive.c): +TODO/bugs In SILC Server +======================== - o SERVER_SIGNOFF notify type is not implemented + o Add perhaps /var/run/silcd.pid for PID information for the server. - 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 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 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 Incomplete IPv6 support: - 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 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 The backup router support described in the protocol specification + should be done at some point. - 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. + 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. -TODO In SILC Libraries -====================== + 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 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. - o Re-key in general is actually missing (from everywhere) and must be done. +TODO/bugs In SILC Libraries +=========================== + + 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 @@ -92,51 +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 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 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 Incomplete IPv6 support: - 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. + 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 in the protocol before SILC 0.x -==================================== - o New commands and features in the commands - (draft-riikonen-silc-spec-xx.txt): +TODO/Bugs in native WIN32 support (libraries) +============================================= - 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 silc_net_create_connection_async does not work the same way than on + Unix. Do it with threads on WIN32. -TODO After 1.0 -============== +TODO In SILC Protocol +===================== - 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. + 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. - 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 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 @@ -153,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.