Started implementing protocol version 1.1 and narrowing down
[silc.git] / TODO
1 TODO/bugs in Irssi SILC client
2 ==============================
3
4  o /cumode for unknown nick does not give any error message (Fix this to
5    1.0).
6
7
8 TODO/bugs In SILC Client Library
9 ================================
10
11  o The PRIVATE_MESSAGE_KEY packet is not handled (it is implemented 
12    though).  This should be added and perhaps new client operation
13    should be added to notify application that it was received and
14    set the key only if application wishes to set (accept the key) it
15    (Do this to 1.0).
16
17  o Additions to do after protocol version 1.1:
18
19         o Add support for list of errors in command replies.  Protocol
20           TODO entry 1.
21
22
23 TODO/bugs In SILC Server
24 ========================
25
26  o Configuration file additions (Do this to 0.8.x):
27
28         o Add incoming connection frequency, incoming connection frequency
29           for single IP address, key exchange frequency, key exchange
30           frequency for single IP. Add also frequency base.
31
32  o If server send CUMODE_CHANGE notify (like setting founder) to router
33    and router does not have founder on channel (founder is left or there's
34    no founder on channel at all), the router will accept the server's
35    founder mode change, even though it perhaps should not do that (Fix 
36    this to 0.9).
37
38  o The router should check for validity of received notify packets from
39    routers (fix this to 0.9).  Following NOTIFYs needs to be verified:
40
41         o JOIN (check that joining is allowed)
42         o SIGNOFF (maybe should check that notifier owns the client)
43
44  o Backup router related issues (Fix this to 1.0):
45
46         o Channel user mode changes are notified unnecessarely when
47           switching to backup router on router crash.
48
49  o Add a timeout to handling incoming JOIN commands.  It should be 
50    enforced that JOIN command is executed only once in a second or two
51    seconds.  Now it is possible to accept n incoming JOIN commands
52    and process them without any timeouts.  THis must be employed because
53    each JOIN command will create and distribute the new channel key
54    to everybody on the channel (Fix this to 1.0).
55
56  o Lots of statistics updating is missing around the server.
57
58  o If client's public key is saved in the server (and doing public key
59    authentication) then the hostname and the username information could
60    be taken from the public key.  Should be a configuration option!
61
62
63 TODO/bugs In SILC Libraries
64 ===========================
65
66  o WIN32 silc_net_create_connection_async does not work the same way
67    than on Unix.  Do it with threads on WIN32.  The function works but
68    is not actually async currently (Fix this to 1.0).
69
70
71 TODO in Toolkit Documentation
72 =============================
73
74 Stuff that needs to be done in order to complete the Tooolkit Reference
75 Manual (Do these to 0.9 and 1.0).
76
77  o ROBOdoc documenting missing from lib/silcutil/silcbuffer.h.
78
79  o ROBOdoc documenting missing from lib/silcutil/silcdlist.h.
80
81  o ROBOdoc documenting missing from lib/silcutil/silcfileutil.h.
82
83  o ROBOdoc documenting missing from lib/silccrypt/silchash.h.
84
85  o ROBOdoc documenting missing from lib/silccrypt/silccipher.h.
86
87  o ROBOdoc documenting missing from lib/silccrypt/silcpkcs.h.
88
89  o Write "Programming with Toolkit" document, describing how to build
90    Toolkit, how the build system works, where is everything, how
91    new (external) projects can be glued into Toolkit (use irssi as an
92    example), and how external projects can use Toolkit without gluing into
93    it (how to link etc), debugging, architecture, types, etc.
94
95  o Write "Platform Implementations" document to describe what platforms
96    Toolkit support, what has been implemented, what has not been, what
97    works differently etc.
98
99
100 TODO in SILC Protocol
101 =====================
102
103 Current protocol version is 1.0.  However, it is far from being perfect,
104 and needs to include additional features.  Following protocol TODO entries
105 describe new stuff to be added to protocol versions 1.x.
106
107  1. Re-define the Status Payload: it is now 16 bits, split it into two
108     8 bits fields.  First field includes status types from 0 - 9 and
109     10 - n *if* it is not an list of errors.  If it is list of errors then
110     the first field includes 1, 2 and/or 3, and the second field includes
111     the error status 10 - n.  This way it is possible to send multiple
112     errors (list of errors) and we have a way to tell the receiver that
113     there will be other errors as well.  The second field is used only
114     if there is list of errors.  If normal status, or normal (single)
115     error status the second field is set to zero, and must be ignored.
116     Hence, the status works same way as now except for list of errors.
117     To be included in protocol version 1.1.
118
119  2. Define that WHOIS and IDENTIFY commands must send list of errors
120     if multiple Client ID (or Channel ID and Server ID for IDENTIFY) was
121     requested and was not found.  Each unfound entry must cause an error
122     command reply to the sender.  Also define that errors must be sent
123     *after* sending successfully found entries (this way receiver may
124     ignore them).  To be included in protocol version 1.1.
125
126  4. Add "request parameters" or similar to the WHOIS command, which can
127     be used to request various parameters (something not returned by
128     standard WHOIS command) about clients (info that could be fetched
129     even from clients).  Additional specification (or appendix) should 
130     be done to define the payload and the parameters.  It could be used
131     to make the WHOIS command support various search conditions as well.
132     This would be the way to extend the WHOIS command to support various
133     new features without always making the command incompatible to previous
134     version.  To be included in protocol version 1.1.
135
136  5. Inviting and banning by public key should be made possible.  To be
137     included in protocol version 1.x.
138
139  7. Channel Message Payload needs slight redesining to include the IV
140     field to the MAC generation of the payload.  It is authenticated
141     by the packet's MAC but not by the payload's MAC.  Since the IV
142     belongs to the payload, its integrity should be protected by the
143     payload MAC and not alone by packet MAC.  To be included in protocol 
144     version 1.1.
145
146  11. Change the wording in Private Message Key Payload definition to
147      describe the problems of trusting the payload, and to indicate that
148      the receiver may not accept the key in the payload, and to describe
149      other means of distributing a key.
150
151  16. Add STATS command after all to the protocol for providing practically
152      same information client gets when connects to a server.  Normal
153      server would send this to router always when received from client.