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.
  - Block ciphers: MARS, Crypton v1.0, Rainbow, SAFER+ (all partially done)
  - Constructions:
      + Cascade Block Cipher
      + Cascade Block Cipher with Stream Cipher [B2(S(B1(x)))]
      + Davies-Meyer and/or variants
  - PGP CFB block cipher mode
  - New PK algorithms? (ECC is underway)

* Major Optimizations
  - BigInt and the related functions could always use more work; there are a
    lot of (fairly) easy optimizations that haven't been done yet, including:
      - Addition chains in FixedExponent_Exp
      - Asymmetric Karatsuba multiplication
      - Montgomery multiplications, reductions, exponentiation
  - Assembler implementations of the low level MPI functions (mp_core2.cpp,
    mp_core3.cpp, mp_misc.cpp, mp_shift.cpp). Particularly x86, SPARC, PowerPC,
    and Alpha.

* New Interfaces
  - Support for ASN.1/DER/BER/etc
  - X.509 cert handling
  - Stuff for helping with PGP, SSL, S/MIME, PEM, SSH

* 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 9: No clue
      Other: thread-based (?), signal/high-res timer based (?)
  - Compression: Zip, Gzip
  - Dynamic Algorithm Loader
  - GSM speech encoding Filter (useful for encrypted voice-over-IP)
  - Module for the SPARCv9 RDTICK
  - Module for reading the Linux /dev/rtc device
  - Bzip2 and Zlib modules don't clear or lock their memory. This should
    be pretty easy to fix.

* Configure / Build System
  - Support for: Hurd, QNX, Plan 9, OS/2, VMS, MacOS 8/9
  - A botan-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, and we'll take a SIGILL
      + Should allow and deal with .S/.s/.asm files in modules
