Here are some notes about various things I should/could/might do. 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
  - 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]
  - Huffman or LZ77 compression

* Major Optimizations
  - BigInt and the related functions could always use more work; there are a
    lot of easy optimizations that haven't been done yet.
  - Assembler implementations of mp_core would be nice, particularly x86,
    SPARC, PowerPC, and Alpha.
  - The ManagedAllocator is slow, slow, slow, and it is hurting overall
    performance.

* 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
  - GSM speech encoding Filter (useful for encrypted voice-over-IP).

* Configure/Build System
  - Support more CPUs, including: UltraSPARC III
  - Support more OSes, including: Hurd, QNX, Plan9, OS/2, VMS, MacOS 8/9
  - Support more compilers, including: AIX CC
  - 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.
      + Should allow and deal with .S/.s/.asm files in modules

* 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 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.
  - More/better documentation
      + Document user visible modules
      + Man and/or info pages (low priority)
  - More/better example programs
