
* 1.3.8, December 30, 2003
 - Internal changes to PK algorithms to divide data and algorithms
 - DSA/DH/NR/ElGamal constructors accept taking just the private key again
 - ElGamal keys now support being imported/exported as ASN.1 objects
 - Much more consistent and complete error checking in PK algorithms
 - Support for arbitrary backends (engines) for PK operations
 - Added Montgomery reductions
 - Added an engine that uses GNU MP
 - Removed the obsolete mp_gmp module
 - Moved several initialization/shutdown functions to init.h
 - Major refactoring of the memory containers
 - New non-locking container, MemoryVector
 - Fixed 64-bit problems in BigInt::set_bit/clear_bit
 - Renamed PK_Key::check_params() to check_key()
 - Some incompatible changes to OctetString
 - Added version checking macros in version.h
 - Removed the fips140 module pending rewrite
 - Added some functions and hooks to help GUIs
 - Moved more shared code into MDx_HashFunction
 - Added a policy hook for specifying the encoding of X.509 strings

* 1.3.7, December 12, 2003
 - Fixed a big security problem in es_unix
 - Fixed several stability problems in es_unix
 - Expanded the list of programs es_unix will try to use
 - SecureAllocator now only preallocates blocks in special cases
 - Added a special case in Global_RNG::seed for forcing a full poll
 - Removed the FIPS 186 RNG added in 1.3.5 pending further testing
 - Configure updates for PowerPC CPUs
 - Removed the (never tested) VAX support
 - Added support for S/390 Linux

* 1.3.6, December 7, 2003
 - Added a new module 'minimal', which disables most algorithms
 - SecureAllocator allocates a few blocks at startup
 - A few minor MPI cleanups
 - RPM spec file cleanups and fixes

* 1.3.5, November 30, 2003
 - Major improvements in ASN.1 string handling
 - Added partial support for ASN.1 UTF8 STRINGs and BMP STRINGs
 - Added partial support for the X.509v3 certificate policies extension
 - Centralized the handling of character set information
 - Added FIPS 140-2 startup self tests
 - Added a module (fips140) for doing extra FIPS 140-2 tests
 - Added FIPS 186-2 RNG
 - Improved ASN.1 BIT STRING handling
 - Removed a memory leak in PKCS10_Request
 - The encoding of DirectoryString now follows PKIX guidelines
 - Fixed some of the character set dependencies
 - Fixed a DER encoding error for tags greater than 30
 - The BER decoder can now handle tags larger than 30
 - Fixed tm_hard.cpp to recognize SPARC on more systems
 - Workarounds for a GCC 2.95.x bug in x509find.cpp
 - RPM changed to install into /usr instead of /usr/local
 - Added support for QNX

* 1.3.4, November 21, 2003
 - Added a module that does certain MPI operations using GNU MP
 - Added the X9.42 Diffie-Hellman PRF
 - The Zlib and Bzip2 objects now use custom allocators
 - Added member functions for directly hashing/MACing SecureVectors
 - Minor optimizations to the MPI addition and subtraction algortithms
 - Some cleanups in the low-level MPI code
 - Created separate AES-{128,192,256} objects

* 1.3.3, November 17, 2003
 - The library can now be repeatedly initialized and shutdown without crashing
 - Fixed an off-by-one error in the CTS code
 - Fixed an error in the EMSA4 verification code
 - Fixed a memory leak in mutex.cpp (pointed out by James Widener)
 - Fixed a memory leak in Pthread_Mutex
 - Fixed several memory leaks in the testing code
 - Bulletproofed the EMSA/EME/KDF/MGF retrieval functions
 - Minor cleanups in SecureAllocator
 - Removed a needless mutex guarding the (stateless) global timer
 - Fixed a piece of bash-specific code in botan-config
 - X.509 objects report more information about decoding errors
 - Cleaned up some of the exception handling
 - Updated the example config file with new OIDSs
 - Moved the build instructions into a separate document, building.tex

* 1.3.2, November 13, 2003
 - Fixed a bug preventing DSA signatures from verifying on X.509 objects
 - Made the X509_Store search routines more efficient and flexible
 - Added a function to X509_PublicKey to do easy public/private key matching
 - Added support for decoding indefinite length BER data
 - Changed Pipe's peek() to take an offset
 - Removed Filter::set_owns in favor of the new incr_owns function
 - Removed BigInt::zero() and BigInt::one()
 - Renamed the PEM related options from base/pem_* to pem/*
 - Added an option to specify the line width when encoding PEM
 - Removed the "rng/safe_longterm" option; it's always on now
 - Changed the cipher used for RNG superencryption from ARC4 to WiderWake4+1
 - Cleaned up the base64/hex encoders and decoders
 - Added an ASN.1/BER decoder as an example
 - AES had it's internals marked 'public' in previous versions
 - Changed the value of the ASN.1 NO_OBJECT enum
 - Various new hacks in the configure script
 - Removed the already nominal support for SunOS

* 1.3.1, November 4, 2003
 - Generalized a few pieces of the DER encoder
 - PKCS8::load_key would fail if handed an unencrypted key
 - Added a failsafe so PKCS #8 key decoding can't go into an infinite loop

* 1.3.0, November 2, 2003
 - Major redesign of the PKCS #8 private key import/export system
 - Added a small amount of UI interface code for getting passphrases
 - Added heuristics that tell if a key, cert, etc is stored as PEM or BER
 - Removed CS-Cipher, SHARK, ThreeWay, MD5-MAC, and EMAC
 - Removed certain deprecated constructors of RSA, DSA, DH, RW, NR
 - Made PEM decoding more forgiving of extra text before the header
