Imported LTM 0.41. Renamed all mp_* functions to tma_mp_* to
[silc.git] / TODO
1 TODO for 1.1
2 ============
3
4 NOTE: Any item that doesn't have (***DONE) in it, isn't done yet.  The
5 (***TESTING NEEDED) means that the item has been done but not yet properly
6 tested.
7
8
9 apps/silcd, The SILC Server     ****PARTLY DONE****
10 ===========================
11
12  o Port all code to use SILC Toolkit 1.1 APIs.
13
14  o Fix/test GETKEY.
15
16  o Fix/test MOTD.
17
18  o Remove protocol.[ch].  (***DONE)
19
20  o Rewrite connecting accepting. (***TESTING NEEDED)
21
22  o Rewrite async connecting. (***TESTING NEEDED)
23
24  o Connecting from SILC router to SILC server.
25
26  o Rewrite rehash, HUP.
27
28  o Heartbeat-keepalive.
29
30  o Test backup router resuming protocol.
31
32  o Check all packet receive routines that they call silc_packet_free.
33
34  o Add Web statistics module using lib/silchttp.  Give out server
35    statistics. (***DONE)
36
37
38 SILC Client     ****PARTLY DONE****
39 ===========
40
41  o Porting to new Toolkit API and new Client Library API (***TESTING NEEDED)
42
43  o Improve help files, especially /cmode, /cumode and /key.
44
45
46 lib/silcclient, The Client Library      ***PARTLY DONE****
47 ==================================
48
49  o silcclient.h clean up and API rewrites.
50
51  o silcclient_entry.h finishing, all entry relates APIs to this header.
52
53  o SilcChannelEntry, SilcServerEntry, SilcChannelUser, allocating,
54    freeing, finding, etc. rewrite.  Also making them reference counted for
55    multi threads use. (***DONE)
56
57  o Rewrite silc_client_get_clients_by_channel.
58
59  o Rewrite client side WHOIS command (for whois -details). (***DONE)
60
61  o Finish all the missing SILC packet processings, rewrites. (***DONE)
62
63  o The client_notify.c rewrite. (***DONE)
64
65  o Resuming to client_register.c (remove client_resume.c) (***DONE)
66
67  o Rekey rewrite. (***DONE)
68
69  o Remove protocol.[ch]. (***DONE)
70
71  o File transfer rewrite. (***DONE)
72
73  o File transfer API documentation.
74
75  o Connection auth request. (***DONE)
76
77  o Password auth test, public key auth test.
78
79  o Starting key exchange directly, rewrite. (***DONE)
80
81  o Channel messages, channel private keys, channel entires, channel
82    search, etc. rewrite. (***TESTING NEEDED)
83
84  o For many APIs leave the hash context allocations to the caller instead
85    of using client->sha1hash and client->md5hash, or some kind of thread
86    safe (no locking) concept. (***DONE)
87
88  o Key agreement rewrite. (***TESTING NEEDED)
89
90  o Connecting to remote client (***DONE)
91
92  o Private message waiting API (in threads) (***TESING NEEDED)
93
94  o client_attrs.c, attributes rewrite. (***TESTING NEEDED)
95
96  o No SilcBuffer lists back to application in command_reply operations.
97    Convert them all to real lists and/or structures for easier use.
98    (***DONE)
99
100  o Nickname formatting rewrite. (***TESTING NEEDED)
101
102  o UDP connections. (***TESTING NEEDED)
103
104
105 lib/silcsftp                    ****DONE****
106 ============
107
108  o Porting to use the new util library. (***DONE)
109
110
111 lib/silccore/silcpacket.[ch]    ****PARTLY DONE****
112 ============================
113
114  o SilcPacketEngine. (***DONE)
115
116  o New SILC Packet API. (***DONE)
117
118  o Implement silc_packet_engine_stop and silc_packet_stream_destroy. (***DONE)
119
120  o IV Included flag support, UDP transport support (***TESTING NEEDED)
121
122
123 lib/silccore/silcid.[ch]        ****DONE****
124 ========================
125
126  o Add silc_id_str2id to accept the destination buffer as argument
127    and thus not require any memory allocation.  Same will happen
128    with silc_id_payload_* functions. (***DONE)
129
130  o silc_id_str2id, silc_id2str to non-allocating routines. (***DONE)
131
132
133 lib/silcskr     ****PARTLY DONE****
134 ===========
135
136  o Removing key from the repository is not possible currently.  It should
137    be. (***DONE)
138
139
140 lib/silcske/silcske.[ch]        ***PARTLY DONE****
141 ========================
142
143  o Responder rekey (***TESTING NEEDED)
144
145  o IV Included flag support in SKE (***DONE)
146
147  o UDP transport changes; retransmission support by using exponential
148    backoff algorithm. (***DONE)
149
150  o SilcConnAuth header file documentation. (***DONE)
151
152
153 lib/silccrypt                   ****PARTLY DONE****
154 =============
155
156  o Implement PKCS #1 sign/verify with hash OID. (***TESTING NEEDED)
157
158  o Implement SILC Public Key Version 2 handling in sign/verify.  Implement
159    Version (V) identifier (***DONE)
160
161  o SILC PKCS (silcpkcs.h) reorganizing when other PK supports added.
162    Move the SILC Public Key routines away from the crypto library into
163    the core library (silccore).  silc_pkcs_public/private_key_* routines
164    to silc_public/private_key_* routines.  The silc_public_key_* routines
165    should also automatically handle SILC Public Keys, and other keys
166    and certificates as well.  Add fe. silcpk.h into silccore.  It should
167    also include the Public Key Payload encoding and decoding routines.
168    (***DONE)
169
170  o Assembler AES (***DONE)
171
172
173 lib/silcutil                    ****PARTLY DONE****
174 ============
175
176  o The regex code from lib/contrib might compile fine on all platforms.
177    No need to make it silcutil/unix/ specific.  Add them to generic
178    silcutil.c. (***TESTNG NEEDED)
179
180  o Silc FD Stream to WIN32 (lib/silcutil/silcfdstream.h) (***TESTING NEEDED)
181
182  o bool -> SilcBool (***DONE)
183
184
185 lib/silcutil/silcbuffer.h       ****DONE****
186 =========================
187
188  o Remove the `truelen' field from SilcBuffer as it is entirely
189    redundant since we can get the true length of the buffer by
190    doing buffer->end - buffer->header.  Add silc_buffer_truelen
191    macro instead.  Consider also removing `len' field too since
192    it effectively is buffer->tail - buffer->data, and adding
193    silc_buffer_len macro can do the same.  These would save
194    totally 8 bytes of memory per buffer. (***DONE)
195
196
197 lib/silcutil/silcbuffmt.[ch]    ****DONE****
198 ============================
199
200  o SilcStack aware silc_buffer_unformat (***DONE)
201
202  o SilcStack aware silc_buffer_format (***DONE)
203
204  o silc_buffer_format reallocates automatically (***DONE)
205
206  o SILC_STR_OFFSET (***DONE)
207
208
209 lib/silcutil/silcstack.[ch]     ****DONE****
210 ===========================
211
212  o Data stack implementation (***DONE)
213
214
215 lib/silcutil/silcstream.[ch]    ****DONE****
216 ============================
217
218  o Add abstract SilcStream. (***DONE)
219
220
221 lib/silcutil/silcsocketstream.[ch]      ****PARTY DONE****
222 ==================================
223
224  o Add SilcSocketStream (***DONE)
225
226  o Add SilcSocketStream for WIN32 (***TESTING NEEDED)
227
228  o Test QoS after the changes made to socket stream
229
230
231 lib/silcutil/silcschedule*.[ch]         ****PARTLY DONE****
232 ===============================
233
234  o Scheduler can be optimized for FD tasks by changing the fd_queue
235    to SilcHashTable instead of using linked list.  We need to do
236    one-to-one mapping of FD to task and hash table is more efficient
237    for this usage.
238
239    Also redefine the silc_select to perhaps return a separate
240    structure of the events that actually occurred, instead of
241    returning the events in the fd_list which is then traversed
242    in the generic code to find the changed events.  This can be
243    made faster by having own struct which includes only the
244    changed events, thus the tarversing is faster since the whole
245    fd_list is not traversed anymore (it is still traversed in the
246    silc_select but at least it removes one extra tarversing later
247    for the same list).
248
249    Other task queues should be changed to use SilcList.  (***DONE)
250
251  o Add SILC scheduler's internal routines into a table of implementation
252    function pointers, that the generic code then takes as extern from
253    implementation.  These are the silc_schedule_internal_* routines.
254    (***DONE)
255
256  o Change SILC_TASK_CALLBACK to non-static, and remove the macro
257    SILC_TASK_CALLBACK_GLOBAL. (***DONE)
258
259  o SILC Schedule API changes to WIN32. (***TESTING NEEDED)
260
261
262 lib/silcutil/silcasync.[ch]     ****DONE****
263 ===========================
264
265  o Add SilcAsyncOperation to utility library.  Any function that takes
266    callback as an argument must/should return SilcAsyncOperation.
267    (***DONE)
268
269
270 lib/silcutil/silctime.[ch]      ****DONE****
271 ===========================
272
273  o SilcTime. (***DONE)
274
275  o system time, universal, generalized. (***DONE)
276
277
278 lib/silcutil/silcfsm.[ch]       ****DONE****
279 =========================
280
281  o SILC Finite State Machine API.  Replaces SILC Protocol API (***DONE)
282
283
284 lib/silcutil/silcnet*, lib/silcutil/*/silc*net*         ****PARTLY DONE****
285 ===============================================
286
287  o Add UDP interface (***DONE)
288
289  o Add UDP interface for WIN32 (***TESTING NEEDED)
290
291  o New network interfaces (***DONE)
292
293
294 lib/silcmath                    ****PARTLY DONE****
295 ============
296
297  o Test on x86_64.
298
299  o Change LTM and TFM function names when importing to SILC tree to avoid
300    rare linking problems on system that has same named symbols already in
301    the system. (***DONE)
302
303
304 lib/silcutil/symbian/           ****PARTLY DONE****
305 =====================
306
307   o lib/silcutil/symbian routines missing or not completed.
308     (****TESTING NEEDED)
309
310   o Something needs to be thought to the logging globals as well,
311     like silc_debug etc.  They won't work on EPOC.  Perhaps logging
312     and debugging is to be disabled on EPOC.
313
314
315 lib/silcasn1                    ****PARTLY DONE****
316 ============
317
318  o ASN.1 library (***DONE)
319
320  o Header documentation missing. (***DONE)
321
322  o Some string encodings missing (copy/paste matter). (***DONE)