updates.
[crypto.git] / TODO
diff --git a/TODO b/TODO
index ec144295c15b7c689f1a7e6e09c5df532cf516f2..a8144872547ee1690cac3956e881423061fd7c7c 100644 (file)
--- a/TODO
+++ b/TODO
@@ -82,28 +82,16 @@ Runtime library, lib/silcutil/
 
  o Fix universal time decoding (doesn't accept all formats) in silctime.c.
 
- o Add functions to manipulate environment variables.
-
-   SilcBool silc_setenv(const char *variable, const char *value);
-   const char *silc_getenv(const char *variable);
-   SilcBool silc_clearenv(const char *variable);
+ o Add functions to manipulate environment variables. (***DONE)
 
  o Add functions to loading shared/dynamic object symbols (replaces the
    SIM library (lib/silcsim) and introduces generic library).  Add this
-   to lib/silcutil/silcdll.[ch].
-
-   SilcDll silc_dll_load(const char *object_path, SilcDllFlags flags);
-   void silc_dll_close(SilcDll dll);
-   void *silc_dll_getsym(SilcDll dll, const char *symbol);
-   const char *silc_dll_error(SilcDll dll);
+   to lib/silcutil/silcdll.[ch].  (***TESTING NEEDED WIN32, TODO Symbian)
 
  o Add directory opening/traversing functions
 
  o silc_getopt routines
 
- o silc_hash_table_replace -> silc_hash_table_set.  Retain support for
-   silc_hash_table_replace as macro.
-
  o The SILC Event signals.  Asynchronous events that can be created,
    connected to and signalled.  Either own event routines or glued into
    SilcSchedule:
@@ -183,9 +171,12 @@ Runtime library, lib/silcutil/
 
  o silc_stringprep to non-allocating version.
 
- o SilcStack aware SilcHashTable.
+ o silc_hash_table_replace -> silc_hash_table_set.  Retain support for
+   silc_hash_table_replace as macro. (***DONE)
+
+ o SilcStack aware SilcHashTable. (***DONE)
 
- o SilcStack aware SilcDList.
+ o SilcStack aware SilcDList. (***DONE)
 
  o Thread pool API.  Add this to lib/silcutil/silcthread.[ch].         (***DONE)
 
@@ -203,7 +194,7 @@ Runtime library, lib/silcutil/
    accelerators).  Move also the low level silc_stack_malloc and
    silc_stack_realloc from silcstack_i.h to silcstack.h.  Remove the
    _ua unaligned memory allocation routines.  Remove unaligned memory
-   allocation possibility.
+   allocation possibility. (***DONE)
 
  o Add '%@' format to silc_snprintf functions.  It marks for external
    rendering function of following type:
@@ -298,7 +289,13 @@ SKR Library, lib/silcskr/
 Crypto Library, lib/silccrypt/
 ==============================
 
- o SilcStack to APIs.
+ o Add silc_crypto_init and silc_crypto_uninit.  The _init should take
+   SilcStack that will act as global memory pool for all of crypto
+   library.  It should not be necessary anymore to separately register
+   default ciphers, HMACs, etc, the _init would do that.  However, if
+   user after _init calls silc_pkcs_register, for example, it would take
+   preference over the default once, ie. user can always dictate the
+   order of algorithms. (***DONE)
 
  o Add fingerprint to SilcSILCPublicKey and retrieval to silcpk.h, and
    possibly to silcpkcs.h.
@@ -312,62 +309,12 @@ Crypto Library, lib/silccrypt/
 
  o Change SILC PKCS API to asynchronous, so that accelerators can be used.
    All PKCS routines should now take callbacks as argument and they should
-   be delivered to SilcPKCSObject and SilcPKCSAlgorithm too.
-
-   /* Signature computation callback */
-   typedef void (*SilcPKCSSignCb)(SilcBool success,
-                                 const unsigned char *signature,
-                                 SilcUInt32 signature_len,
-                                 void *context);
-
-   /* Signature verification callback */
-   typedef void (*SilcPKCSVerifyCb)(SilcBool success, void *context);
-
-   /* Encryption callback */
-   typedef void (*SilcPKCSEncryptCb)(SilcBool success,
-                                    const unsigned char *encrypted,
-                                    SilcUInt32 encrypted_len,
-                                    void *context);
-
-   /* Decryption callback */
-   typedef void (*SilcPKCSDecryptCb)(SilcBool success,
-                                    const unsigned char *decrypted,
-                                    SilcUInt32 decrypted_len,
-                                    void *context);
-
-   Either add new _async functions or add the callbacks to existing API
-   and if the callback is NULL then the API is not async and if provided
-   it may be async.  For example;
-
-   SilcBool silc_pkcs_sign(SilcPrivateKey private_key,
-                          unsigned char *src, SilcUInt32 src_len,
-                          unsigned char *dst, SilcUInt32 dst_size,
-                          SilcUInt32 *dst_len,
-                          SilcBool compute_hash, SilcHash hash,
-                          SilcPKCSSignCb async_sign,
-                          void *async_sign_context);
-
-   (if this is done then there's no reason why the buffers in the
-    callbacks cannot be the ones user gives here) or allow only async:
-
-   SilcBool silc_pkcs_sign(SilcPrivateKey private_key,
-                          unsigned char *src, SilcUInt32 src_len,
-                          SilcBool compute_hash, SilcHash hash,
-                          SilcPKCSSignCb async_sign,
-                          void *async_sign_context);
-
-   or add new:
-
-   SilcBool silc_pkcs_sign_async(SilcPrivateKey private_key,
-                                unsigned char *src, SilcUInt32 src_len,
-                                SilcBool compute_hash, SilcHash hash,
-                                SilcPKCSSignCb async_sign,
-                                void *async_sign_context);
+   be delivered to SilcPKCSObject and SilcPKCSAlgorithm too. (***DONE)
 
  o Change PKCS Algorithm API to take SilcPKCSAlgorithm as argument to
    encrypt, decrypt, sign and verify functions.  We may need to for exmaple
    check the alg->hash, supported hash functions.  Maybe deliver it also
-   to all other functions in SilcPKCSAlgorithm to be consistent.
+   to all other functions in SilcPKCSAlgorithm to be consistent. (***DONE)
 
  o Add DSS support.  Take implementation from Tom or make it yourself.
 
@@ -518,11 +465,11 @@ lib/silcasn1
 
  o SILC_ASN1_CHOICE should perhaps return an index what choice in the
    choice list was found.  Currently it is left for caller to figure out
-   which choice was found.
+   which choice was found. (***DONE)
 
  o SILC_ASN1_NULL in decoding should return SilcBool whether or not
    the NULL was present.  It's important when it's SILC_ASN1_OPTIONAL
-   and we need to know whether it was present or not.
+   and we need to know whether it was present or not. (***DONE)
 
 
 lib/silcpgp