
* 1.0.1, September 8, 2002
 - Fixed a minor bug in Randpool::random()
 - Added some new aliases and typedefs for 1.1.x compatability
 - The 4096-bit RSA benchmark key was decimal instead of hex
 - EMAC was returning an incorrect name

* 1.0.0, August 26, 2002
 - Octal I/O of BigInt is now supported
 - Fixed portability problems in the es_egd module
 - Generalized IV handling in the block cipher modes
 - Added Karatsuba multiplication and k-ary exponentiation
 - Fixed a problem in the multiplication routines

* 0.9.2, August 18, 2002
 - DH_PrivateKey::public_value() was returning the wrong value
 - Various BigInt optimizations
 - The filters.h header now includes hex.h and base64.h
 - Moved Counter mode to ctr.h
 - Fixed a couple minor problems with VC++ 7
 - Fixed problems with the RPM spec file

* 0.9.1, August 10, 2002
 - Grand rename from OpenCL to Botan
 - Major optimizations for the PK algorithms
 - Added ElGamal encryption
 - Added Whirlpool
 - Tweaked memory allocation parameters
 - Improved the method of seeding the global RNG
 - Moved pkcs1.h to eme_pkcs.h
 - Added more test vectors for some algorithms
 - Fixed error reporting in the BigInt tests
 - Removed Default_Timer, it was pointless
 - Added some new example applications
 - Removed some old examples that weren't that interesting
 - Documented the compression modules

* 0.9.0, August 3, 2002
 - EMSA4 supports variable salt size
 - PK_* can take a string naming the encoding method to use
 - Started writing some internals documentation

* 0.8.7, July 30, 2002
 - Fixed bugs in EME1 and EMSA4
 - Fixed a potential crash at shutdown
 - Cipher modes returned an ill-formed name
 - Removed various deprecated types and headers
 - Cleaned up the Pipe interface a bit
 - Minor additions to the documentation
 - First stab at a Visual C++ makefile (doc/Makefile.vc7)

* 0.8.6, July 25, 2002
 - Added EMSA4 (aka PSS)
 - Brought the manual up to date; many corrections and additions
 - Added a parallel hash function construction
 - Lookup supports all available algorithms now
 - Lazy initialization of the lookup tables
 - Made more discrete logarithm groups available through get_dl_group()
 - StreamCipher_Filter supports seeking (if the underlying cipher does)
 - Minor optimization for GCD calculations
 - Renamed SAFER_SK128 to SAFER_SK
 - Removed many previously deprecated functions
 - Some now-obsolete functions, headers, and types have been deprecated
 - Fixed some bugs in DSA prime generation
 - DL_Group had a constructor for DSA-style prime gen but it wasn't defined
 - Reversed the ordering of the two arguments to SEAL's constructor
 - Fixed a threading problem in the PK algorithms
 - Fixed a minor memory leak in lookup.cpp
 - Fixed pk_types.h (it was broken in 0.8.5)
 - Made validation tests more verbose
 - Updated the check and example applications

* 0.8.5, July 21, 2002
 - Major changes to constructors for DL-based cryptosystems (DSA, NR, DH)
 - Added a DL_Group class
 - Reworking of the pubkey internals
 - Support in lookup for aliases and PK algorithms
 - Renamed CAST5 to CAST_128 and CAST256 to CAST_256
 - Added EMSA1
 - Reorganization of header files
 - LibraryInitializer will install new allocator types if requested
 - Fixed a bug in Diffie-Hellman key generation
 - Did a workaround in pipe.cpp for GCC 2.95.x on Linux
 - Removed some debugging code from init.cpp that made FTW ES useless
 - Better checking for invalid arguments in the PK algorithms
 - Reduced Base64 and Hex default line length (if line breaking is used)
 - Fixes for HP's aCC compiler
 - Cleanups in BigInt

* 0.8.4, July 14, 2002
 - Added Nyberg-Rueppel signatures
 - Added Diffie-Hellman key exchange (kex interface is subject to change)
 - Added KDF2
 - Enhancements to the lookup API
 - Many things formerly taking pointers to algorithms now take names
 - Speedups for prime generation
 - LibraryInitializer has support for seeding the global RNG
 - Reduced SAFER-SK128 memory consumption
 - Reversed the ordering of public and private key values in DSA constructor
 - Fixed serious bugs in MemoryMapping_Allocator
 - Fixed memory leak in Lion
 - FTW_EntropySource was not closing the files it read
 - Fixed line breaking problem in Hex_Encoder

* 0.8.3, June 9, 2002
 - Added DSA and Rabin-Williams signature schemes
 - Added EMSA3
 - Added PKCS#1 v1.5 encryption padding
 - Added Filters for PK algorithms
 - Added a Keyed_Filter class
 - LibraryInitializer processes arguments now
 - Major revamp of the PK interface classes
 - Changed almost all of the Filters for non-template operation
 - Changed HMAC, Lion, Luby-Rackoff to non-template classes
 - Some fairly minor BigInt optimizations
 - Added simple benchmarking for PK algorithms
 - Added hooks for fixed base and fixed exponent modular exponentiation
 - Added some examples for using RSA
 - Numerous bugfixes and cleanups
 - Documentation updates

* 0.8.2, May 18, 2002
 - Added an (experimental) algorithm lookup interface
 - Added code for directly testing BigInt
 - Added SHA2-384
 - Optimized SHA2-512
 - Major optimization for Adler32 (thanks to Dan Nicolaescu)
 - Various minor optimizations in BigInt and related areas
 - Fixed two bugs in X9.19 MAC, both reported by Darren Starsmore
 - Fixed a bug in BufferingFilter
 - Made a few fixes for MacOS X
 - Added a workaround in configure.pl for GCC 2.95.x
 - Better support for PowerPC, ARM, and Alpha
 - Some more cleanups

* 0.8.1, May 6, 2002
 - Major code cleanup (check doc/deprecated.txt)
 - Various bugs fixed, including several portability problems
 - Renamed MessageAuthCode to MessageAuthenticationCode
 - A replacement for X917 is in x917_rng.h
 - Changed EMAC to non-template class
 - Added ANSI X9.19 compatible CBC-MAC
 - TripleDES now supports 128 bit keys

* 0.8.0, April 24, 2002
 - Merged BigInt: many bugfixes and optimizations since alpha2
 - Added RSA (rsa.h)
 - Added EMSA2 (emsa2.h)
 - Lots of new interface code for public key algorithms (pk_base.h, pubkey.h)
 - Changed some interfaces, including SymmetricKey, to support the global rng
 - Fixed a serious bug in ManagedAllocator
 - Renamed RIPEMD128 to RIPEMD_128 and RIPEMD160 to RIPEMD_160
 - Removed some deprecated stuff
 - Added a global random number generator (rng.h)
 - Added clone functions to most of the basic algorithms
 - Added a library initializer class (init.h)
 - Version macros in version.h
 - Moved the base classes from opencl.h to base.h
 - Renamed the bzip2 module to comp_bzip2 and zlib to comp_zlib
 - Documentation updates for the new stuff (still incomplete)
 - Many new deprecated things: check doc/deprecated.txt

* 0.7.10, April 7, 2002
 - Added EGD_EntropySource module (es_egd)
 - Added a file tree walking EntropySource (es_ftw)
 - Added MemoryLocking_Allocator module (alloc_mlock)
 - Renamed some modules:
      pthr_mux -> mutex_pthread
      unix_rnd -> es_unix
      mmap_mem -> alloc_mmap
 - Changed timer mechanism; the clock method can be switched on the fly. New
   modules timer_unix, timer_posix, and timer_hw_ia32 replace the old timer
   modules (which are no longer around).
 - Renamed MmapDisk_Allocator to MemoryMapping_Allocator
 - Renamed ent_file.h to es_file.h (ent_file.h is around, but deprecated)
 - Fixed several bugs in MemoryMapping_Allocator
 - Added more default sources for Unix_EntropySource
 - Changed SecureBuffer to use same allocation methods as SecureVector
 - Added bigint_divcore into mp_core to support BigInt alpha2 release
 - Removed some Pipe functions deprecated since 0.7.8
 - Some fixes for the configure program

* 0.7.9, March 19, 2002
 - Memory allocation substantially revamped
 - Added memory allocation method based on mmap(2) in the mmap_mem module
 - Added ECB and CTS block cipher modes (ecb.h, cts.h)
 - Added a Mutex interface (mutex.h)
 - Added module pthr_mux, implementing the Mutex interface
 - Added Threaded Filter interface (thr_filt.h)
 - All algorithms can now by keyed with SymmetricKey objects
 - More testing occurs with --validate (expected failures)
 - Fixed two bugs reported by Hany Greiss, in Luby-Rackoff and RC6
 - Fixed a buffering bug in Bzip_Decompress and Zlib_Decompress
 - Made X917 safer (and about 1/3 as fast)
 - Documentation updates

* 0.7.8, February 28, 2002
 - More capabilities for Pipe, inspired by SysV STREAMS, including peeking,
   better buffering, and stack ops. NOT BACKWARDS COMPATIBLE: SEE DOCUMENTATION
 - Added a BufferingFilter class
 - Added popen() based EntropySource for generic Unix systems (unix_rnd)
 - Moved "devrand" module into main distribution (ent_file.h), renamed to
   File_EntropySource, and changed interface somewhat.
 - Made Randpool somewhat more conservative and also 25% faster
 - Minor fixes and updates for the configure script
 - Added some tweaks for memory allocation
 - Documentation updates for the new Pipe interface
 - Fixed various minor bugs
 - Added a couple of new example programs (stack and hasher2)

* 0.7.7, November 24, 2001
 - Filter::send now works in the constructor of a Filter subclass
 - You may now have to include <opencl/pipe.h> explicitly in some code
 - Added preliminary PK infrastructure classes in pubkey.h and pkbase.h
 - Enhancements to SecureVector (append, destroy functions)
 - New infrastructure for secure memory allocation
 - Added IEEE P1363 primitives MGF1, EME1, KDF1
 - Rijndael optimizations and cleanups
 - Changed CipherMode<B> to BlockCipherMode(B*)
 - Fixed a nasty bug in pipe_unixfd
 - Added portions of the BigInt code into the main library
 - Support for VAX, SH, POWER, PowerPC-64, Intel C++

* 0.7.6, October 14, 2001
 - Fixed several serious bugs in SecureVector created in 0.7.5
 - Square optimizations
 - Fixed shared objects on MacOS X and HP-UX
 - Fixed static libs for KCC 4.0; works with KCC 3.4g as well
 - Full support for Athlon and K6 processors using GCC
 - Added a table of prime numbers < 2**16 (primes.h)
 - Some minor documentation updates

* 0.7.5, August 19, 2001
 - Split checksum.h into adler32.h, crc24.h, and crc32.h
 - Split modes.h into cbc.h, cfb.h, and ofb.h
 - CBC_wPadding* has been replaced by CBC_Encryption and CBC_Decryption
 - Added OneAndZeros and NoPadding methods for CBC (in addition to the PKCS
     #7 padding method which was used previously by CBC)
 - Added Lion, a very fast block cipher construction
 - Added an S2K base class (s2k.h) and an OpenPGP_S2K class (pgp_s2k.h)
 - Basic types (ciphers, hashes, etc) know their names now (call name())
 - Changed the EntropySource type somewhat
 - Big speed-ups for ISAAC, Adler32, CRC24, and CRC32
 - Optimizations of various quality for CAST256, DES, Serpent, SAFER-SK128,
     SEAL, MD2, RIPEMD-128, and RIPEMD-160 (some actually have been made
     (slightly) worse on x86 in return for better RISC performance)
 - Some semantics of SecureVector have changed slightly
 - The mlock module has been removed for the time being
 - Added string handling functions for hashes and MACs
 - Various non-user-visible cleanups
 - Since things are changing a lot between releases, the shared library
     soname is now set to the full version number

* 0.7.4, July 15, 2001
 - New modules: Zlib, gettimeofday and x86 RTC timers, Unix I/O for Pipe
 - Fixed a vast number of errors in the config script/makefile/specfile
 - Pipe now has a stdio(3) interface as well as C++ iostreams
 - ARC4 supports skipping the first N bytes of the cipher stream (ala MARK4)
 - Bzip2 supports decompressing multiple concatenated streams, and flushing
 - Added a simple 'overall average' score to the benchmarks
 - Fixed a small bug in the POSIX timer module
 - Removed a very-unlikely-to-occur bug in most of the hash functions
 - filtbase.h now includes <iosfwd>, not <iostream>
 - Minor documentation updates

* 0.7.3, June 8, 2001
 - Fix build problems on Solaris/SPARC
 - Fix build problems with Perl versions < 5.6
 - Fixed some stupid code that broke on a few compilers
 - Added string handling functions to Pipe
 - MISTY1 optimizations

* 0.7.2, June 3, 2001
 - Build system supports modules
 - Added modules for mlock, a /dev/random EntropySource, POSIX1.b timers,
     and bzip2 (bzip2 contributed by Peter Jones)
 - GNU make no longer required (tested with 4.4BSD pmake and Solaris make)
 - Fixed minor bug in several of the hash functions
 - Various other minor fixes and changes
 - Updates to the documentation

* 0.7.1, May 16, 2001
 - Rewrote configure script: more consistent and complete
 - Made it easier to find out parameters of types at run time (opencl.h)
 - New functions for finding the version being used (version.h)
 - New SymmetricKey interface for Filters (symkey.h)
 - InvalidKeyLength now records what the invalid key length was
 - Optimized DES, CS-Cipher, MISTY1, Skipjack, XTEA
 - Changed GOST to use correct S-box ordering (incompatible change)
 - Benchmark code was almost totally rewritten
 - Many more entries in the test vector file
 - Fixed minor and idiotic bug in check.cpp

* 0.7.0, March 1, 2001
 - First public release
