make it compile on mingw32.
[silc.git] / TODO
diff --git a/TODO b/TODO
index 530e38731df641f19790062d9275a404385cc534..75f219f1e16414625d628a6785840c860eda6cc6 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,43 +1,21 @@
 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 Does not show ops and normal users on JOIN correctly, perhaps some
+   theme issue (Fix this to 0.8.x).
 
- 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 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 auto-nick support to Irssi, so that the user specified nickname
-   would be sent to the server immediately (automatically) after the
-   client is connected to the server.
-
- 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.
+ o /cumode for unknown nick does not give any error message (Fix this to
+   1.0).
 
 
 TODO/bugs In SILC Client Library
 ================================
 
- o When changing own nickname and there exists a same nickname the library
-   can give the client now nickname in format nick@host.  This is new
-   behaviour and maybe should be removed.  The changer should always
-   get the one it wants and not have the formatted nickname.
+ o The PRIVATE_MESSAGE_KEY packet is not handled (it is implemented 
+   though).  This should be added and perhaps new client operation
+   should be added to notify application that it was received and
+   set the key only if application wishes to set (accept the key) it
+   (Do this to 1.0).
 
  o Additions to do after protocol version 1.1:
 
@@ -52,7 +30,26 @@ TODO/bugs In SILC Client Library
 TODO/bugs In SILC Server
 ========================
 
- o Backup router related issues
+ o Configuration file additions (Do this to 0.8.x):
+
+       o Add incoming connection frequency, incoming connection frequency
+         for single IP address, key exchange frequency, key exchange
+         frequency for single IP. Add also frequency base.
+
+ o If server send CUMODE_CHANGE notify (like setting founder) to router
+   and router does not have founder on channel (founder is left or there's
+   no founder on channel at all), the router will accept the server's
+   founder mode change, even though it perhaps should not do that (Fix 
+   this to 0.9).
+
+ o The router should check for validity of received notify packets from
+   routers (fix this to 0.9).  Following NOTIFYs needs to be verified:
+
+       o JOIN (check that joining is allowed)
+       o SIGNOFF (maybe should check that notifier owns the client)
+       o KILLED (check that killling is allowed (Protocol TODO #13))
+
+ o Backup router related issues (Fix this to 1.0):
 
        o Channel user mode changes are notified unnecessarely when
          switching to backup router on router crash.
@@ -62,22 +59,9 @@ TODO/bugs In SILC Server
    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 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:
+   to everybody on the channel (Fix this to 1.0).
 
-       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 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 Lots of statistics updating is missing around the server.
 
  o If client's public key is saved in the server (and doing public key
    authentication) then the hostname and the username information could
@@ -87,15 +71,38 @@ TODO/bugs In SILC Server
 TODO/bugs In SILC Libraries
 ===========================
 
- o make install copies the symblic links from lib/silcsim/ and not
-   modules.
-
  o WIN32 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.
+   is not actually async currently (Fix this to 1.0).
 
- o Rewrite the lib/silcsim/silcsim.h.  The SilcSimContext should be
-   private and silc_sim_alloc should take necessary arguments.
+
+TODO in Toolkit Documentation
+=============================
+
+Stuff that needs to be done in order to complete the Tooolkit Reference
+Manual (Do these to 0.9 and 1.0).
+
+ o ROBOdoc documenting missing from lib/silcutil/silcbuffer.h.
+
+ o ROBOdoc documenting missing from lib/silcutil/silcdlist.h.
+
+ o ROBOdoc documenting missing from lib/silcutil/silcfileutil.h.
+
+ o ROBOdoc documenting missing from lib/silccrypt/silchash.h.
+
+ o ROBOdoc documenting missing from lib/silccrypt/silccipher.h.
+
+ o ROBOdoc documenting missing from lib/silccrypt/silcpkcs.h.
+
+ o Write "Programming with Toolkit" document, describing how to build
+   Toolkit, how the build system works, where is everything, how
+   new (external) projects can be glued into Toolkit (use irssi as an
+   example), and how external projects can use Toolkit without gluing into
+   it (how to link etc), debugging, architecture, types, etc.
+
+ o Write "Platform Implementations" document to describe what platforms
+   Toolkit support, what has been implemented, what has not been, what
+   works differently etc.
 
 
 TODO in SILC Protocol
@@ -141,43 +148,49 @@ describe new stuff to be added to protocol versions 1.x.
     new features without always making the command incompatible to previous
     version.  To be included in protocol version 1.1.
 
+ 5. Inviting and banning by public key should be made possible.  To be
+    included in protocol version 1.x.
+
+ 6. Add perhaps SILENCE_USERS, SILENCE_OPERS channel user modes which
+    can be used to silence (moderate) normal users and opers (this set
+    only by founder).  To be included in protocol version 1.1.
+
+ 7. Channel Message Payload needs slight redesining to include the IV
+    field to the MAC generation of the payload.  It is authenticated
+    by the packet's MAC but not by the payload's MAC.  Since the IV
+    belongs to the payload, its integrity should be protected by the
+    payload MAC and not alone by packet MAC.  To be included in protocol 
+    version 1.1.
+
+ 8. Remove the administrative commands from the protocol all together.
+    It does not make sense for the protocol to define how a server is
+    reconnected or shutdown, since they are implementation and 
+    configuration issues.  Besides protocol provides only limited set of
+    administrative commands and cannot define all that one could imagine.
+    To be included in protocol version 1.1.
 
-TODO After 1.0
-==============
-
- o Compression routines are missing.  The protocol supports packet
-   compression thus it must be implemented.  SILC Zip API must be
-   defined.  zlib package is already included into the lib dir (in CVS,
-   not in distribution), but it is not used yet, and it requires some
-   tweaking on the Makefiles (we want static lib not shared).
-
- o Implement the defined SilcDH API.  The definition is in
-   lib/silccrypt/silcdh.h.
-
- 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 X.509 certificate support.  SILC protocol supports certificates and
-   it would be great to have support for them.  This is a big task as
-   support has to be made for ASN.1 as well.  I've looked into OpenSSL 
-   package as it has X.509 certificate support (and ASN.1 as well).  
-   The code does not look very good to my eye but it has some potentials.
-   This should be looked at more closely.
+ 9. Add SILC_MESAGE_FLAG_REPLY for being other side to the
+    SILC_MESSAGE_FLAG_REQUEST.  Add generic SILC_MESSAGE_FLAG_DATA, which
+    can include generic payload, which can include generic data.  The
+    payload definition is left out for now.  To be included in protocol
+    version 1.1.
 
-   Naturally own SILC Certificate API has to be defined regardles what
-   the actual X.509 library is (OpenSSL X.509 or something else).  Other
-   choice is to write own X.509 library but I'm not going to do it - 
-   I can help to migrate the OpenSSL X.509 into SILC and I can help if 
-   someone would like to write the X.509 library - but I'm not going 
-   to start writing one myself.  Anyhow, the OpenSSL X.509 lib should
-   be checked.
+ 10. Check command reply error status types in various commands,
+     specifically NO_FOPRIV is missing from many commands.  To be 
+     included in protocol version 1.1.
 
-   Other package that should be checked is the NSS's X509 library,
-   which I like more over OpenSSL package.
+ 11. Change the wording in Private Message Key Payload definition to
+     describe the problems of trusting the payload, and to indicate that
+     the receiver may not accept the key in the payload, and to describe
+     other means of distributing a key.
 
- o SSH2 public keys support.
+ 13. Add the killer's client ID to the KILLED notify.  To be included in 
+     protocol version 1.1.
 
- o OpenPGP certificate support.
+ 14. The length of Arguments Num field in Notify Payload and Command
+     Payload enforces that total of 256 arguments can be associated
+     to a such payload.  However, command-xx draft specified much higher
+     values, and these should be fixed.
 
- o Cipher optimizations (asm, that this) at least for i386 would be nice.
+ 15. The LEAVE command reply should return the Channel ID of the channel
+     that was parted.