Merged silc_1_0_branch to trunk.
[silc.git] / TODO-1.0
index 4a0f6e2a558a18f6f5be2148746b4a900ca5bb41..73e5a27bc4c2bbffb83c63e54fe1872255e611ff 100644 (file)
--- 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
@@ -116,16 +124,30 @@ 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/should return SilcAsyncOperation (see 
    ~/silcasync).
 
  o Rewrite SilcProtocol to be SilcFSM (see ~/silcfsm).
 
- o Do some scheduler optimizations (see ~/silcschedule).
+ o Do some scheduler optimizations and interface changes (see 
+   ~/silcschedule).
+
+ o Change the lib/silccore/silcpacket.[ch] interfaces (see ~/silcpacket).
 
- o Change SILC_TASK_CALLBACK to non-static, and remove the macro
-   SILC_TASK_CALLBACK_GLOBAL.
+ o Add abstract SilcStream and SilcSocketStream (see ~/silcstream).
+
+ o Change some of the SILC Net interfaces (see ~/silcnet).
 
  o Add DSS support.
 
@@ -138,6 +160,13 @@ least could be done.
    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.
@@ -148,3 +177,7 @@ least could be done.
        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).