Here are some notes about various things I should/could/might implement. If
you're interested in working on something here (or something else!), drop me an
email and we can coordinate efforts.

* Algorithms/Related
  - HAS-V, a new (supposedly quite fast) hash function
  - SHA-384 (easy, just modify SHA-512)
  - Panama (partially done)
  - Block ciphers: MARS, Crypton v1.0, Rainbow, SAFER+ (all partially done)
  - Constructions:
      + Parallel Hash Function
      + Cascade Block Cipher
      + Cascade Block Cipher with Stream Cipher [B2(S(B1(x)))]
      + Bear, Lioness (both are slower than Lion, however)
  - PGP CFB block cipher mode
  - Error correcting codes [Hamming, Goppa, Reed-Solomon, or other]
  - Huffman or LZ77 compression

* Infrastructure
  - A module backing the ThreadedFilter
  - Bzip2 and Zlib modules don't clear or lock their memory. This should
    not be particularly hard, but might need a modification of the current
    allocator interface.

* Modules
  - EntropySources
      BeOS: get_next_{team,thread}_info, get_system_info
      Win32: CryptGenRandom and/or Win32 API functions
      VMS: I haven't the slightest idea
      MacOS: No clue here either
      Other: thread-based (?), signal/high-res timer based (?)
  - Compression: Zip, Gzip
  - Dynamic Algorithm Loader (in progress, ~35% done)
  - GSM speech encoding Filter (useful for encrypted voice-over-IP).

* Configure/Build System
  - Need support for NMAKE
  - Support more CPUs, including: UltraSPARC III
  - Support more OSes, including: Hurd, QNX, Plan9, OS/2, VMS, MacOS 8/9
  - Support more compilers, including: Visual C++, Metrowerks, AIX CC,
             HP-UX CC, IBM VisualAge, Apple MPW
  - An opencl-config script, akin to gtk-config and friends
  - Fix the known bugs/deficiencies in the system:
      + Support precision down to the submodel level for system reqs in
        modules; rdtsc doesn't work on an 80486.
      + PowerPC support is poor. ARM isn't too good either (StrongARM alias?)
      + Module autoloading (ie, if you're running Unix, add pipe_unixfd, etc)
      + Should allow and deal with .S/.s/.asm files in modules
      + Sometimes if you change between two modules, both of which modify the
        same file (like gettimeofday => posix_timer), the file doesn't get
        rebuilt.

* New Interfaces
  - Support for SCAN? The API is pretty Java specific, and some of the
     interfaces really assume everything is being done dynamically, whereas
     OpenCL uses templates for a lot of it. But it's an idea, anyway.
       - I'm planning on changing OpenCL in the 0.9.x cycle so that
         a SCAN-like interface will be easy to handle.
  - A class or set of classes for OpenPGP packet parsing.
  - SSL/TLS stuff
  - S/MIME (hey, why not?)

* Misc
  - The whole check program is a mess. Things will get significantly easier
    in the 0.9.x cycle; most of the lookup_xxx code will be replaced by
    stuff directly built into the library.
  - More/better documentation
      + Document user visible modules
      + Man and/or info pages (low priority)
  - More/better example programs
