*** empty log message ***
[gnutls.git] / doc / TODO
blob55b6ebc7f592765015218657dc629564af5a3b8b
1 If you want to contribute (implement something from the current list, or
2 anything), contact the developer's mailing list (gnutls-dev@lists.gnupg.org),
3 in order to avoid having people working on the same thing. 
5 Current list:
6 + Support PKCS#8 AES and DES-MD5 (tests/enc3pkcs8.pem) encrypted keys.
7 * Cleanup pkix.asn and remove unused (by the certificate api) structures.
8   That way memory used will be reduced.
9 * Improve or rewrite libtasn1 to make it easier to maintain.
10 * Make and use by gnutls a flexible interface for algorithms such
11   as public key, symmetric, PRNGs to allow for plugins that use other
12   libraries than libgcrypt or even hardware drivers. Flexible means
13   that it should allow replacing of some components without harming the
14   others (i.e. now with libgcrypt there is no way to replace the prng component
15   with something else since libgcrypt uses it internally.)
16 * Allow adding multiple subject alternative names (certtool + x509 library).
17 * Verify added CRLs (is it really needed?)
18 * Add support for generating empty CRLs
19 * Document the format for the supported DN attributes.
20 * Audit the code
21 - Support OpenSSL encrypted PKCS#1 RSA keys, for compatibility (new
22   applications should use PKCS#8 instead).
23 - Allow verifying of certificates on their reception.
24 - Add gnutls_certificate_set_openpgp_keyring()
25   function, similar to gnutls_certificate_set_openpgp_key().
26 - Use subkeys with the 0x20 flag in openpgp keys (if present),
27   instead of the main key.
28 - Add function to extract the signers of an openpgp key. Should
29   be similar to gnutls_x509_crt_get_dn_oid().
30 - Add function to verify an openpgp key against a plain key.
31 - Clean up name space of helper functions in library (memmem,
32    firstElement, bit_mask, ...) for platforms that libtool's
33    -export-symbols-regex doesn't work.
34 - Allow sending V2 Hello messages. It seems that some (old) broken 
35   implementations require that.
36 - Add Kerberos ciphersuites
37 - Certificate chain validation improvements:
38   - Implement "correct" DN comparison (instead of memcmp).
39   - Support critical key usage KeyCertSign and cRLSign.
40   - Support path length constraints.
41 - RFC 3280 compliant certificate path validation.
42 - Add progress handler gnutls_{dh,rsa}_params_generate2, to allow
43   application to give progress feedback to user.
44 - Support non-blocking gnutls_{dh,rsa}_params_generate2 for when there
45   is not enough entropy available. 
46 - Implement Datagram-TLS (DTLS).
47 - Chain verifications.
48   - Short-cut the certificate verification algorithm before the
49     root if a middle-CA is trusted.
50   - Check path length constraints.
51   - Check keyCertSign key usages.
52 - Update libgnutls-extra.m4 to use modern autoconf constructs.
53 - Support for hardware SSL accelerators
54 - Exhaustive test suite, using NIST's PKI Test vectors,
55   see http://csrc.nist.gov/pki/testing/x509paths_old.html
56   and http://csrc.nist.gov/pki/testing/x509paths.html
57 - Clean up certtool.  Perhaps separate the different functions into
58   separate tools.  Probably a rewrite is necessary.
59 - Enable certtool's template files to allow arbitrary
60   OIDs to be specified for x509v3's extended key usage attribute.
61 - Make it possible to extract the internal state of a session, to
62   be able to execve a new process that take over the current
63   living socket (using the fcntl close-on-exec flag) and
64   continue the TLS session as well.
65 - Implement draft-salowey-tls-ticket-05, useful for (e.g.) EAP-FAST.
66 - Reduce memory footprint
67   - Inside gnutls_global_init, the library allocates about 64 kb of
68     memory in almost 4000 calls to malloc. On my desktop, there are 22
69     processes using gnutls, meaning about 1.2 MB of memory usage from
70     this alone.
71   - Furthermore, gnutls has 24 kb of relocations in the shared
72     library. You can see this on a 2.6.16 kernel by reading
73     /proc/PID/smaps and looking for:
75     b71a5000-b71ab000 rw-p 00062000 03:01 3131118
76       /usr/lib/libgnutls.so.12.3.6
77     Size:                24 kB
78     Rss:                 24 kB
79     Shared_Clean:         0 kB
80     Shared_Dirty:         0 kB
81     Private_Clean:        0 kB
82     Private_Dirty:       24 kB
84     This means another 24 kb used by each process that makes use of
85     libgnutls.
86 - Make gnutls-cli-debug exit with better error messages if the
87   handshake fails, rather than saying that the server doesn't support
88   TLS.
90 (+) Means high priority 
91 (*) Means medium priority
92 (-) Means low priority (ie. nobody is interested to develop that)