X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=TODO-1.0;h=73e5a27bc4c2bbffb83c63e54fe1872255e611ff;hb=413da0f8686910f5e627393157566ae729ca99c4;hp=cc751428bd4bef498f10224e0565141bece29183;hpb=6adc48fa2d165fb7522351375ea9e1c0ed01d714;p=silc.git diff --git a/TODO-1.0 b/TODO-1.0 index cc751428..73e5a27b 100644 --- a/TODO-1.0 +++ b/TODO-1.0 @@ -31,6 +31,14 @@ least could be done. o OpenPGP certificate support, allowing the use of PGP public keys in SILC. + o SILC PKCS (silcpkcs.h) reorganizing when other PK supports added. + Move the SILC Public Key routines away from the crypto library into + the core library (silccore). silc_pkcs_public/private_key_* routines + to silc_public/private_key_* routines. The silc_public_key_* routines + should also automatically handle SILC Public Keys, and other keys + and certificates as well. Add fe. silcpk.h into silccore. It should + also include the Public Key Payload encoding and decoding routines. + o Compression routines are missing. The protocol supports packet compression thus it must be implemented. SILC Zip API must be defined. @@ -67,7 +75,7 @@ least could be done. These naturally cause the overal memory consumption to grow but would take away many allocations that can be done several - times in a second. + times in a second (see also ~/silcpacket). o Move the actual file descriptor task callback (the callback that handles the incoming data, outgoing data etc, that is implemnted @@ -90,21 +98,6 @@ least could be done. SILC_BUFFER_LEN macro can do the same. These would save totally 8 bytes of memory per buffer. - o Scheduler can be optimized for FD tasks by changing the fd_queue - to SilcHashTable instead of using linked list. We need to do - one-to-one mapping of FD to task and hash table is more efficient - for this usage. - - Also redefine the silc_select to perhaps return a separate - structure of the events that actually occurred, instead of - returning the events in the fd_list which is then traversed - in the generic code to find the changed events. This can be - made faster by having own struct which includes only the - changed events, thus the tarversing is faster since the whole - fd_list is not traversed anymore (it is still traversed in the - silc_select but at least it removes one extra tarversing later - for the same list). - o Optimizations in Server o Remove the big switch statement from the function @@ -131,13 +124,60 @@ least could be done. SIGNOFF of notify at all (using SIGNOFF takes the idea about SERVER_SIGNOFF away entirely). + o Another SERVER_SIGNOFF opt/bugfix: Currently the signoff is + sent to a client if it is on same channel as the client that + signoffed. However, the entire SERVER_SIGNOFF list is sent to + the client, ie. it may receive clients that was not on the + same channel. This is actually against the specs. It must be + done per channel. It shouldn't receive the whole list just + because one client happened to be on same channel. + + o See also ~/silcserver + o Add SilcAsyncOperation to utility library. Any function that takes - callback as an argument must return SilcAsyncOperation. + callback as an argument must/should return SilcAsyncOperation (see + ~/silcasync). + + o Rewrite SilcProtocol to be SilcFSM (see ~/silcfsm). + + o Do some scheduler optimizations and interface changes (see + ~/silcschedule). + + o Change the lib/silccore/silcpacket.[ch] interfaces (see ~/silcpacket). + + o Add abstract SilcStream and SilcSocketStream (see ~/silcstream). + + o Change some of the SILC Net interfaces (see ~/silcnet). o Add DSS support. + o SILC RNG does not implement random seed files, and they should be + implemented. + o Cipher optimizations (asm, that this) at least for i386 would be nice. 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 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 (Fix this to 0.9.x). + + o EPOC specific additions/changes required: + + o lib/silcutil/epoc routines missing or not completed. + + o The PKCS#1 also calls global RNG (even though it is not used + currently in SILC, the interface allows its use). + + o Something needs to be thought to the logging globals as well, + like silc_debug etc. They won't work on EPOC. Perhaps logging + and debugging is to be disabled on EPOC. + + o Check whether we can fully comply with RFC 2779. + + o The CMODE cipher & hmac change problem (#101).