TODO for 1.1 And Beyond
=======================
-NOTE: Any item that doesn't have (***DONE) in it, isn't done yet.
+NOTE: Any item that doesn't have (***DONE) in it, isn't done yet. The
+(***TESTING NEEDED) means that the item has been done but not yet properly
+tested.
-lib/silccrypt ****PARTLY DONE****
-=============
+lib/silcclient, The Client Library
+==================================
- o Implement the defined SilcDH API. The definition is in
- lib/silccrypt/silcdh.h.
+ o silcclient.h clean up and API rewrites.
- o SSH2 public keys support, allowing the use of SSH2 public keys in
- SILC.
+ o silcclient_entry.h finishing, all entry relates APIs to this header.
- o OpenPGP certificate support, allowing the use of PGP public keys
- in SILC.
+ o SilcChannelEntry, SilcServerEntry, SilcChannelUser, allocating,
+ freeing, finding, etc. rewrite. Also making them reference counted for
+ multi threads use.
- 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.
- (***DONE)
+ o Finish all the missing SILC packet processings, rewrites.
- o Add DSS support.
+ o The client_notify.c rewrite.
- o Cipher optimizations (asm, that this) at least for i386 would be nice.
+ o Resuming to client_register.c (remove client_resume.c)
- o ECDSA and ECDH.
+ o Rekey rewrite.
+
+ o Remove protocol.[ch].
+
+ o File transfer rewrite.
+
+ o Starting key exchange directly, rewrite.
+
+ o Channel messages, channel private keys, channel entires, channel
+ search, etc. rewrite.
+
+ o For many APIs leave the hash context allocations to the caller instead
+ of using client->sha1hash and client->md5hash, or some kind of thread
+ safe (no locking) concept.
+
+ o Password auth test, public key auth test.
+
+ o Key agreement rewrite.
+
+ o Connecting to remote client, peer-to-peer private messages
+
+ o Private message waiting API (in threads)
+
+ o client_attrs.c, attributes rewrite.
+
+ o No SilcBuffer lists back to application in command_reply operations.
+ Convert them all to real lists and/or structures for easier use.
+
+ o Nickname formatting rewrite.
+
+ o UDP connections.
+
+ o Remove silc_client_run and silc_client_run_one from calling SilcSchedule.
+ Leave the scheduling entirely to application.
+
+ o All packet waiting timeout tests and error condition tests.
lib/silccore/silcpacket.[ch] ****DONE****
o IV Included flag support, UDP transport support (***TESTING NEEDED)
-lib/silcske/silcske.[ch]
+lib/silccore/silcid.[ch] ****DONE****
========================
- o IV Included flag support (it currently doesn't accept it)
+ o Add silc_id_str2id to accept the destination buffer as argument
+ and thus not require any memory allocation. Same will happen
+ with silc_id_payload_* functions. (***DONE)
+ o silc_id_str2id, silc_id2str to non-allocating routines. (***DONE)
-lib/silccore/silcid.[ch] ****DONE****
+
+lib/silccore
+============
+
+ o All payload encoding routines should take SilcStack as argument.
+
+ o All payload test routines into lib/silccore/tests/.
+
+
+lib/silcskr
+===========
+
+ o Removing key from the repository is not possible currently. It should
+ be.
+
+
+lib/silcske/silcske.[ch]
========================
- o Add silc_id_str2id to accept the destination buffer as argument
- and thus not require any memory allocation. Same will happen
- with silc_id_payload_* functions. (***DONE)
+ o IV Included flag support in SKE (***TESTING NEEDED)
- o silc_id_str2id, silc_id2str to non-allocating routines. (***DONE)
+ o UDP transport changes; retransmission support by using exponential
+ backoff algorithm.
+ o SilcConnAuth header file documentation.
-lib/silccore
-============
- o All payload encoding routines should take SilcStack as argument.
+lib/silccrypt ****PARTLY DONE****
+=============
+
+ o Implement the defined SilcDH API. The definition is in
+ lib/silccrypt/silcdh.h.
+
+ o SSH2 public keys support, allowing the use of SSH2 public keys in
+ SILC.
+
+ 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.
+ (***DONE)
+
+ o Add DSS support.
+
+ o Cipher optimizations (asm, that this) at least for i386 would be nice.
+
+ o ECDSA and ECDH.
lib/silcutil ****PARTLY DONE****
lib/silcutil/silcbuffmt.[ch] ****PARTLY DONE****
============================
- o SilcStack aware silc_buffer_unformat
+ o SilcStack aware silc_buffer_unformat (***DONE)
o SilcStack aware silc_buffer_format (***DONE)
o Add SilcSocketStream for WIN32
+ o Handle EOS sending to upper layer properly
+
o Test QoS after the changes made to socket stream
o New network interfaces (***DONE)
+lib/silcsftp
+============
+
+ o Porting to use the new util library.
+
+
lib/silcutil/epoc/*
===================
increased memory consumption with TFM, and the rare need for public
key operations in server.
+ o Change LTM and TFM function names when importing to SILC tree to avoid
+ rare linking problems on system that has same named symbols already in
+ the system.
+
o The SILC MP API function must start returning indication of success
and failure of the operation.
any other MP function (including utility ones) that may allocate
memory.
+ o Test on x86_64.
+
o All utility functions should be made non-allocating ones.
key ends up being used.
o The CMODE cipher & hmac change problem (#101).
-
-
-lib/silcclient
-==============
-
- o Some form of rewrite to make it more efficient.
-
- o Clear up interfaces.
-
- o Remove silc_client_run and silc_client_run_one from calling SilcSchedule.
- Leave the scheduling entirely to application.