diff options
Diffstat (limited to 'doc/log.txt')
-rw-r--r-- | doc/log.txt | 3425 |
1 files changed, 1882 insertions, 1543 deletions
diff --git a/doc/log.txt b/doc/log.txt index 8ceb13a60..d4dd96430 100644 --- a/doc/log.txt +++ b/doc/log.txt @@ -1,1545 +1,1884 @@ -* 1.9.16-dev, ????-??-?? - - Second release candidate for 1.10.0 - - Disable the by-default 'strong' checking of private keys that are - loaded from storage. You can always request key material sanity - checking using check_key. - - Bring back removed functions min_keylength_of, max_keylength_of, - keylength_multiple_of in lookup.h to avoid breaking applications. - -* 1.9.15, 2011-03-21 - - First release candidate for 1.10.0 - - Modify how message expansion is done in SHA-256 and SHA-512. - Instead of expanding the entire message at the start, compute them - in the minimum number of registers. Values are computed 15 rounds - before they are needed. On a Core i7-860, GCC 4.5.2, went from - 143 to 157 MiB/s in SHA-256, and 211 to 256 MiB/s in SHA-512. - - Pipe will delete empty output queues as soon as they are no longer - needed, even if earlier messages still have data unread. However an - (empty) entry in a deque of pointers will remain until all prior - messages are completely emptied. - - Avoid reading the SPARC %tick register on OpenBSD as unlike Linux - the kernel will not trap and emulate it for us, causing a illegal - instruction crash. - - Improve detection and autoconfiguration for ARM processors. - -* 1.9.14, 2011-03-01 - - Add support for bcrypt, OpenBSD's password hashing scheme - - Add support for NIST's AES key wrapping algorithm - - Fix an infinite loop in zlib filters introduced in 1.9.11 (PR 142) - -* 1.9.13, 2011-02-19 - - Update Keccak to the round 3 variant - - Fix ordering in GOST 34.10 signatures to match DNSSEC specifications - - Use size_t instead of u32bit for small integers in DER/BER codecs - - Add new build option --distribution-info - - Fix problems in the amalgamation build - - Fix building under Clang 2.9 and Sun Studio 12 - -* 1.9.12, 2010-12-13 - - Add the Keccak hash function - - Fix compilation problems in Python wrappers - - Fix compilation problem in OpenSSL engine - - Update SQLite3 database encryption codec - -* 1.9.11, 2010-11-29 - - Many SSL/TLS APIs have changed. This API is still unstable. - - The SSL interface requires TR1 (uses std::tr1::function) - - Fix SSL handshake failures when using RC4 ciphersuites - - Fix a number of CRL encoding and decoding bugs - - Counter mode now always encrypts 256 blocks in parallel - - Code where u32bit was used to represent a length now uses size_t - - Use small tables in the first round of AES - - Removed AES class: app must choose AES-128, AES-192, or AES-256 - - Add hex encoding/decoding functions that can be used without a Pipe - - Add base64 encoding functions that can be used without a Pipe - - Add to_string function to X509_Certificate - - Add support for dynamic engine loading on Windows - - Replace BlockCipher::BLOCK_SIZE attribute with function block_size() - - Replace HashFunction::HASH_BLOCK_SIZE attribute with hash_block_size() - - Changed semantics of MemoryRegion::resize and clear to match STL - - Removed MemoryRegion::append, replaced by push_back and operator+= - - Move PBKDF lookup to engine system - - The IDEA key schedule has been changed to run in constant time - - Avoid a possible timing vulnerability in Montgomery reduction - - Add Algorithm and Key_Length_Specification classes - - Switch default PKCS #8 encryption algorithm from AES-128 to AES-256 - - Update Skein-512 to match the v1.3 specification - - Allow using PBKDF2 with empty passphrases - - Add compile-time deprecation warnings for GCC, Clang, and MSVC - - Support use of HMAC(SHA-256) and CMAC(Blowfish) in passhash9 - - Improve support for Intel Atom processors - - Fix compilation problems under Sun Studio and Clang - -* 1.8.11, 2010-11-02 - - Fix a number of CRL encoding and decoding bugs - - When building a debug library under VC++, use the debug runtime - - Fix compilation under Sun Studio on Linux and Solaris - - Add several functions for compatability with 1.9 - - In the examples, read most input files as binary - - The Perl build script has been removed in this release - -* 1.8.10, 2010-08-31 - - Switch default PKCS #8 encryption algorithm from 3DES to AES-256 - - Increase default hash iterations from 2048 to 10000 in PBES1 and PBES2 - - Use small tables in the first round of AES - - Add PBKDF typedef and get_pbkdf for better compatability with 1.9 - - Add version of S2K::derive_key taking salt and iteration count - - Enable the /proc-walking entropy source on NetBSD - - Fix the doxygen makefile target - -* 1.9.10, 2010-08-12 - - Add a constant time AES implementation using SSSE3 - - Add support for loading new Engines at runtime - - Use GCC byteswap intrinsics where possible - - Drop support for building with Python 2.4 - - Fix benchmarking of block ciphers in ECB mode - - Consolidate the two x86 assembly engines - - Rename S2K to PBKDF - -* 1.9.9, 2010-06-28 - - Add new X509::BER_encode and PKCS8::BER_encode - - Give all Filter objects a name() function - - Add Keyed_Filter::valid_iv_length - - Increase default iteration counts for private key encryption - - Fix compilation of mp_asm64 on 64-bit MIPS with GCC 4.4 and later - - Fix compilation under Apple's GCC 4.2 - - Expand and update the Doxygen documentation - -* 1.8.9, 2010-06-16 - - Use constant time multiplication in IDEA - - Avoid possible timing attack against OAEP decoding - - Add new X509::BER_encode and PKCS8::BER_encode - - Enable DLL builds under Windows - - Add Win32 installer support - - Add support for the Clang compiler - - Fix problem in semcem.h preventing build under Clang or GCC 3.4 - - Fix bug that prevented creation of DSA groups under 1024 bits - - Fix crash in GMP_Engine if library is shutdown and reinitialized - - Work around problem with recent binutils in x86-64 SHA-1 - - The Perl build script is no longer supported and refuses to run by default - -* 1.9.8, 2010-06-14 - - Add support for wide multiplications on 64-bit Windows - - Use constant time multiplication in IDEA - - Avoid possible timing attack against OAEP decoding - - Removed FORK-256; rarely used and it has been broken - - Rename --use-boost-python to --with-boost-python - - Skip building shared libraries on MinGW/Cygwin - - Fix creation of 512 and 768 bit DL groups using the DSA kosherizer - - Fix compilation on GCC versions before 4.3 (missing cpuid.h) - - Fix compilation under the Clang compiler - -* 1.9.7, 2010-04-27 - - TLS: Support reading SSLv2 client hellos - - TLS: Add support for SEED ciphersuites (RFC 4162) - - Add Comb4P hash combiner function - - Fix checking of EMSA_Raw signatures with leading 0 bytes - -* 1.9.6, 2010-04-09 - - TLS: Add support for TLS v1.1 - - TLS: Support server name indicator extension - - TLS: Fix server handshake - - TLS: Fix server using DSA certificates - - TLS: Avoid timing channel between CBC padding check and MAC verification - -* 1.9.5, 2010-03-29 - - Numerous ECC optimizations - - Fix GOST 34.10-2001 X.509 key loading - - Allow PK_Signer's fault protection checks to be toggled off - - Avoid using pool-based locking allocator if we can't mlock - - Remove all runtime options - - New BER_Decoder::{decode_and_check, decode_octet_string_bigint} - - Remove SecureBuffer in favor of SecureVector length parameter - - HMAC_RNG: Perform a poll along with user-supplied entropy - - Fix crash in MemoryRegion if Allocator::get failed - - Fix small compilation problem on FreeBSD - -* 1.9.4, 2010-03-09 - - Add the Ajisai SSLv3/TLSv1.0 implementation - - Add GOST 34.10-2001 public key signature scheme - - Add SIMD implementation of Noekeon - - Add SSE2 implementation of IDEA - - Extend Salsa20 to support longer IVs (XSalsa20) - - Perform XTS encryption and decryption in parallel where possible - - Perform CBC decryption in parallel where possible - - Add SQLite3 db encryption codec, contributed by Olivier de Gaalon - - Add a block cipher cascade construction - - Add support for password hashing for authentication (passhash9.h) - - Add support for Win32 high resolution system timers - - Major refactoring and API changes in the public key code - - Use consistency checking (anti-fault attack) for all signature schemes - - Changed S2K interface: derive_key now takes salt, iteration count - - Remove dependency on TR1 for ECC and CVC code - - Renamed ECKAEG to its more usual name, ECDH - - Fix crash in GMP_Engine if library is shutdown and reinitialized - - Fix an invalid memory read in MD4 - - Fix Visual C++ static builds - - Remove Timer class entirely - - Switch default PKCS #8 encryption algorithm from 3DES to AES-128 - - New option --gen-amalgamation for creating a SQLite-style amalgamation - - Many headers are now explicitly internal-use-only and are not installed - - Greatly improve the Win32 installer - - Several fixes for Visual C++ debug builds - -* 1.9.3, 2009-11-19 - - Add new AES implementation using Intel's AES instruction intrinsics - - Add an implementation of format preserving encryption - - Allow use of any hash function in X.509 certificate creation - - Optimizations for MARS, Skipjack, and AES - - Set macros for available SIMD instructions in build.h - - Add support for using InnoSetup to package Windows builds - - By default build a DLL on Windows - -* 1.9.2, 2009-11-03 - - Add SIMD version of XTEA - - Support both SSE2 and AltiVec SIMD for Serpent and XTEA - - Optimizations for SHA-1 and SHA-2 - - Add AltiVec runtime detection - - Fix x86 CPU identification with Intel C++ and Visual C++ - -* 1.8.8, 2009-11-03 - - Alter Skein-512 to match the tweaked 1.2 specification - - Fix use of inline asm for access to x86 bswap function - - Allow building the library without AES enabled - - Add 'powerpc64' alias to ppc64 arch for Gentoo ebuild - -* 1.9.1, 2009-10-23 - - Better support for Python and Perl wrappers - - Add an implementation of Blue Midnight Wish (Round 2 tweak version) - - Modify Skein-512 to match the tweaked 1.2 specification - - Add threshold secret sharing (draft-mcgrew-tss-02) - - Add runtime cpu feature detection for x86/x86-64 - - Add code for general runtime self testing for hashes, MACs, and ciphers - - Optimize XTEA; twice as fast as before on Core2 and Opteron - - Convert CTR_BE and OFB from filters to stream ciphers - - New parsing code for SCAN algorithm names - - Enable SSE2 optimizations under Visual C++ - - Remove all use of C++ exception specifications - - Add support for GNU/Hurd and Clang/LLVM - -* 1.9.0, 2009-09-09 - - Add support for parallel invocation of block ciphers where possible - - Add SSE2 implementation of Serpent - - Add Rivest's package transform (an all or nothing transform) - - Minor speedups to the Turing key schedule - - Fix processing multiple messages in XTS mode - - Add --no-autoload option to configure.py, for minimized builds - - The previously used configure.pl script is no longer supported - -* 1.8.7, 2009-09-09 - - Fix processing multiple messages in XTS mode - - Add --no-autoload option to configure.py, for minimized builds - -* 1.8.6, 2009-08-13 - - Add Cryptobox, a set of simple password-based encryption routines - - Only read world-readable files when walking /proc for entropy - - Fix building with TR1 disabled - - Fix x86 bswap support for Visual C++ - - Fixes for compilation under Sun C++ - - Add support for Dragonfly BSD (contributed by Patrick Georgi) - - Add support for the Open64 C++ compiler - - Build fixes for MIPS systems running Linux - - Minor changes to license, now equivalent to the FreeBSD/NetBSD license - -* 1.8.5, 2009-07-23 - - Change configure.py to work on stock Python 2.4 - - Avoid a crash in Skein_512::add_data processing a zero-length input - - Small build fixes for SPARC, ARM, and HP-PA processors - - The test suite now returns an error code from main() if any tests failed - -* 1.8.4, 2009-07-12 - - Fix a bug in nonce generation in the Miller-Rabin test - -* 1.8.3, 2009-07-11 - - Add a new Python configuration script - - Add the Skein-512 SHA-3 candidate hash function - - Add the XTS block cipher mode from IEEE P1619 - - Fix random_prime when generating a prime of less than 7 bits - - Improve handling of low-entropy situations during PRNG seeding - - Change random device polling to prefer /dev/urandom over /dev/random - - Use an input insensitive implementation of same_mem instead of memcmp - - Correct DataSource::discard_next to return the number of discarded bytes - - Provide a default value for AutoSeeded_RNG::reseed - - Fix Gentoo bug 272242 - -* 1.8.2, 2009-04-07 - - Make entropy polling more flexible and in most cases faster - - GOST 28147 now supports multiple sbox parameters - - Added the GOST 34.11 hash function - - Fix botan-config problems on MacOS X - -* 1.8.1, 2009-01-20 - - Avoid a valgrind warning in es_unix.cpp on 32-bit Linux - - Fix memory leak in PKCS8 load_key and encrypt_key - - Relicense api.tex from CC-By-SA 2.5 to BSD - - Fix botan-config on MacOS X, Solaris - -* 1.8.0, 2008-12-08 - - Fix compilation on Solaris with GCC - -* 1.7.24, 2008-12-01 - - Fix a compatibility problem with SHA-512/EMSA3 signature padding - - Fix bug preventing EGD/PRNGD entropy poller from working - - Fix integer overflow in Pooling_Allocator::get_more_core (bug id #27) - - Add EMSA3_Raw, a variant of EMSA3 called CKM_RSA_PKCS in PKCS #11 - - Add support for SHA-224 in EMSA2 and EMSA3 PK signature padding schemes - - Add many more test vectors for RSA with EMSA2, EMSA3, and EMSA4 - - Wrap private structs in SSE2 SHA-1 code in anonymous namespace - - Change configure.pl's CPU autodetection output to be more consistent - - Disable using OpenSSL's AES due to crashes of unknown cause - - Fix warning in /proc walking entropy poller - - Fix compilation with IBM XLC for Cell 0.9-200709 - -* 1.7.23, 2008-11-23 - - Change to use TR1 (thus enabling ECDSA) with GCC and ICC - - Optimize almost all hash functions, especially MD4 and Tiger - - Add configure.pl options --{with,without}-{bzip2,zlib,openssl,gnump} - - Change Timer to be pure virtual, and add ANSI_Clock_Timer - - Cache socket descriptors in the EGD entropy source - - Avoid bogging down startup in /proc walking entropy source - - Remove Buffered_EntropySource helper class - - Add a Default_Benchmark_Timer typedef in benchmark.h - - Add examples using benchmark.h and Algorithm_Factory - - Add ECC tests from InSiTo - - Minor documentation updates - -* 1.7.22, 2008-11-17 - - Add provider preferences to Algorithm_Factory - - Fix memory leaks in PBE_PKCS5v20 and get_pbe introduced in 1.7.21 - - Optimize AES encryption and decryption (about 10% faster) - - Enable SSE2 optimized SHA-1 implementation on Intel Prescott CPUs - - Fix nanoseconds overflow in benchmark code - - Remove Engine::add_engine - -* 1.7.21, 2008-11-11 - - Make algorithm lookup much more configuable - - Add facilities for runtime performance testing of algorithms - - Drop use of entropy estimation in the PRNGs - - Increase intervals between HMAC_RNG automatic reseeding - - Drop InitializerOptions class, all options but thread safety - -* 1.7.20, 2008-11-09 - - Namespace pkg-config file by major and minor versions - - Cache device descriptors in Device_EntropySource - - Split base.h into {block_cipher,stream_cipher,mac,hash}.h - - Removed get_mgf function from lookup.h - -* 1.7.19, 2008-11-06 - - Add HMAC_RNG, based on a design by Hugo Krawczyk - - Optimized the Turing stream cipher (about 20% faster on x86-64) - - Modify Randpool's reseeding algorithm to poll more sources - - Add a new AutoSeeded_RNG in auto_rng.h - - OpenPGP_S2K changed to take hash object instead of name - - Add automatic identification for Intel's Prescott processors - -* 1.7.18, 2008-10-22 - - Add Doxygen comments from InSiTo - - Add ECDSA and ECKAEG benchmarks - - Add configure.pl switch --with-tr1-implementation - - Fix configure.pl's --with-endian and --with-unaligned-mem options - - Added support for pkg-config - - Optimize byteswap with x86 inline asm for Visual C++ by Yves Jerschow - - Use const references to avoid copying overhead in CurveGFp, GFpModulus - -* 1.7.17, 2008-10-12 - - Add missing ECDSA object identifiers - - Fix error in x86 and x86-64 assembler affecting GF(p) math - - Remove Boost dependency from GF(p) math - - Modify botan-config to not print -L/usr/lib or -L/usr/local/lib - - Add BOTAN_DLL macro to over 30 classes missing it - - Rename the two SHA-2 base classes for consistency - -* 1.7.16, 2008-10-09 - - Add several missing pieces needed for ECDSA and ECKAEG - - Add Card Verifiable Certificates from InSiTo - - Add SHA-224 from InSiTo - - Add BSI variant of EMSA1 from InSiTo - - Add GF(p) and ECDSA tests from InSiTo - - Split ECDSA and ECKAEG into distinct modules - - Allow OpenSSL and GNU MP engines to be built with public key algos disabled - - Rename sha256.h to sha2_32.h and sha_64.h to sha2_64.h - -* 1.7.15, 2008-10-07 - - Add GF(p) arithmetic from InSiTo - - Add ECDSA and ECKAEG implementations from InSiTo - - Minimize internal dependencies, allowing for smaller build configurations - - Add new User Manual and Architecture Guide from FlexSecure GmbH - - Alter configure.pl options for better autotools compatibility - - Update build instructions for recent changes to configure.pl - - Fix CPU detection using /proc/cpuinfo - -* 1.7.14, 2008-09-30 - - Split library into parts allowing modular builds - - Add (very preliminary) CMS support to the main library - - Some constructors now require object pointers instead of names - - Support multiple implementations of the same algorithm - - Build support for Pentium-M processors, from Derek Scherger - - Build support for MinGW/MSYS, from Zbigniew Zagorski - - Use inline assembly for bswap on 32-bit x86 - -* 1.7.13, 2008-09-27 - - Add SSLv3 MAC, SSLv3 PRF, and TLS v1.0 PRF from Ajisai - - Allow all examples to compile even if compression not enabled - - Make CMAC's polynomial doubling operation a public class method - - Use the -m64 flag when compiling with Sun Forte on x86-64 - - Clean up and slightly optimize CMAC::final_result - -* 1.7.12, 2008-09-18 - - Add x86 assembly for Visual Studio C++, by Luca Piccarreta - - Add a Perl XS module, by Vaclav Ovsik - - Add SWIG-based wrapper for Botan - - Add SSE2 implementation of SHA-1, by Dean Gaudet - - Remove the BigInt::sig_words cache due to bugs - - Combined the 4 Blowfish sboxes, suggested by Yves Jerschow - - Changed BigInt::grow_by and BigInt::grow_to to be non-const - - Add private assignment operators to classes that don't support assignment - - Benchmark RSA encryption and signatures - - Added test programs for random_prime and ressol - - Add high resolution timers for IA-64, HP-PA, S390x - - Reduce use of the RNG during benchmarks - - Fix builds on STI Cell PPU - - Add support for IBM's XLC compiler - - Add IETF 8192 bit MODP group - -* 1.7.11, 2008-09-11 - - Added the Salsa20 stream cipher - - Optimized Montgomery reduction, Karatsuba squaring - - Added 16x16->32 word Comba multiplication and squaring - - Use a much larger Karatsuba cutoff point - - Remove bigint_mul_add_words - - Inlined several BigInt functions - - Add useful information to the generated build.h - - Rename alg_{ia32,amd64} modules to asm_{ia32,amd64} - - Fix the Windows build - -* 1.7.10, 2008-09-05 - - Public key benchmarks run using a selection of random keys - - New benchmark timer options are clock_gettime, gettimeofday, times, clock - - Including reinterpret_cast optimization for xor_buf in default header - - Split byte swapping and word rotation functions into distinct headers - - Add IETF modp 6144 group and 2048 and 3072 bit DSS groups - - Optimizes BigInt right shift - - Add aliases in DL_Group::Format enum - - BigInt now caches the significant word count - -* 1.7.9, 2008-08-27 - - Make clear() in most algorithm base classes a pure virtual - - Add noexec stack marker for GNU linker in assembly code - - Avoid string operations in ressol - - Compilation fixes for MinGW and Visual Studio C++ 2008 - - Some autoconfiguration fixes for Windows - -* 1.6.5, 2008-08-27 - - Add noexec stack marker for GNU linker in assembly code - - Fix autoconfiguration problem on x86 with GCC 4.2 and 4.3 - -* 1.7.8, 2008-07-15 - - Added the block cipher Noekeon - - Remove global deref_alias function - - X509_Store takes timeout options as constructor arguments - - Add Shanks-Tonelli algorithm, contributed by FlexSecure GmbH - - Extend random_prime() for generating primes of any bit length - - Remove Config class - - Allow adding new entropy via base RNG interface - - Reseeding a X9.31 PRNG also reseeds the underlying PRNG - -* 1.7.7, 2008-06-28 - - Remove the global PRNG object - - The PK filter objects were removed - - Add a test suite for the ANSI X9.31 PRNG - - Much cleaner and (mostly) thread-safe reimplementation of es_ftw - - Remove both default arguments to ANSI_X931_RNG's constructor - - Remove the randomizing version of OctetString::change - - Make the cipher and MAC to use in Randpool configurable - - Move RandomNumberGenerator declaration to rng.h - - RSA_PrivateKey will not generate keys smaller than 1024 bits - - Fix an error decoding BER UNIVERSAL types with special taggings - -* 1.7.6, 2008-05-05 - - Initial support for Windows DLLs, from Joel Low - - Reset the position pointer when a new block is generated in X9.32 PRNG - - Timer objects are now treated as entropy sources - - Moved several ASN.1-related enums from enums.h to an appropriate header - - Removed the AEP module, due to inability to test - - Removed Global_RNG and rng.h - - Removed system_clock - - Removed Library_State::UI and the pulse callback logic - -* 1.7.5, 2008-04-12 - - The API of X509_CA::sign_request was altered to avoid race conditions - - New type Pipe::message_id to represent the Pipe message number - - Remove the Named_Mutex_Holder for a small performance gain - - Removed several unused or rarely used functions from Config - - Ignore spaces inside of a decimal string in BigInt::decode - - Allow using a std::istream to initialize a DataSource_Stream object - - Fix compilation problem in zlib compression module - - The chunk sized used by Pooling_Allocator is now a compile time setting - - The size of random blinding factors is now a compile time setting - - The install target no longer tries to set a particular owner/group - -* 1.7.4, 2008-03-10 - - Use unaligned memory read/writes on systems that allow it, for performance - - Assembly for x86-64 for accessing the bswap instruction - - Use larger buffers in ARC4 and WiderWAKE for significant throughput increase - - Unroll loops in SHA-160 for a few percent increase in performance - - Fix compilation with GCC 3.2 in es_ftw and es_unix - - Build fix for NetBSD systems - - Prevent es_dev from being built except on Unix systems - -* 1.6.4, 2008-03-08 - - Fix a compilation problem with Visual Studio C++ 2003 - -* 1.7.3, 2008-01-23 - - New invocation syntax for configure.pl with several new options - - Support for IPv4 addresses in a subject alternative name - - New fast poll for the generic Unix entropy source (es_unix) - - The es_file entropy source has been replaced by the es_dev module - - The malloc allocator does not inherit from Pooling_Allocator anymore - - The path that es_unix will search in are now fully user-configurable - - Truncate X9.42 PRF output rather than allow counter overflow - - PowerPC is now assumed to be big-endian - -* 1.7.2, 2007-10-13 - - Initialize the global library state lazily - - Add plain CBC-MAC for backwards compatibility with old systems - - Clean up some of the self test code - - Throw a sensible exception if a DL_Group is not found - - Truncate KDF2 output rather than allowing counter overflow - - Add newly assigned OIDs for SHA-2 and DSA with SHA-224/256 - - Fix a Visual Studio compilation problem in x509stat.cpp - -* 1.7.1, 2007-07-23 - - Fix a race condition in the algorithm object cache - - HMAC key schedule optimization - - The build header sets a macro defining endianness, if known - - New word load/store abstraction allowing further optimization - - Modify most of the library to avoid use the C-style casts - - Use higher resolution timers in symmetric benchmarks - -* 1.6.3, 2007-07-23 - - Fix a race condition in the algorithm lookup cache - - Fix problems building the memory pool on some versions of Visual C++ - -* 1.7.0, 2007-05-19 - - DSA parameter generation now follows FIPS 186-3 - - Added OIDs for Rabin-Williams and Nyberg-Rueppel - - Somewhat better support for out of tree builds - - Minor optimizations for RC2 and Tiger - - Documentation updates - - Update the todo list - -* 1.6.2, 2007-03-24 - - Fix autodection on Athlon64s running Linux - - Fix builds on QNX and compilers using STLport - - Remove a call to abort() that crept into production - -* 1.6.1, 2007-01-20 - - Fix some base64 decoder bugs - - Add a new option to base64 encoding, to always append a newline - - Fix some build problems under Visual Studio with debug enabled - - Fix a bug in BER_Decoder that was triggered under some compilers - -* 1.6.0, 2006-12-17 - - Minor cleanups versus 1.5.13 - -* 1.5.13, 2006-12-10 - - Compilation fixes for the bzip2, zlib, and GNU MP modules - - Better support for Intel C++ and EKOpath C++ on x86-64 - -* 1.5.12, 2006-10-27 - - Cleanups in the initialization routines - - Add some x86-64 assembly for multiply-add - - Fix problems generating very small (below 384 bit) RSA keys - - Support out of tree builds - - Bring some of the documentation up to date - - More improvements to the Python bindings - -* 1.5.11, 2006-09-10 - - Removed the Algorithm base class - - Various cleanups in the public key inheritance hierarchy - - Major overhaul of the configure/build setup - - Added x86 assembler implementations of Serpent and low-level MPI code - - Optimizations for the SHA-1 x86 assembler - - Various improvements to the Python wrappers - - Work around a Visual Studio compiler bug - -* 1.5.10, 2006-08-13 - - Add x86 assembler versions of MD4, MD5, and SHA-1 - - Expand InitializerOptions' language to support on/off switches - - Fix definition of OID 2.5.4.8; was accidentally changed in 1.5.9 - - Fix possible resource leaks in the mmap allocator - - Slightly optimized buffering in MDx_HashFunction - - Initialization failures are dealt with somewhat better - - Add an example implementing Pollard's Rho algorithm - - Better option handling in the test/benchmark tool - - Expand the xor_ciph example to support longer keys - - Some updates to the documentation - -* 1.5.9, 2006-07-12 - - Fixed bitrot in the AEP engine - - Fix support for marking certificate/CRL extensions as critical - - Significant cleanups in the library state / initialization code - - LibraryInitializer takes an explicit InitializerOptions object - - Make Mutex_Factory an abstract class, add Default_Mutex_Factory - - Change configuration access to using global_state() - - Add support for global named mutexes throughout the library - - Add some STL wrappers for the delete operator - - Change how certificates are created to be more flexible and general - -* 1.5.8, 2006-06-23 - - Many internal cleanups to the X.509 cert/CRL code - - Allow for application code to support new X.509 extensions - - Change the return type of X509_Certificate::{subject,issuer}_info - - Allow for alternate character set handling mechanisms - - Fix a bug that was slowing squaring performance somewhat - - Fix a very hard to hit overflow bug in the C version of word3_muladd - - Minor cleanups to the assembler modules - - Disable es_unix module on FreeBSD due to build problem on FreeBSD 6.1 - - Support for GCC 2.95.x has been dropped in this release - -* 1.5.7, 2006-05-28 - - Further, major changes to the BER/DER coding system - - Updated the Qt mutex module to use Mutex_Factory - - Moved the library global state object into an anonymous namespace - - Drop the Visual C++ x86 assembly module due to bugs - -* 1.5.6, 2006-03-01 - - The low-level DER/BER coding system was redesigned and rewritten - - Portions of the certificate code were cleaned up internally - - Use macros to substantially clean up the GCC assembly code - - Added 32-bit x86 assembly for Visual C++ (by Luca Piccarreta) - - Avoid a couple of spurious warnings under Visual C++ - - Some slight cleanups in X509_PublicKey::key_id - -* 1.5.5, 2006-02-04 - - Fixed a potential infinite loop in the memory pool code (Matt Johnston) - - Made Pooling_Allocator::Memory_Block an actual class of sorts - - Some small optimizations to the division and modulo computations - - Cleaned up the implementation of some of the BigInt operators - - Reduced use of dynamic memory allocation in low-level BigInt functions - - A few simplifications in the Randpool mixing function - - Removed power(), as it was not particularly useful (or fast) - - Fixed some annoying bugs in the benchmark code - - Added a real credits file - -* 1.5.4, 2006-01-29 - - Integrated x86 and amd64 assembly code, contributed by Luca Piccarreta - - Fixed a memory access off-by-one in the Karatsuba code - - Changed Pooling_Allocator's free list search to a log(N) algorithm - - Merged ModularReducer with its only subclass, Barrett_Reducer - - Fixed sign-handling bugs in some of the division and modulo code - - Renamed the module description files to modinfo.txt - - Further cleanups in the initialization code - - Removed BigInt::add and BigInt::sub - - Merged all the division-related functions into just divide() - - Modified the <mp_asmi.h> functions to allow for better optimizations - - Made the number of bits polled from an EntropySource user configurable - - Avoid including <algorithm> in <botan/secmem.h> - - Fixed some build problems with Sun Forte - - Removed some dead code from bigint_modop - - Fix the definition of same_mem - -* 1.5.3, 2006-01-24 - - Many optimizations in the low-level multiple precision integer code - - Added hooks for assembly implementations of the MPI code - - Support for the X.509 issuer alternative name extension in new certs - - Fixed a bug in the decompression modules; found and patched by Matt Johnston - - New Windows mutex module (mux_win32), by Luca Piccarreta - - Changed the Windows timer module to use QueryPerformanceCounter - - mem_pool.cpp was using std::set iterators instead of std::multiset ones - - Fixed a bug in X509_CA preventing users from disabling particular extensions - - Fixed the mp_asm64 module, which was entirely broken in 1.5.2 - - Fixed some module build problems on FreeBSD and Tru64 - -* 1.5.2, 2006-01-15 - - Fixed an off-by-one memory read in MISTY1::key() - - Fixed a nasty memory leak in Output_Buffers::retire() - - Reimplemented the memory allocator from scratch - - Improved memory caching in Montgomery exponentiation - - Optimizations for multiple precision addition and subtraction - - Fixed a build problem in the hardware timer module on 64-bit PowerPC - - Changed default Karatsuba cutoff to 12 words (was 14) - - Removed MemoryRegion::bits(), which was unused and incorrect - - Changed maximum HMAC keylength to 1024 bits - - Various minor Makefile and build system changes - - Avoid using std::min in <secmem.h> to bypass Windows libc macro pollution - - Switched checks/clock.cpp back to using clock() by default - - Enabled the symmetric algorithm tests, which were accidentally off in 1.5.1 - - Removed the Default_Mutex's unused clone() member function - -* 1.4.12, 2006-01-15 - - Fixed an off-by-one memory read in MISTY1::key() - - Fixed a nasty memory leak in Output_Buffers::retire() - - Changed maximum HMAC keylength to 1024 bits - - Fixed a build problem in the hardware timer module on 64-bit PowerPC - -* 1.5.1, 2006-01-08 - - Implemented Montgomery exponentiation - - Implemented generalized Karatsuba multiplication and squaring - - Implemented Comba squaring for 4, 6, and 8 word inputs - - Added new Modular_Exponentiator and Power_Mod classes - - Removed FixedBase_Exp and FixedExponent_Exp - - Fixed a performance regression in get_allocator introduced in 1.5.0 - - Engines can now offer S2K algorithms and block cipher padding methods - - Merged the remaining global 'algolist' code into Default_Engine - - The low-level MPI code is linked as C again - - Replaced BigInt's get_nibble with the more general get_substring - - Some documentation updates - -* 1.5.0, 2006-01-01 - - Moved all global/shared library state into a single object - - Mutex objects are created through mutex factories instead of a global - - Removed ::get_mutex(), ::initialize_mutex(), and Mutex::clone() - - Removed the RNG_Quality enum entirely - - There is now only a single global-use PRNG - - Removed the no_aliases and no_oids options for LibraryInitializer - - Removed the deprecated algorithms SEAL, ISAAC, and HAVAL - - Change es_ftw to use unbuffered I/O - -* 1.4.11, 2005-12-31 - - Changed Whirlpool diffusion matrix to match updated algorithm spec - - Fixed several engine module build errors introduced in 1.4.10 - - Fixed two build problems in es_capi; reported by Matthew Gregan - - Added a constructor to DataSource_Memory taking a std::string - - Placing the same Filter in multiple Pipes triggers an exception - - The configure script accepts --docdir and --libdir - - Merged doc/rngs.txt into the main API document - - Thanks to Joel Low for several bug reports on early tarballs of 1.4.11 - -* 1.4.10, 2005-12-18 - - Added an implementation of KASUMI, the block cipher used in 3G phones - - Refactored Pipe; output queues are now managed by a distinct class - - Made certain Filter facilities only available to subclasses of Fanout_Filter - - There is no longer any overhead in Pipe for a message that has been read out - - It is now possible to generate RSA keys as small as 128 bits - - Changed some of the core classes to derive from Algorithm as a virtual base - - Changed Randpool to use HMAC instead of a plain hash as the mixing function - - Fixed a bug in the allocators; found and fixed by Matthew Gregan - - Enabled the use of binary file I/O, when requested by the application - - The OpenSSL engine's block cipher code was missing some deallocation calls - - Disabled the es_ftw module on NetBSD, due to header problems there - - Fixed a problem preventing tm_hard from building on MacOS X on PowerPC - - Some cleanups for the modules that use inline assembler - - config.h is now stored in build/ instead of build/include/botan/ - - The header util.h was split into bit_ops.h, parsing.h, and util.h - - Cleaned up some redundant include directives - -* 1.4.9, 2005-11-06 - - Added the IBM-created AES candidate algorithm MARS - - Added the South Korean block cipher SEED - - Added the stream cipher Turing - - Added the new hash function FORK-256 - - Deprecated the ISAAC stream cipher - - Twofish and RC6 are significantly faster with GCC - - Much better support for 64-bit PowerPC - - Added support for high-resolution PowerPC timers - - Fixed a bug in the configure script causing problems on FreeBSD - - Changed ANSI X9.31 to support arbitrary block ciphers - - Make the configure script a bit less noisy - - Added more test vectors for some algorithms, including all the AES finalists - - Various cosmetic source code cleanups - -* 1.4.8, 2005-10-16 - - Resolved a bad performance problem in the allocators; fix by Matt Johnston - - Worked around a Visual Studio 2003 compilation problem introduced in 1.4.7 - - Renamed OMAC to CMAC to match the official NIST naming - - Added single byte versions of update() to PK_Signer and PK_Verifier - - Removed the unused reverse_bits and reverse_bytes functions - -* 1.4.7, 2005-09-25 - - Fixed major performance problems with recent versions of GNU C++ - - Added an implementation of the X9.31 PRNG - - Removed the X9.17 and FIPS 186-2 PRNG algorithms - - Changed defaults to use X9.31 PRNGs as global PRNG objects - - Documentation updates to reflect the PRNG changes - - Some cleanups related to the engine code - - Removed two useless headers, base_eng.h and secalloc.h - - Removed PK_Verifier::valid_signature - - Fixed configure/build system bugs affecting MacOS X builds - - Added support for the EKOPath x86-64 compiler - - Added missing destructor for BlockCipherModePaddingMethod - - Fix some build problems with Visual C++ 2005 beta - - Fix some build problems with Visual C++ 2003 Workshop - -* 1.4.6, 2005-03-13 - - Fix an error in the shutdown code introduced in 1.4.5 - - Setting base/pkcs8_tries to 0 disables the builtin fail-out - - Support for XMPP identifiers in X.509 certificates - - Duplicate entries in X.509 DNs are removed - - More fixes for Borland C++, from Friedemann Kleint - - Add a workaround for buggy iostreams - -* 1.4.5, 2005-02-26 - - Add support for AES encryption of private keys - - Minor fixes for PBES2 parameter decoding - - Internal cleanups for global state variables - - GCC 3.x version detection was broken in non-English locales - - Work around a Sun Forte bug affecting mem_pool.h - - Several fixes for Borland C++ 5.5, from Friedemann Kleint - - Removed inclusion of init.h into base.h - - Fixed a major bug in reading from certificate stores - - Cleaned up a couple of mutex leaks - - Removed some left-over debugging code - - Removed SSL3_MAC, SSL3_PRF, and TLS_PRF - -* 1.4.4, 2004-12-02 - - Further tweaks to the pooling allocator - - Modified EMSA3 to support SSL/TLS signatures - - Changes to support Qt/QCA, from Justin Karneges - - Moved mux_qt module code into mod_qt - - Fixes for HP-UX from Mike Desjardins - -* 1.4.3, 2004-11-06 - - Split up SecureAllocator into Allocator and Pooling_Allocator - - Memory locking allocators are more likely to be used - - Fixed the placement of includes in some modules - - Fixed broken installation procedure - - Fixes in configure script to support alternate install programs - - Modules can specify the minimum version they support - -* 1.4.2, 2004-10-31 - - Fixed a major CRL handling bug - - Cipher and hash operations can be offloaded to engines - - Added support for cipher and hash offload in OpenSSL engine - - Improvements for 64-bit CPUs without a widening multiply instruction - - Support for SHA2-* and Whirlpool with EMSA2 - - Fixed a long-standing build problem with conflicting include files - - Fixed some examples that hadn't been updated for 1.4.x - - Portability fixes for Solaris, *BSD, HP-UX, and others - - Lots of fixes and cleanups in the configure script - - Updated the Gentoo ebuild file - -* 1.4.1, 2004-10-10 - - Fixed major errors in the X.509 and PKCS #8 copy_key functions - - Added a LAST_MESSAGE meta-message number for Pipe - - Added new aliases (3DES and DES-EDE) for Triple-DES - - Added some new functions to PK_Verifier - - Cleaned up the KDF interface - - Disabled tm_posix on *BSD due to header issues - - Fixed a build problem on PowerPC with GNU C++ pre-3.4 - -* 1.4.0, 2004-06-26 - - Added the FIPS 186 RNG back - - Added copy_key functions for X.509 public keys and PKCS #8 private keys - - Fixed PKCS #1 signatures with RIPEMD-128 - - Moved some code around to avoid warnings with Sun ONE compiler - - Fixed a bug in botan-config affecting OpenBSD - - Fixed some build problems on Tru64, HP-UX - - Fixed compile problems with Intel C++, Compaq C++ - -* 1.3.14, 2004-06-12 - - Added support for AEP's AEP1000/AEP2000 crypto cards - - Added a Mutex module using Qt, from Justin Karneges - - Added support for engine loading in LibraryInitializer - - Tweaked SecureAllocator, giving 20% better performance under heavy load - - Added timer and memory locking modules for Win32 (tm_win32, ml_win32) - - Renamed PK_Engine to Engine_Core - - Improved the Karatsuba cutoff points - - Fixes for compiling with GCC 3.4 and Sun C++ 5.5 - - Fixes for Linux/s390, OpenBSD, and Solaris - - Added support for Linux/s390x - - The configure script was totally broken for 'generic' OS - - Removed Montgomery reduction due to bugs - - Removed an unused header, pkcs8alg.h - - check --validate returns an error code if any tests failed - - Removed duplicate entry in Unix command list for es_unix - - Moved the Cert_Usage enumeration into X509_Store - - Added new timing methods for PK benchmarks, clock_gettime and RDTSC - - Fixed a few minor bugs in the configure script - - Removed some deprecated functions from x509cert.h and pkcs10.h - - Removed the 'minimal' module, has to be updated for Engine support - - Changed MP_WORD_BITS macro to BOTAN_MP_WORD_BITS to clean up namespace - - Documentation updates - -* 1.3.13, 2004-05-15 - - Major fixes for Cygwin builds - - Minor MacOS X install fixes - - The configure script is a little better at picking the right modules - - Removed ml_unix from the 'unix' module set for Cygwin compatibility - - Fixed a stupid compile problem in pkcs10.h - -* 1.3.12, 2004-05-02 - - Added ability to remove old entries from CRLs - - Swapped the first two arguments of X509_CA::update_crl() - - Added an < operator for MemoryRegion, so it can be used as a std::map key - - Changed X.509 searching by DNS name from substring to full string compares - - Renamed a few X509_Certificate and PKCS10_Request member functions - - Fixed a problem when decoding some PKCS #10 requests - - Hex_Decoder would not check inputs, reported by Vaclav Ovsik - - Changed default CRL expire time from 30 days to 7 days - - X509_CRL's default PEM header is now "X509 CRL", for OpenSSL compatibility - - Corrected errors in the API doc, fixes from Ken Perano - - More documentation about the Pipe/Filter code - -* 1.3.11, 2004-04-01 - - Fixed two show-stopping bugs in PKCS10_Request - - Added some sanity checks in Pipe/Filter - - The DNS and URI entries would get swapped in subjectAlternativeNames - - MAC_Filter is now willing to not take a key at creation time - - Setting the expiration times of certs and CRLs is more flexible - - Fixed problems building on AIX with GCC - - Fixed some problems in the tutorial pointed out by Dominik Vogt - - Documentation updates - -* 1.3.10, 2004-03-27 - - Added support for OpenPGP's ASCII armor format - - Cleaned up the RNG system; seeding is much more flexible - - Added simple autoconfiguration abilities to configure.pl - - Fixed a GCC 2.95.x compile problem - - Updated the example configuration file - - Documentation updates - -* 1.3.9, 2004-03-07 - - Added an engine using OpenSSL (requires 0.9.7 or later) - - X509_Certificate would lose email addresses stored in the DN - - Fixed a missing initialization in a BigInt constructor - - Fixed several Visual C++ compile problems - - Fixed some BeOS build problems - - Fixed the WiderWake benchmark - -* 1.3.8, 2003-12-30 - - 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 (requires 4.1 or later) - - 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, 2003-12-12 - - 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, 2003-12-07 - - 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, 2003-11-30 - - 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.2.8, 2003-11-21 - - Merged several important bug fixes from 1.3.x - -* 1.3.4, 2003-11-21 - - 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 algorithms - - Some cleanups in the low-level MPI code - - Created separate AES-{128,192,256} objects - -* 1.3.3, 2003-11-17 - - 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, 2003-11-13 - - 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 super-encryption from ARC4 to WiderWake4+1 - - Cleaned up the base64/hex encoders and decoders - - Added an ASN.1/BER decoder as an example - - AES had its 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, 2003-11-04 - - 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, 2003-11-02 - - 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 - -* 1.2.7, 2003-10-31 - - Added support for reading configuration files - - Added constructors so NR and RW keys can be imported easily - - Fixed mp_asm64, which was completely broken in 1.2.6 - - Removed tm_hw_ia32 module; replaced by tm_hard - - Added support for loading certain oddly formed RSA certificates - - Fixed spelling of NON_REPUDIATION enum - - Renamed the option default_to_ca to v1_assume_ca - - Fixed a minor bug in X.509 certificate generation - - Fixed a latent bug in the OID lookup code - - Updated the RPM spec file - - Added to the tutorial - -* 1.2.6, 2003-07-04 - - Major performance increase for PK algorithms on most 64-bit systems - - Cleanups in the low-level MPI code to support asm implementations - - Fixed build problems with some versions of Compaq's C++ compiler - - Removed useless constructors for NR public and private keys - - Removed support for the patch_file directive in module files - - Removed several deprecated functions - -* 1.2.5, 2003-06-22 - - Fixed a tricky and long-standing memory leak in Pipe - - Major cleanups and fixes in the memory allocation system - - Removed alloc_mlock, which has been superseded by the ml_unix module - - Removed a denial of service vulnerability in X509_Store - - Fixed compilation problems with VS .NET 2003 and Codewarrior 8 - - Added another variant of PKCS8::load_key, taking a memory buffer - - Fixed various minor/obscure bugs which occurred when MP_WORD_BITS != 32 - - BigInt::operator%=(word) was a no-op if the input was a power of 2 - - Fixed portability problems in BigInt::to_u32bit - - Fixed major bugs in SSL3-MAC - - Cleaned up some messes in the PK algorithms - - Cleanups and extensions for OMAC and EAX - - Made changes to the entropy estimation function - - Added a 'beos' module set for use on BeOS - - Officially deprecated a few X509:: and PKCS8:: functions - - Moved the contents of primes.h to numthry.h - - Moved the contents of x509opt.h to x509self.h - - Removed the (empty) desx.h header - - Documentation updates - -* 1.2.4, 2003-05-29 - - Fixed a bug in EMSA1 affecting NR signature verification - - Fixed a few latent bugs in BigInt related to word size - - Removed an unused function, mp_add2_nc, from the MPI implementation - - Reorganized the core MPI files - -* 1.2.3, 2003-05-20 - - Fixed a bug that prevented DSA/NR key generation - - Fixed a bug that prevented importing some root CA certs - - Fixed a bug in the BER decoder when handing optional bit or byte strings - - Fixed the encoding of authorityKeyIdentifier in X509_CA - - Added a sanity check in PBKDF2 for zero length passphrases - - Added versions of X509::load_key and PKCS8::load_key that take a file name - - X509_CA generates 128 bit serial numbers now - - Added tests to check PK key generation - - Added a simplistic X.509 CA example - - Cleaned up some of the examples - -* 1.2.2, 2003-05-13 - - Add checks to prevent any BigInt bugs from revealing an RSA or RW key - - Changed the interface of Global_RNG::seed - - Major improvements for the es_unix module - - Added another Win32 entropy source, es_win32 - - The Win32 CryptoAPI entropy source can now poll multiple providers - - Improved the BeOS entropy source - - Renamed pipe_unixfd module to fd_unix - - Fixed a file descriptor leak in the EGD module - - Fixed a few locking bugs - -* 1.2.1, 2003-05-06 - - Added ANSI X9.23 compatible CBC padding - - Added an entropy source using Win32 CryptoAPI - - Removed the Pipe I/O operators taking a FILE* - - Moved the BigInt encoding/decoding functions into the BigInt class - - Integrated several fixes for VC++ 7 (from Hany Greiss) - - Fixed the configure.pl script for Windows builds - -* 1.2.0, 2003-04-28 - - Tweaked the Karatsuba cut-off points - - Increased the allowed keylength of HMAC and Blowfish - - Removed the 'mpi_ia32' module, pending rewrite - - Workaround a GCC 2.95.x bug in eme1.cpp - -* 1.1.13, 2003-04-22 - - Added OMAC - - Added EAX authenticated cipher mode - - Diffie-Hellman would not do blinding in some cases - - Optimized the OFB and CTR modes - - Corrected Skipjack's word ordering, as per NIST clarification - - Support for all subject/issuer attribute types required by RFC 3280 - - The removeFromCRL CRL reason code is now handled correctly - - Increased the flexibility of the allocators - - Renamed Rijndael to AES, created aes.h, deleted rijndael.h - - Removed support for the 'no_timer' LibraryInitializer option - - Removed 'es_pthr' module, pending further testing - - Cleaned up get_ciph.cpp - -* 1.1.12, 2003-04-15 - - Fixed a ASN.1 string encoding bug - - Fixed a pair of X509_DN encoding problems - - Base64_Decoder and Hex_Decoder can now validate input - - Removed support for the LibraryInitializer option 'egd_path' - - Added tests for DSA X.509 and PKCS #8 key formats - - Removed a long deprecated feature of DH_PrivateKey's constructor - - Updated the RPM .spec file - - Major documentation updates - -* 1.1.11, 2003-04-07 - - Added PKCS #10 certificate requests - - Changed X509_Store searching interface to be more flexible - - Added a generic Certificate_Store interface - - Added a function for generating self-signed X.509 certs - - Cleanups and changes to X509_CA - - New examples for PKCS #10 and self-signed certificates - - Some documentation updates - -* 1.1.10, 2003-04-03 - - X509_CA can now generate new X.509 CRLs - - Added blinding for RSA, RW, DH, and ElGamal to prevent timing attacks - - More certificate and CRL extensions/attributes are supported - - Better DN handling in X.509 certificates/CRLs - - Added a DataSink hierarchy (suggested by Jim Darby) - - Consolidated SecureAllocator and ManagedAllocator - - Many cleanups and generalizations - - Added a (slow) pthreads based EntropySource - - Fixed some threading bugs - -* 1.1.9, 2003-02-25 - - Added support for using X.509v2 CRLs - - Fixed several bugs in the path validation algorithm - - Certificates can be verified for a particular usage - - Algorithm for comparing distinguished names now follows X.509 - - Cleaned up the code for the es_beos, es_ftw, es_unix modules - - Documentation updates - -* 1.1.8, 2003-01-29 - - Fixes for the certificate path validation algorithm in X509_Store - - Fixed a bug affecting X509_Certificate::is_ca_cert() - - Added a general configuration interface for policy issues - - Cleanups and API changes in the X.509 CA, cert, and store code - - Made various options available for X509_CA users - - Changed X509_Time's interface to work around time_t problems - - Fixed a theoretical weakness in Randpool's entropy mixing function - - Fixed problems compiling with GCC 2.95.3 and GCC 2.96 - - Fixed a configure bug (reported by Jon Wilson) affecting MinGW - -* 1.1.7, 2003-01-12 - - Fixed an obscure but dangerous bug in SecureVector::swap - - Consolidated SHA-384 and SHA-512 to save code space - - Added SSL3-MAC and SSL3-PRF - - Documentation updates, including a new tutorial - -* 1.0.2, 2003-01-12 - - Fixed an obscure SEGFAULT causing bug in Pipe - - Fixed an obscure but dangerous bug in SecureVector::swap - -* 1.1.6, 2002-12-10 - - Initial support for X.509v3 certificates and CAs - - Major redesign/rewrite of the ASN.1 encoding/decoding code - - Added handling for DSA/NR signatures encoded as DER SEQUENCEs - - Documented the generic cipher lookup interface - - Added an (untested) entropy source for BeOS - - Various cleanups and bug fixes - -* 1.1.5, 2002-11-17 - - Added the discrete logarithm integrated encryption system (DLIES) - - Various optimizations for BigInt - - Added support for assembler optimizations in modules - - Added BigInt x86 optimizations module (mpi_ia32) - -* 1.1.4, 2002-11-10 - - Speedup of 15-30% for PK algorithms - - Implemented the PBES2 encryption scheme - - Fixed a potential bug in decoding RSA and RW private keys - - Changed the DL_Group class interface to handle different formats better - - Added support for PKCS #3 encoded DH parameters - - X9.42 DH parameters use a PEM label of 'X942 DH PARAMETERS' - - Added key pair consistency checking - - Fixed a compatibility problem with gcc 2.96 (pointed out by Hany Greiss) - - A botan-config script is generated at configure time - - Documentation updates - -* 1.1.3, 2002-11-03 - - Added a generic public/private key loading interface - - Fixed a small encoding bug in RSA, RW, and DH - - Changed the PK encryption/decryption interface classes - - ECB supports using padding methods - - Added a function-based interface for library initialization - - Added support for RIPEMD-128 and Tiger PKCS#1 v1.5 signatures - - The cipher mode benchmarks now use 128-bit AES instead of DES - - Removed some obsolete typedefs - - Removed OpenCL support (opencl.h, the OPENCL_* macros, etc) - - Added tests for PKCS #8 encoding/decoding - - Added more tests for ECB and CBC - -* 1.1.2, 2002-10-21 - - Support for PKCS #8 encoded RSA, DSA, and DH private keys - - Support for Diffie-Hellman X.509 public keys - - Major reorganization of how X.509 keys are handled - - Added PKCS #5 v2.0's PBES1 encryption scheme - - Added a generic cipher lookup interface - - Added the WiderWake4+1 stream cipher - - Added support for sync-able stream ciphers - - Added a 'paranoia level' option for the LibraryInitializer - - More security for RNG output meant for long term keys - - Added documentation for some of the new 1.1.x features - - CFB's feedback argument is now specified in bits - - Renamed CTR class to CTR_BE - - Updated the RSA and DSA examples to use X.509 and PKCS #8 key formats - -* 1.1.1, 2002-10-15 - - Added the Korean hash function HAS-160 - - Partial support for RSA and DSA X.509 public keys - - Added a mostly functional BER encoder/decoder - - Added support for non-deterministic MAC functions - - Initial support for PEM encoding/decoding - - Internal cleanups in the PK algorithms - - Several new convenience functions in Pipe - - Fixed two nasty bugs in Pipe - - Messed with the entropy sources for es_unix - - Discrete logarithm groups are checked for safety more closely now - - For compatibility with GnuPG, ElGamal now supports DSA-style groups - -* 1.1.0, 2002-09-14 - - Added entropy estimation to the RNGs - - Improved the overall design of both Randpool and ANSI_X917_RNG - - Added a separate RNG for nonce generation - - Added window exponentiation support in power_mod - - Added a get_s2k function and the PKCS #5 S2K algorithms - - Added the TLSv1 PRF - - Replaced BlockCipherModeIV typedef with InitializationVector class - - Renamed PK_Key_Agreement_Scheme to PK_Key_Agreement - - Renamed SHA1 -> SHA_160 and SHA2_x -> SHA_x - - Added support for RIPEMD-160 PKCS#1 v1.5 signatures - - Changed the key agreement scheme interface - - Changed the S2K and KDF interfaces - - Better SCAN compatibility for HAVAL, Tiger, MISTY1, SEAL, RC5, SAFER-SK - - Added support for variable-pass Tiger - - Major speedup for Rabin-Williams key generation - -* 1.0.1, 2002-09-14 - - Fixed a minor bug in Randpool::random() - - Added some new aliases and typedefs for 1.1.x compatibility - - The 4096-bit RSA benchmark key was decimal instead of hex - - EMAC was returning an incorrect name - -* 1.0.0, 2002-08-26 - - 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, 2002-08-18 - - 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, 2002-08-10 - - 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, 2002-08-03 - - EMSA4 supports variable salt size - - PK_* can take a string naming the encoding method to use - - Started writing some internals documentation - -* 0.8.7, 2002-07-30 - - 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, 2002-07-25 - - 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, 2002-07-21 - - 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, 2002-07-14 - - 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, 2002-06-09 - - 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, 2002-05-18 - - 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, 2002-05-06 - - 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, 2002-04-24 - - 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, 2002-04-07 - - Added EGD_EntropySource module (es_egd) - - Added a file tree walking EntropySource (es_ftw) - - Added MemoryLocking_Allocator module (alloc_mlock) - - Renamed the pthr_mux, unix_rnd, and mmap_mem modules - - Changed timer mechanism; the clock method can be switched on the fly. - - 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, 2002-03-19 - - 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, 2002-02-28 - - 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, 2001-11-24 - - 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, 2001-10-14 - - 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, 2001-08-19 - - 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 - - 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 - - Optimized CAST-256, DES, SAFER-SK, Serpent, SEAL, MD2, and RIPEMD-160 - - 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 - - Shared library soname is now set to the full version number - -* 0.7.4, 2001-07-15 - - 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, 2001-06-08 - - 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, 2001-06-03 - - Build system supports modules - - Added modules for mlock, a /dev/random EntropySource, POSIX1.b timers - - Added Bzip2 compression filter, 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, 2001-05-16 - - 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, 2001-03-01 - - First public release +Release Notes +======================================== + +2011 +---------------------------------------- + +1.9.16-dev, ????-??-?? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Second release candidate for 1.10.0 + * The documenation, previously written in LaTeX, is now in + reStructuredText suitable for processing by Sphinx, which can + generate HTML, PDFs, or man pages. + * Disable the by-default 'strong' checking of private keys that are + loaded from storage. You can always request key material sanity + checking using check_key. + * Bring back removed functions min_keylength_of, max_keylength_of, + keylength_multiple_of in lookup.h to avoid breaking applications. + +1.9.15, 2011-03-21 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * First release candidate for 1.10.0 + * Modify how message expansion is done in SHA-256 and SHA-512. + Instead of expanding the entire message at the start, compute them + in the minimum number of registers. Values are computed 15 rounds + before they are needed. On a Core i7-860, GCC 4.5.2, went from + 143 to 157 MiB/s in SHA-256, and 211 to 256 MiB/s in SHA-512. + * Pipe will delete empty output queues as soon as they are no longer + needed, even if earlier messages still have data unread. However an + (empty) entry in a deque of pointers will remain until all prior + messages are completely emptied. + * Avoid reading the SPARC %tick register on OpenBSD as unlike Linux + the kernel will not trap and emulate it for us, causing a illegal + instruction crash. + * Improve detection and autoconfiguration for ARM processors. + +1.9.14, 2011-03-01 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Add support for bcrypt, OpenBSD's password hashing scheme + * Add support for NIST's AES key wrapping algorithm + * Fix an infinite loop in zlib filters introduced in 1.9.11 (PR 142) + +1.9.13, 2011-02-19 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Update Keccak to the round 3 variant + * Fix ordering in GOST 34.10 signatures to match DNSSEC specifications + * Use size_t instead of u32bit for small integers in DER/BER codecs + * Add new build option --distribution-info + * Fix problems in the amalgamation build + * Fix building under Clang 2.9 and Sun Studio 12 + +2010 +---------------------------------------- + +1.9.12, 2010-12-13 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Add the Keccak hash function + * Fix compilation problems in Python wrappers + * Fix compilation problem in OpenSSL engine + * Update SQLite3 database encryption codec + +1.9.11, 2010-11-29 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Many SSL/TLS APIs have changed. This API is still unstable. + * The SSL interface requires TR1 (uses std::tr1::function) + * Fix SSL handshake failures when using RC4 ciphersuites + * Fix a number of CRL encoding and decoding bugs + * Counter mode now always encrypts 256 blocks in parallel + * Code where u32bit was used to represent a length now uses size_t + * Use small tables in the first round of AES + * Removed AES class: app must choose AES-128, AES-192, or AES-256 + * Add hex encoding/decoding functions that can be used without a Pipe + * Add base64 encoding functions that can be used without a Pipe + * Add to_string function to X509_Certificate + * Add support for dynamic engine loading on Windows + * Replace BlockCipher::BLOCK_SIZE attribute with function block_size() + * Replace HashFunction::HASH_BLOCK_SIZE attribute with hash_block_size() + * Changed semantics of MemoryRegion::resize and clear to match STL + * Removed MemoryRegion::append, replaced by push_back and operator+= + * Move PBKDF lookup to engine system + * The IDEA key schedule has been changed to run in constant time + * Avoid a possible timing vulnerability in Montgomery reduction + * Add Algorithm and Key_Length_Specification classes + * Switch default PKCS #8 encryption algorithm from AES-128 to AES-256 + * Update Skein-512 to match the v1.3 specification + * Allow using PBKDF2 with empty passphrases + * Add compile-time deprecation warnings for GCC, Clang, and MSVC + * Support use of HMAC(SHA-256) and CMAC(Blowfish) in passhash9 + * Improve support for Intel Atom processors + * Fix compilation problems under Sun Studio and Clang + +1.8.11, 2010-11-02 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Fix a number of CRL encoding and decoding bugs + * When building a debug library under VC++, use the debug runtime + * Fix compilation under Sun Studio on Linux and Solaris + * Add several functions for compatability with 1.9 + * In the examples, read most input files as binary + * The Perl build script has been removed in this release + +1.8.10, 2010-08-31 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Switch default PKCS #8 encryption algorithm from 3DES to AES-256 + * Increase default hash iterations from 2048 to 10000 in PBES1 and PBES2 + * Use small tables in the first round of AES + * Add PBKDF typedef and get_pbkdf for better compatability with 1.9 + * Add version of S2K::derive_key taking salt and iteration count + * Enable the /proc-walking entropy source on NetBSD + * Fix the doxygen makefile target + +1.9.10, 2010-08-12 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Add a constant time AES implementation using SSSE3 + * Add support for loading new Engines at runtime + * Use GCC byteswap intrinsics where possible + * Drop support for building with Python 2.4 + * Fix benchmarking of block ciphers in ECB mode + * Consolidate the two x86 assembly engines + * Rename S2K to PBKDF + +1.9.9, 2010-06-28 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Add new X509::BER_encode and PKCS8::BER_encode + * Give all Filter objects a name() function + * Add Keyed_Filter::valid_iv_length + * Increase default iteration counts for private key encryption + * Fix compilation of mp_asm64 on 64-bit MIPS with GCC 4.4 and later + * Fix compilation under Apple's GCC 4.2 + * Expand and update the Doxygen documentation + +1.8.9, 2010-06-16 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Use constant time multiplication in IDEA + * Avoid possible timing attack against OAEP decoding + * Add new X509::BER_encode and PKCS8::BER_encode + * Enable DLL builds under Windows + * Add Win32 installer support + * Add support for the Clang compiler + * Fix problem in semcem.h preventing build under Clang or GCC 3.4 + * Fix bug that prevented creation of DSA groups under 1024 bits + * Fix crash in GMP_Engine if library is shutdown and reinitialized + * Work around problem with recent binutils in x86-64 SHA-1 + * The Perl build script is no longer supported and refuses to run by default + +1.9.8, 2010-06-14 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Add support for wide multiplications on 64-bit Windows + * Use constant time multiplication in IDEA + * Avoid possible timing attack against OAEP decoding + * Removed FORK-256; rarely used and it has been broken + * Rename --use-boost-python to --with-boost-python + * Skip building shared libraries on MinGW/Cygwin + * Fix creation of 512 and 768 bit DL groups using the DSA kosherizer + * Fix compilation on GCC versions before 4.3 (missing cpuid.h) + * Fix compilation under the Clang compiler + +1.9.7, 2010-04-27 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * TLS: Support reading SSLv2 client hellos + * TLS: Add support for SEED ciphersuites (RFC 4162) + * Add Comb4P hash combiner function + * Fix checking of EMSA_Raw signatures with leading 0 bytes + +1.9.6, 2010-04-09 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * TLS: Add support for TLS v1.1 + * TLS: Support server name indicator extension + * TLS: Fix server handshake + * TLS: Fix server using DSA certificates + * TLS: Avoid timing channel between CBC padding check and MAC verification + +1.9.5, 2010-03-29 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Numerous ECC optimizations + * Fix GOST 34.10-2001 X.509 key loading + * Allow PK_Signer's fault protection checks to be toggled off + * Avoid using pool-based locking allocator if we can't mlock + * Remove all runtime options + * New BER_Decoder::{decode_and_check, decode_octet_string_bigint} + * Remove SecureBuffer in favor of SecureVector length parameter + * HMAC_RNG: Perform a poll along with user-supplied entropy + * Fix crash in MemoryRegion if Allocator::get failed + * Fix small compilation problem on FreeBSD + +1.9.4, 2010-03-09 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Add the Ajisai SSLv3/TLSv1.0 implementation + * Add GOST 34.10-2001 public key signature scheme + * Add SIMD implementation of Noekeon + * Add SSE2 implementation of IDEA + * Extend Salsa20 to support longer IVs (XSalsa20) + * Perform XTS encryption and decryption in parallel where possible + * Perform CBC decryption in parallel where possible + * Add SQLite3 db encryption codec, contributed by Olivier de Gaalon + * Add a block cipher cascade construction + * Add support for password hashing for authentication (passhash9.h) + * Add support for Win32 high resolution system timers + * Major refactoring and API changes in the public key code + * Use consistency checking (anti-fault attack) for all signature schemes + * Changed S2K interface: derive_key now takes salt, iteration count + * Remove dependency on TR1 for ECC and CVC code + * Renamed ECKAEG to its more usual name, ECDH + * Fix crash in GMP_Engine if library is shutdown and reinitialized + * Fix an invalid memory read in MD4 + * Fix Visual C++ static builds + * Remove Timer class entirely + * Switch default PKCS #8 encryption algorithm from 3DES to AES-128 + * New option --gen-amalgamation for creating a SQLite-style amalgamation + * Many headers are now explicitly internal-use-only and are not installed + * Greatly improve the Win32 installer + * Several fixes for Visual C++ debug builds + +2009 +---------------------------------------- + +1.9.3, 2009-11-19 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Add new AES implementation using Intel's AES instruction intrinsics + * Add an implementation of format preserving encryption + * Allow use of any hash function in X.509 certificate creation + * Optimizations for MARS, Skipjack, and AES + * Set macros for available SIMD instructions in build.h + * Add support for using InnoSetup to package Windows builds + * By default build a DLL on Windows + +1.9.2, 2009-11-03 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Add SIMD version of XTEA + * Support both SSE2 and AltiVec SIMD for Serpent and XTEA + * Optimizations for SHA-1 and SHA-2 + * Add AltiVec runtime detection + * Fix x86 CPU identification with Intel C++ and Visual C++ + +1.8.8, 2009-11-03 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Alter Skein-512 to match the tweaked 1.2 specification + * Fix use of inline asm for access to x86 bswap function + * Allow building the library without AES enabled + * Add 'powerpc64' alias to ppc64 arch for Gentoo ebuild + +1.9.1, 2009-10-23 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Better support for Python and Perl wrappers + * Add an implementation of Blue Midnight Wish (Round 2 tweak version) + * Modify Skein-512 to match the tweaked 1.2 specification + * Add threshold secret sharing (draft-mcgrew-tss-02) + * Add runtime cpu feature detection for x86/x86-64 + * Add code for general runtime self testing for hashes, MACs, and ciphers + * Optimize XTEA; twice as fast as before on Core2 and Opteron + * Convert CTR_BE and OFB from filters to stream ciphers + * New parsing code for SCAN algorithm names + * Enable SSE2 optimizations under Visual C++ + * Remove all use of C++ exception specifications + * Add support for GNU/Hurd and Clang/LLVM + +1.9.0, 2009-09-09 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Add support for parallel invocation of block ciphers where possible + * Add SSE2 implementation of Serpent + * Add Rivest's package transform (an all or nothing transform) + * Minor speedups to the Turing key schedule + * Fix processing multiple messages in XTS mode + * Add --no-autoload option to configure.py, for minimized builds + * The previously used configure.pl script is no longer supported + +1.8.7, 2009-09-09 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Fix processing multiple messages in XTS mode + * Add --no-autoload option to configure.py, for minimized builds + +1.8.6, 2009-08-13 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Add Cryptobox, a set of simple password-based encryption routines + * Only read world-readable files when walking /proc for entropy + * Fix building with TR1 disabled + * Fix x86 bswap support for Visual C++ + * Fixes for compilation under Sun C++ + * Add support for Dragonfly BSD (contributed by Patrick Georgi) + * Add support for the Open64 C++ compiler + * Build fixes for MIPS systems running Linux + * Minor changes to license, now equivalent to the FreeBSD/NetBSD license + +1.8.5, 2009-07-23 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Change configure.py to work on stock Python 2.4 + * Avoid a crash in Skein_512::add_data processing a zero-length input + * Small build fixes for SPARC, ARM, and HP-PA processors + * The test suite now returns an error code from main() if any tests failed + +1.8.4, 2009-07-12 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Fix a bug in nonce generation in the Miller-Rabin test + +1.8.3, 2009-07-11 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Add a new Python configuration script + * Add the Skein-512 SHA-3 candidate hash function + * Add the XTS block cipher mode from IEEE P1619 + * Fix random_prime when generating a prime of less than 7 bits + * Improve handling of low-entropy situations during PRNG seeding + * Change random device polling to prefer /dev/urandom over /dev/random + * Use an input insensitive implementation of same_mem instead of memcmp + * Correct DataSource::discard_next to return the number of discarded bytes + * Provide a default value for AutoSeeded_RNG::reseed + * Fix Gentoo bug 272242 + +1.8.2, 2009-04-07 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Make entropy polling more flexible and in most cases faster + * GOST 28147 now supports multiple sbox parameters + * Added the GOST 34.11 hash function + * Fix botan-config problems on MacOS X + +1.8.1, 2009-01-20 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Avoid a valgrind warning in es_unix.cpp on 32-bit Linux + * Fix memory leak in PKCS8 load_key and encrypt_key + * Relicense api.tex from CC-By-SA 2.5 to BSD + * Fix botan-config on MacOS X, Solaris + +2008 +---------------------------------------- + +1.8.0, 2008-12-08 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Fix compilation on Solaris with GCC + +1.7.24, 2008-12-01 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Fix a compatibility problem with SHA-512/EMSA3 signature padding + * Fix bug preventing EGD/PRNGD entropy poller from working + * Fix integer overflow in Pooling_Allocator::get_more_core (bug id #27) + * Add EMSA3_Raw, a variant of EMSA3 called CKM_RSA_PKCS in PKCS #11 + * Add support for SHA-224 in EMSA2 and EMSA3 PK signature padding schemes + * Add many more test vectors for RSA with EMSA2, EMSA3, and EMSA4 + * Wrap private structs in SSE2 SHA-1 code in anonymous namespace + * Change configure.pl's CPU autodetection output to be more consistent + * Disable using OpenSSL's AES due to crashes of unknown cause + * Fix warning in /proc walking entropy poller + * Fix compilation with IBM XLC for Cell 0.9-200709 + +1.7.23, 2008-11-23 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Change to use TR1 (thus enabling ECDSA) with GCC and ICC + * Optimize almost all hash functions, especially MD4 and Tiger + * Add configure.pl options --{with,without}-{bzip2,zlib,openssl,gnump} + * Change Timer to be pure virtual, and add ANSI_Clock_Timer + * Cache socket descriptors in the EGD entropy source + * Avoid bogging down startup in /proc walking entropy source + * Remove Buffered_EntropySource helper class + * Add a Default_Benchmark_Timer typedef in benchmark.h + * Add examples using benchmark.h and Algorithm_Factory + * Add ECC tests from InSiTo + * Minor documentation updates + +1.7.22, 2008-11-17 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Add provider preferences to Algorithm_Factory + * Fix memory leaks in PBE_PKCS5v20 and get_pbe introduced in 1.7.21 + * Optimize AES encryption and decryption (about 10% faster) + * Enable SSE2 optimized SHA-1 implementation on Intel Prescott CPUs + * Fix nanoseconds overflow in benchmark code + * Remove Engine::add_engine + +1.7.21, 2008-11-11 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Make algorithm lookup much more configuable + * Add facilities for runtime performance testing of algorithms + * Drop use of entropy estimation in the PRNGs + * Increase intervals between HMAC_RNG automatic reseeding + * Drop InitializerOptions class, all options but thread safety + +1.7.20, 2008-11-09 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Namespace pkg-config file by major and minor versions + * Cache device descriptors in Device_EntropySource + * Split base.h into {block_cipher,stream_cipher,mac,hash}.h + * Removed get_mgf function from lookup.h + +1.7.19, 2008-11-06 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Add HMAC_RNG, based on a design by Hugo Krawczyk + * Optimized the Turing stream cipher (about 20% faster on x86-64) + * Modify Randpool's reseeding algorithm to poll more sources + * Add a new AutoSeeded_RNG in auto_rng.h + * OpenPGP_S2K changed to take hash object instead of name + * Add automatic identification for Intel's Prescott processors + +1.7.18, 2008-10-22 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Add Doxygen comments from InSiTo + * Add ECDSA and ECKAEG benchmarks + * Add configure.pl switch --with-tr1-implementation + * Fix configure.pl's --with-endian and --with-unaligned-mem options + * Added support for pkg-config + * Optimize byteswap with x86 inline asm for Visual C++ by Yves Jerschow + * Use const references to avoid copying overhead in CurveGFp, GFpModulus + +1.7.17, 2008-10-12 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Add missing ECDSA object identifiers + * Fix error in x86 and x86-64 assembler affecting GF(p) math + * Remove Boost dependency from GF(p) math + * Modify botan-config to not print -L/usr/lib or -L/usr/local/lib + * Add BOTAN_DLL macro to over 30 classes missing it + * Rename the two SHA-2 base classes for consistency + +1.7.16, 2008-10-09 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Add several missing pieces needed for ECDSA and ECKAEG + * Add Card Verifiable Certificates from InSiTo + * Add SHA-224 from InSiTo + * Add BSI variant of EMSA1 from InSiTo + * Add GF(p) and ECDSA tests from InSiTo + * Split ECDSA and ECKAEG into distinct modules + * Allow OpenSSL and GNU MP engines to be built with public key algos disabled + * Rename sha256.h to sha2_32.h and sha_64.h to sha2_64.h + +1.7.15, 2008-10-07 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Add GF(p) arithmetic from InSiTo + * Add ECDSA and ECKAEG implementations from InSiTo + * Minimize internal dependencies, allowing for smaller build configurations + * Add new User Manual and Architecture Guide from FlexSecure GmbH + * Alter configure.pl options for better autotools compatibility + * Update build instructions for recent changes to configure.pl + * Fix CPU detection using /proc/cpuinfo + +1.7.14, 2008-09-30 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Split library into parts allowing modular builds + * Add (very preliminary) CMS support to the main library + * Some constructors now require object pointers instead of names + * Support multiple implementations of the same algorithm + * Build support for Pentium-M processors, from Derek Scherger + * Build support for MinGW/MSYS, from Zbigniew Zagorski + * Use inline assembly for bswap on 32-bit x86 + +1.7.13, 2008-09-27 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Add SSLv3 MAC, SSLv3 PRF, and TLS v1.0 PRF from Ajisai + * Allow all examples to compile even if compression not enabled + * Make CMAC's polynomial doubling operation a public class method + * Use the -m64 flag when compiling with Sun Forte on x86-64 + * Clean up and slightly optimize CMAC::final_result + +1.7.12, 2008-09-18 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Add x86 assembly for Visual Studio C++, by Luca Piccarreta + * Add a Perl XS module, by Vaclav Ovsik + * Add SWIG-based wrapper for Botan + * Add SSE2 implementation of SHA-1, by Dean Gaudet + * Remove the BigInt::sig_words cache due to bugs + * Combined the 4 Blowfish sboxes, suggested by Yves Jerschow + * Changed BigInt::grow_by and BigInt::grow_to to be non-const + * Add private assignment operators to classes that don't support assignment + * Benchmark RSA encryption and signatures + * Added test programs for random_prime and ressol + * Add high resolution timers for IA-64, HP-PA, S390x + * Reduce use of the RNG during benchmarks + * Fix builds on STI Cell PPU + * Add support for IBM's XLC compiler + * Add IETF 8192 bit MODP group + +1.7.11, 2008-09-11 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Added the Salsa20 stream cipher + * Optimized Montgomery reduction, Karatsuba squaring + * Added 16x16->32 word Comba multiplication and squaring + * Use a much larger Karatsuba cutoff point + * Remove bigint_mul_add_words + * Inlined several BigInt functions + * Add useful information to the generated build.h + * Rename alg_{ia32,amd64} modules to asm_{ia32,amd64} + * Fix the Windows build + +1.7.10, 2008-09-05 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Public key benchmarks run using a selection of random keys + * New benchmark timer options are clock_gettime, gettimeofday, times, clock + * Including reinterpret_cast optimization for xor_buf in default header + * Split byte swapping and word rotation functions into distinct headers + * Add IETF modp 6144 group and 2048 and 3072 bit DSS groups + * Optimizes BigInt right shift + * Add aliases in DL_Group::Format enum + * BigInt now caches the significant word count + +1.7.9, 2008-08-27 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Make clear() in most algorithm base classes a pure virtual + * Add noexec stack marker for GNU linker in assembly code + * Avoid string operations in ressol + * Compilation fixes for MinGW and Visual Studio C++ 2008 + * Some autoconfiguration fixes for Windows + +1.6.5, 2008-08-27 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Add noexec stack marker for GNU linker in assembly code + * Fix autoconfiguration problem on x86 with GCC 4.2 and 4.3 + +1.7.8, 2008-07-15 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Added the block cipher Noekeon + * Remove global deref_alias function + * X509_Store takes timeout options as constructor arguments + * Add Shanks-Tonelli algorithm, contributed by FlexSecure GmbH + * Extend random_prime() for generating primes of any bit length + * Remove Config class + * Allow adding new entropy via base RNG interface + * Reseeding a X9.31 PRNG also reseeds the underlying PRNG + +1.7.7, 2008-06-28 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Remove the global PRNG object + * The PK filter objects were removed + * Add a test suite for the ANSI X9.31 PRNG + * Much cleaner and (mostly) thread-safe reimplementation of es_ftw + * Remove both default arguments to ANSI_X931_RNG's constructor + * Remove the randomizing version of OctetString::change + * Make the cipher and MAC to use in Randpool configurable + * Move RandomNumberGenerator declaration to rng.h + * RSA_PrivateKey will not generate keys smaller than 1024 bits + * Fix an error decoding BER UNIVERSAL types with special taggings + +1.7.6, 2008-05-05 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Initial support for Windows DLLs, from Joel Low + * Reset the position pointer when a new block is generated in X9.32 PRNG + * Timer objects are now treated as entropy sources + * Moved several ASN.1-related enums from enums.h to an appropriate header + * Removed the AEP module, due to inability to test + * Removed Global_RNG and rng.h + * Removed system_clock + * Removed Library_State::UI and the pulse callback logic + +1.7.5, 2008-04-12 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * The API of X509_CA::sign_request was altered to avoid race conditions + * New type Pipe::message_id to represent the Pipe message number + * Remove the Named_Mutex_Holder for a small performance gain + * Removed several unused or rarely used functions from Config + * Ignore spaces inside of a decimal string in BigInt::decode + * Allow using a std::istream to initialize a DataSource_Stream object + * Fix compilation problem in zlib compression module + * The chunk sized used by Pooling_Allocator is now a compile time setting + * The size of random blinding factors is now a compile time setting + * The install target no longer tries to set a particular owner/group + +1.7.4, 2008-03-10 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Use unaligned memory read/writes on systems that allow it, for performance + * Assembly for x86-64 for accessing the bswap instruction + * Use larger buffers in ARC4 and WiderWAKE for significant throughput increase + * Unroll loops in SHA-160 for a few percent increase in performance + * Fix compilation with GCC 3.2 in es_ftw and es_unix + * Build fix for NetBSD systems + * Prevent es_dev from being built except on Unix systems + +1.6.4, 2008-03-08 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Fix a compilation problem with Visual Studio C++ 2003 + +1.7.3, 2008-01-23 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * New invocation syntax for configure.pl with several new options + * Support for IPv4 addresses in a subject alternative name + * New fast poll for the generic Unix entropy source (es_unix) + * The es_file entropy source has been replaced by the es_dev module + * The malloc allocator does not inherit from Pooling_Allocator anymore + * The path that es_unix will search in are now fully user-configurable + * Truncate X9.42 PRF output rather than allow counter overflow + * PowerPC is now assumed to be big-endian + +2007 +---------------------------------------- + +1.7.2, 2007-10-13 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Initialize the global library state lazily + * Add plain CBC-MAC for backwards compatibility with old systems + * Clean up some of the self test code + * Throw a sensible exception if a DL_Group is not found + * Truncate KDF2 output rather than allowing counter overflow + * Add newly assigned OIDs for SHA-2 and DSA with SHA-224/256 + * Fix a Visual Studio compilation problem in x509stat.cpp + +1.7.1, 2007-07-23 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Fix a race condition in the algorithm object cache + * HMAC key schedule optimization + * The build header sets a macro defining endianness, if known + * New word load/store abstraction allowing further optimization + * Modify most of the library to avoid use the C-style casts + * Use higher resolution timers in symmetric benchmarks + +1.6.3, 2007-07-23 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Fix a race condition in the algorithm lookup cache + * Fix problems building the memory pool on some versions of Visual C++ + +1.7.0, 2007-05-19 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * DSA parameter generation now follows FIPS 186-3 + * Added OIDs for Rabin-Williams and Nyberg-Rueppel + * Somewhat better support for out of tree builds + * Minor optimizations for RC2 and Tiger + * Documentation updates + * Update the todo list + +1.6.2, 2007-03-24 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Fix autodection on Athlon64s running Linux + * Fix builds on QNX and compilers using STLport + * Remove a call to abort() that crept into production + +1.6.1, 2007-01-20 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Fix some base64 decoder bugs + * Add a new option to base64 encoding, to always append a newline + * Fix some build problems under Visual Studio with debug enabled + * Fix a bug in BER_Decoder that was triggered under some compilers + +2006 +---------------------------------------- + +1.6.0, 2006-12-17 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Minor cleanups versus 1.5.13 + +1.5.13, 2006-12-10 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Compilation fixes for the bzip2, zlib, and GNU MP modules + * Better support for Intel C++ and EKOpath C++ on x86-64 + +1.5.12, 2006-10-27 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Cleanups in the initialization routines + * Add some x86-64 assembly for multiply-add + * Fix problems generating very small (below 384 bit) RSA keys + * Support out of tree builds + * Bring some of the documentation up to date + * More improvements to the Python bindings + +1.5.11, 2006-09-10 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Removed the Algorithm base class + * Various cleanups in the public key inheritance hierarchy + * Major overhaul of the configure/build setup + * Added x86 assembler implementations of Serpent and low-level MPI code + * Optimizations for the SHA-1 x86 assembler + * Various improvements to the Python wrappers + * Work around a Visual Studio compiler bug + +1.5.10, 2006-08-13 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Add x86 assembler versions of MD4, MD5, and SHA-1 + * Expand InitializerOptions' language to support on/off switches + * Fix definition of OID 2.5.4.8; was accidentally changed in 1.5.9 + * Fix possible resource leaks in the mmap allocator + * Slightly optimized buffering in MDx_HashFunction + * Initialization failures are dealt with somewhat better + * Add an example implementing Pollard's Rho algorithm + * Better option handling in the test/benchmark tool + * Expand the xor_ciph example to support longer keys + * Some updates to the documentation + +1.5.9, 2006-07-12 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Fixed bitrot in the AEP engine + * Fix support for marking certificate/CRL extensions as critical + * Significant cleanups in the library state / initialization code + * LibraryInitializer takes an explicit InitializerOptions object + * Make Mutex_Factory an abstract class, add Default_Mutex_Factory + * Change configuration access to using global_state() + * Add support for global named mutexes throughout the library + * Add some STL wrappers for the delete operator + * Change how certificates are created to be more flexible and general + +1.5.8, 2006-06-23 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Many internal cleanups to the X.509 cert/CRL code + * Allow for application code to support new X.509 extensions + * Change the return type of X509_Certificate::{subject,issuer}_info + * Allow for alternate character set handling mechanisms + * Fix a bug that was slowing squaring performance somewhat + * Fix a very hard to hit overflow bug in the C version of word3_muladd + * Minor cleanups to the assembler modules + * Disable es_unix module on FreeBSD due to build problem on FreeBSD 6.1 + * Support for GCC 2.95.x has been dropped in this release + +1.5.7, 2006-05-28 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Further, major changes to the BER/DER coding system + * Updated the Qt mutex module to use Mutex_Factory + * Moved the library global state object into an anonymous namespace + * Drop the Visual C++ x86 assembly module due to bugs + +1.5.6, 2006-03-01 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * The low-level DER/BER coding system was redesigned and rewritten + * Portions of the certificate code were cleaned up internally + * Use macros to substantially clean up the GCC assembly code + * Added 32-bit x86 assembly for Visual C++ (by Luca Piccarreta) + * Avoid a couple of spurious warnings under Visual C++ + * Some slight cleanups in X509_PublicKey::key_id + +1.5.5, 2006-02-04 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Fixed a potential infinite loop in the memory pool code (Matt Johnston) + * Made Pooling_Allocator::Memory_Block an actual class of sorts + * Some small optimizations to the division and modulo computations + * Cleaned up the implementation of some of the BigInt operators + * Reduced use of dynamic memory allocation in low-level BigInt functions + * A few simplifications in the Randpool mixing function + * Removed power(), as it was not particularly useful (or fast) + * Fixed some annoying bugs in the benchmark code + * Added a real credits file + +1.5.4, 2006-01-29 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Integrated x86 and amd64 assembly code, contributed by Luca Piccarreta + * Fixed a memory access off-by-one in the Karatsuba code + * Changed Pooling_Allocator's free list search to a log(N) algorithm + * Merged ModularReducer with its only subclass, Barrett_Reducer + * Fixed sign-handling bugs in some of the division and modulo code + * Renamed the module description files to modinfo.txt + * Further cleanups in the initialization code + * Removed BigInt::add and BigInt::sub + * Merged all the division-related functions into just divide() + * Modified the <mp_asmi.h> functions to allow for better optimizations + * Made the number of bits polled from an EntropySource user configurable + * Avoid including <algorithm> in <botan/secmem.h> + * Fixed some build problems with Sun Forte + * Removed some dead code from bigint_modop + * Fix the definition of same_mem + +1.5.3, 2006-01-24 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Many optimizations in the low-level multiple precision integer code + * Added hooks for assembly implementations of the MPI code + * Support for the X.509 issuer alternative name extension in new certs + * Fixed a bug in the decompression modules; found and patched by Matt Johnston + * New Windows mutex module (mux_win32), by Luca Piccarreta + * Changed the Windows timer module to use QueryPerformanceCounter + * mem_pool.cpp was using std::set iterators instead of std::multiset ones + * Fixed a bug in X509_CA preventing users from disabling particular extensions + * Fixed the mp_asm64 module, which was entirely broken in 1.5.2 + * Fixed some module build problems on FreeBSD and Tru64 + +1.5.2, 2006-01-15 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Fixed an off-by-one memory read in MISTY1::key() + * Fixed a nasty memory leak in Output_Buffers::retire() + * Reimplemented the memory allocator from scratch + * Improved memory caching in Montgomery exponentiation + * Optimizations for multiple precision addition and subtraction + * Fixed a build problem in the hardware timer module on 64-bit PowerPC + * Changed default Karatsuba cutoff to 12 words (was 14) + * Removed MemoryRegion::bits(), which was unused and incorrect + * Changed maximum HMAC keylength to 1024 bits + * Various minor Makefile and build system changes + * Avoid using std::min in <secmem.h> to bypass Windows libc macro pollution + * Switched checks/clock.cpp back to using clock() by default + * Enabled the symmetric algorithm tests, which were accidentally off in 1.5.1 + * Removed the Default_Mutex's unused clone() member function + +1.4.12, 2006-01-15 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Fixed an off-by-one memory read in MISTY1::key() + * Fixed a nasty memory leak in Output_Buffers::retire() + * Changed maximum HMAC keylength to 1024 bits + * Fixed a build problem in the hardware timer module on 64-bit PowerPC + +1.5.1, 2006-01-08 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Implemented Montgomery exponentiation + * Implemented generalized Karatsuba multiplication and squaring + * Implemented Comba squaring for 4, 6, and 8 word inputs + * Added new Modular_Exponentiator and Power_Mod classes + * Removed FixedBase_Exp and FixedExponent_Exp + * Fixed a performance regression in get_allocator introduced in 1.5.0 + * Engines can now offer S2K algorithms and block cipher padding methods + * Merged the remaining global 'algolist' code into Default_Engine + * The low-level MPI code is linked as C again + * Replaced BigInt's get_nibble with the more general get_substring + * Some documentation updates + +1.5.0, 2006-01-01 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Moved all global/shared library state into a single object + * Mutex objects are created through mutex factories instead of a global + * Removed ::get_mutex(), ::initialize_mutex(), and Mutex::clone() + * Removed the RNG_Quality enum entirely + * There is now only a single global-use PRNG + * Removed the no_aliases and no_oids options for LibraryInitializer + * Removed the deprecated algorithms SEAL, ISAAC, and HAVAL + * Change es_ftw to use unbuffered I/O + +2005 +---------------------------------------- + +1.4.11, 2005-12-31 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Changed Whirlpool diffusion matrix to match updated algorithm spec + * Fixed several engine module build errors introduced in 1.4.10 + * Fixed two build problems in es_capi; reported by Matthew Gregan + * Added a constructor to DataSource_Memory taking a std::string + * Placing the same Filter in multiple Pipes triggers an exception + * The configure script accepts --docdir and --libdir + * Merged doc/rngs.txt into the main API document + * Thanks to Joel Low for several bug reports on early tarballs of 1.4.11 + +1.4.10, 2005-12-18 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Added an implementation of KASUMI, the block cipher used in 3G phones + * Refactored Pipe; output queues are now managed by a distinct class + * Made certain Filter facilities only available to subclasses of Fanout_Filter + * There is no longer any overhead in Pipe for a message that has been read out + * It is now possible to generate RSA keys as small as 128 bits + * Changed some of the core classes to derive from Algorithm as a virtual base + * Changed Randpool to use HMAC instead of a plain hash as the mixing function + * Fixed a bug in the allocators; found and fixed by Matthew Gregan + * Enabled the use of binary file I/O, when requested by the application + * The OpenSSL engine's block cipher code was missing some deallocation calls + * Disabled the es_ftw module on NetBSD, due to header problems there + * Fixed a problem preventing tm_hard from building on MacOS X on PowerPC + * Some cleanups for the modules that use inline assembler + * config.h is now stored in build/ instead of build/include/botan/ + * The header util.h was split into bit_ops.h, parsing.h, and util.h + * Cleaned up some redundant include directives + +1.4.9, 2005-11-06 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Added the IBM-created AES candidate algorithm MARS + * Added the South Korean block cipher SEED + * Added the stream cipher Turing + * Added the new hash function FORK-256 + * Deprecated the ISAAC stream cipher + * Twofish and RC6 are significantly faster with GCC + * Much better support for 64-bit PowerPC + * Added support for high-resolution PowerPC timers + * Fixed a bug in the configure script causing problems on FreeBSD + * Changed ANSI X9.31 to support arbitrary block ciphers + * Make the configure script a bit less noisy + * Added more test vectors for some algorithms, including all the AES finalists + * Various cosmetic source code cleanups + +1.4.8, 2005-10-16 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Resolved a bad performance problem in the allocators; fix by Matt Johnston + * Worked around a Visual Studio 2003 compilation problem introduced in 1.4.7 + * Renamed OMAC to CMAC to match the official NIST naming + * Added single byte versions of update() to PK_Signer and PK_Verifier + * Removed the unused reverse_bits and reverse_bytes functions + +1.4.7, 2005-09-25 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Fixed major performance problems with recent versions of GNU C++ + * Added an implementation of the X9.31 PRNG + * Removed the X9.17 and FIPS 186-2 PRNG algorithms + * Changed defaults to use X9.31 PRNGs as global PRNG objects + * Documentation updates to reflect the PRNG changes + * Some cleanups related to the engine code + * Removed two useless headers, base_eng.h and secalloc.h + * Removed PK_Verifier::valid_signature + * Fixed configure/build system bugs affecting MacOS X builds + * Added support for the EKOPath x86-64 compiler + * Added missing destructor for BlockCipherModePaddingMethod + * Fix some build problems with Visual C++ 2005 beta + * Fix some build problems with Visual C++ 2003 Workshop + +1.4.6, 2005-03-13 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Fix an error in the shutdown code introduced in 1.4.5 + * Setting base/pkcs8_tries to 0 disables the builtin fail-out + * Support for XMPP identifiers in X.509 certificates + * Duplicate entries in X.509 DNs are removed + * More fixes for Borland C++, from Friedemann Kleint + * Add a workaround for buggy iostreams + +1.4.5, 2005-02-26 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Add support for AES encryption of private keys + * Minor fixes for PBES2 parameter decoding + * Internal cleanups for global state variables + * GCC 3.x version detection was broken in non-English locales + * Work around a Sun Forte bug affecting mem_pool.h + * Several fixes for Borland C++ 5.5, from Friedemann Kleint + * Removed inclusion of init.h into base.h + * Fixed a major bug in reading from certificate stores + * Cleaned up a couple of mutex leaks + * Removed some left-over debugging code + * Removed SSL3_MAC, SSL3_PRF, and TLS_PRF + +2004 +---------------------------------------- + +1.4.4, 2004-12-02 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Further tweaks to the pooling allocator + * Modified EMSA3 to support SSL/TLS signatures + * Changes to support Qt/QCA, from Justin Karneges + * Moved mux_qt module code into mod_qt + * Fixes for HP-UX from Mike Desjardins + +1.4.3, 2004-11-06 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Split up SecureAllocator into Allocator and Pooling_Allocator + * Memory locking allocators are more likely to be used + * Fixed the placement of includes in some modules + * Fixed broken installation procedure + * Fixes in configure script to support alternate install programs + * Modules can specify the minimum version they support + +1.4.2, 2004-10-31 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Fixed a major CRL handling bug + * Cipher and hash operations can be offloaded to engines + * Added support for cipher and hash offload in OpenSSL engine + * Improvements for 64-bit CPUs without a widening multiply instruction + * Support for SHA2-* and Whirlpool with EMSA2 + * Fixed a long-standing build problem with conflicting include files + * Fixed some examples that hadn't been updated for 1.4.x + * Portability fixes for Solaris, BSD, HP-UX, and others + * Lots of fixes and cleanups in the configure script + * Updated the Gentoo ebuild file + +1.4.1, 2004-10-10 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Fixed major errors in the X.509 and PKCS #8 copy_key functions + * Added a LAST_MESSAGE meta-message number for Pipe + * Added new aliases (3DES and DES-EDE) for Triple-DES + * Added some new functions to PK_Verifier + * Cleaned up the KDF interface + * Disabled tm_posix on BSD due to header issues + * Fixed a build problem on PowerPC with GNU C++ pre-3.4 + +1.4.0, 2004-06-26 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Added the FIPS 186 RNG back + * Added copy_key functions for X.509 public keys and PKCS #8 private keys + * Fixed PKCS #1 signatures with RIPEMD-128 + * Moved some code around to avoid warnings with Sun ONE compiler + * Fixed a bug in botan-config affecting OpenBSD + * Fixed some build problems on Tru64, HP-UX + * Fixed compile problems with Intel C++, Compaq C++ + +1.3.14, 2004-06-12 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Added support for AEP's AEP1000/AEP2000 crypto cards + * Added a Mutex module using Qt, from Justin Karneges + * Added support for engine loading in LibraryInitializer + * Tweaked SecureAllocator, giving 20% better performance under heavy load + * Added timer and memory locking modules for Win32 (tm_win32, ml_win32) + * Renamed PK_Engine to Engine_Core + * Improved the Karatsuba cutoff points + * Fixes for compiling with GCC 3.4 and Sun C++ 5.5 + * Fixes for Linux/s390, OpenBSD, and Solaris + * Added support for Linux/s390x + * The configure script was totally broken for 'generic' OS + * Removed Montgomery reduction due to bugs + * Removed an unused header, pkcs8alg.h + * check --validate returns an error code if any tests failed + * Removed duplicate entry in Unix command list for es_unix + * Moved the Cert_Usage enumeration into X509_Store + * Added new timing methods for PK benchmarks, clock_gettime and RDTSC + * Fixed a few minor bugs in the configure script + * Removed some deprecated functions from x509cert.h and pkcs10.h + * Removed the 'minimal' module, has to be updated for Engine support + * Changed MP_WORD_BITS macro to BOTAN_MP_WORD_BITS to clean up namespace + * Documentation updates + +1.3.13, 2004-05-15 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Major fixes for Cygwin builds + * Minor MacOS X install fixes + * The configure script is a little better at picking the right modules + * Removed ml_unix from the 'unix' module set for Cygwin compatibility + * Fixed a stupid compile problem in pkcs10.h + +1.3.12, 2004-05-02 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Added ability to remove old entries from CRLs + * Swapped the first two arguments of X509_CA::update_crl() + * Added an < operator for MemoryRegion, so it can be used as a std::map key + * Changed X.509 searching by DNS name from substring to full string compares + * Renamed a few X509_Certificate and PKCS10_Request member functions + * Fixed a problem when decoding some PKCS #10 requests + * Hex_Decoder would not check inputs, reported by Vaclav Ovsik + * Changed default CRL expire time from 30 days to 7 days + * X509_CRL's default PEM header is now "X509 CRL", for OpenSSL compatibility + * Corrected errors in the API doc, fixes from Ken Perano + * More documentation about the Pipe/Filter code + +1.3.11, 2004-04-01 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Fixed two show-stopping bugs in PKCS10_Request + * Added some sanity checks in Pipe/Filter + * The DNS and URI entries would get swapped in subjectAlternativeNames + * MAC_Filter is now willing to not take a key at creation time + * Setting the expiration times of certs and CRLs is more flexible + * Fixed problems building on AIX with GCC + * Fixed some problems in the tutorial pointed out by Dominik Vogt + * Documentation updates + +1.3.10, 2004-03-27 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Added support for OpenPGP's ASCII armor format + * Cleaned up the RNG system; seeding is much more flexible + * Added simple autoconfiguration abilities to configure.pl + * Fixed a GCC 2.95.x compile problem + * Updated the example configuration file + * Documentation updates + +1.3.9, 2004-03-07 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Added an engine using OpenSSL (requires 0.9.7 or later) + * X509_Certificate would lose email addresses stored in the DN + * Fixed a missing initialization in a BigInt constructor + * Fixed several Visual C++ compile problems + * Fixed some BeOS build problems + * Fixed the WiderWake benchmark + +2003 +---------------------------------------- + +1.3.8, 2003-12-30 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * 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 (requires 4.1 or later) + * 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, 2003-12-12 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * 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, 2003-12-07 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * 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, 2003-11-30 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * 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.2.8, 2003-11-21 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Merged several important bug fixes from 1.3.x + +1.3.4, 2003-11-21 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * 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 algorithms + * Some cleanups in the low-level MPI code + * Created separate AES-{128,192,256} objects + +1.3.3, 2003-11-17 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * 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, 2003-11-13 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * 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 super-encryption from ARC4 to WiderWake4+1 + * Cleaned up the base64/hex encoders and decoders + * Added an ASN.1/BER decoder as an example + * AES had its 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, 2003-11-04 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * 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, 2003-11-02 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * 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 + +1.2.7, 2003-10-31 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Added support for reading configuration files + * Added constructors so NR and RW keys can be imported easily + * Fixed mp_asm64, which was completely broken in 1.2.6 + * Removed tm_hw_ia32 module; replaced by tm_hard + * Added support for loading certain oddly formed RSA certificates + * Fixed spelling of NON_REPUDIATION enum + * Renamed the option default_to_ca to v1_assume_ca + * Fixed a minor bug in X.509 certificate generation + * Fixed a latent bug in the OID lookup code + * Updated the RPM spec file + * Added to the tutorial + +1.2.6, 2003-07-04 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Major performance increase for PK algorithms on most 64-bit systems + * Cleanups in the low-level MPI code to support asm implementations + * Fixed build problems with some versions of Compaq's C++ compiler + * Removed useless constructors for NR public and private keys + * Removed support for the patch_file directive in module files + * Removed several deprecated functions + +1.2.5, 2003-06-22 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Fixed a tricky and long-standing memory leak in Pipe + * Major cleanups and fixes in the memory allocation system + * Removed alloc_mlock, which has been superseded by the ml_unix module + * Removed a denial of service vulnerability in X509_Store + * Fixed compilation problems with VS .NET 2003 and Codewarrior 8 + * Added another variant of PKCS8::load_key, taking a memory buffer + * Fixed various minor/obscure bugs which occurred when MP_WORD_BITS != 32 + * BigInt::operator%=(word) was a no-op if the input was a power of 2 + * Fixed portability problems in BigInt::to_u32bit + * Fixed major bugs in SSL3-MAC + * Cleaned up some messes in the PK algorithms + * Cleanups and extensions for OMAC and EAX + * Made changes to the entropy estimation function + * Added a 'beos' module set for use on BeOS + * Officially deprecated a few X509:: and PKCS8:: functions + * Moved the contents of primes.h to numthry.h + * Moved the contents of x509opt.h to x509self.h + * Removed the (empty) desx.h header + * Documentation updates + +1.2.4, 2003-05-29 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Fixed a bug in EMSA1 affecting NR signature verification + * Fixed a few latent bugs in BigInt related to word size + * Removed an unused function, mp_add2_nc, from the MPI implementation + * Reorganized the core MPI files + +1.2.3, 2003-05-20 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Fixed a bug that prevented DSA/NR key generation + * Fixed a bug that prevented importing some root CA certs + * Fixed a bug in the BER decoder when handing optional bit or byte strings + * Fixed the encoding of authorityKeyIdentifier in X509_CA + * Added a sanity check in PBKDF2 for zero length passphrases + * Added versions of X509::load_key and PKCS8::load_key that take a file name + * X509_CA generates 128 bit serial numbers now + * Added tests to check PK key generation + * Added a simplistic X.509 CA example + * Cleaned up some of the examples + +1.2.2, 2003-05-13 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Add checks to prevent any BigInt bugs from revealing an RSA or RW key + * Changed the interface of Global_RNG::seed + * Major improvements for the es_unix module + * Added another Win32 entropy source, es_win32 + * The Win32 CryptoAPI entropy source can now poll multiple providers + * Improved the BeOS entropy source + * Renamed pipe_unixfd module to fd_unix + * Fixed a file descriptor leak in the EGD module + * Fixed a few locking bugs + +1.2.1, 2003-05-06 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Added ANSI X9.23 compatible CBC padding + * Added an entropy source using Win32 CryptoAPI + * Removed the Pipe I/O operators taking a FILE* + * Moved the BigInt encoding/decoding functions into the BigInt class + * Integrated several fixes for VC++ 7 (from Hany Greiss) + * Fixed the configure.pl script for Windows builds + +1.2.0, 2003-04-28 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Tweaked the Karatsuba cut-off points + * Increased the allowed keylength of HMAC and Blowfish + * Removed the 'mpi_ia32' module, pending rewrite + * Workaround a GCC 2.95.x bug in eme1.cpp + +1.1.13, 2003-04-22 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Added OMAC + * Added EAX authenticated cipher mode + * Diffie-Hellman would not do blinding in some cases + * Optimized the OFB and CTR modes + * Corrected Skipjack's word ordering, as per NIST clarification + * Support for all subject/issuer attribute types required by RFC 3280 + * The removeFromCRL CRL reason code is now handled correctly + * Increased the flexibility of the allocators + * Renamed Rijndael to AES, created aes.h, deleted rijndael.h + * Removed support for the 'no_timer' LibraryInitializer option + * Removed 'es_pthr' module, pending further testing + * Cleaned up get_ciph.cpp + +1.1.12, 2003-04-15 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Fixed a ASN.1 string encoding bug + * Fixed a pair of X509_DN encoding problems + * Base64_Decoder and Hex_Decoder can now validate input + * Removed support for the LibraryInitializer option 'egd_path' + * Added tests for DSA X.509 and PKCS #8 key formats + * Removed a long deprecated feature of DH_PrivateKey's constructor + * Updated the RPM .spec file + * Major documentation updates + +1.1.11, 2003-04-07 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Added PKCS #10 certificate requests + * Changed X509_Store searching interface to be more flexible + * Added a generic Certificate_Store interface + * Added a function for generating self-signed X.509 certs + * Cleanups and changes to X509_CA + * New examples for PKCS #10 and self-signed certificates + * Some documentation updates + +1.1.10, 2003-04-03 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * X509_CA can now generate new X.509 CRLs + * Added blinding for RSA, RW, DH, and ElGamal to prevent timing attacks + * More certificate and CRL extensions/attributes are supported + * Better DN handling in X.509 certificates/CRLs + * Added a DataSink hierarchy (suggested by Jim Darby) + * Consolidated SecureAllocator and ManagedAllocator + * Many cleanups and generalizations + * Added a (slow) pthreads based EntropySource + * Fixed some threading bugs + +1.1.9, 2003-02-25 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Added support for using X.509v2 CRLs + * Fixed several bugs in the path validation algorithm + * Certificates can be verified for a particular usage + * Algorithm for comparing distinguished names now follows X.509 + * Cleaned up the code for the es_beos, es_ftw, es_unix modules + * Documentation updates + +1.1.8, 2003-01-29 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Fixes for the certificate path validation algorithm in X509_Store + * Fixed a bug affecting X509_Certificate::is_ca_cert() + * Added a general configuration interface for policy issues + * Cleanups and API changes in the X.509 CA, cert, and store code + * Made various options available for X509_CA users + * Changed X509_Time's interface to work around time_t problems + * Fixed a theoretical weakness in Randpool's entropy mixing function + * Fixed problems compiling with GCC 2.95.3 and GCC 2.96 + * Fixed a configure bug (reported by Jon Wilson) affecting MinGW + +1.1.7, 2003-01-12 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Fixed an obscure but dangerous bug in SecureVector::swap + * Consolidated SHA-384 and SHA-512 to save code space + * Added SSL3-MAC and SSL3-PRF + * Documentation updates, including a new tutorial + +1.0.2, 2003-01-12 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Fixed an obscure SEGFAULT causing bug in Pipe + * Fixed an obscure but dangerous bug in SecureVector::swap + +2002 +---------------------------------------- + +1.1.6, 2002-12-10 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Initial support for X.509v3 certificates and CAs + * Major redesign/rewrite of the ASN.1 encoding/decoding code + * Added handling for DSA/NR signatures encoded as DER SEQUENCEs + * Documented the generic cipher lookup interface + * Added an (untested) entropy source for BeOS + * Various cleanups and bug fixes + +1.1.5, 2002-11-17 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Added the discrete logarithm integrated encryption system (DLIES) + * Various optimizations for BigInt + * Added support for assembler optimizations in modules + * Added BigInt x86 optimizations module (mpi_ia32) + +1.1.4, 2002-11-10 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Speedup of 15-30% for PK algorithms + * Implemented the PBES2 encryption scheme + * Fixed a potential bug in decoding RSA and RW private keys + * Changed the DL_Group class interface to handle different formats better + * Added support for PKCS #3 encoded DH parameters + * X9.42 DH parameters use a PEM label of 'X942 DH PARAMETERS' + * Added key pair consistency checking + * Fixed a compatibility problem with gcc 2.96 (pointed out by Hany Greiss) + * A botan-config script is generated at configure time + * Documentation updates + +1.1.3, 2002-11-03 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Added a generic public/private key loading interface + * Fixed a small encoding bug in RSA, RW, and DH + * Changed the PK encryption/decryption interface classes + * ECB supports using padding methods + * Added a function-based interface for library initialization + * Added support for RIPEMD-128 and Tiger PKCS#1 v1.5 signatures + * The cipher mode benchmarks now use 128-bit AES instead of DES + * Removed some obsolete typedefs + * Removed OpenCL support (opencl.h, the OPENCL_* macros, etc) + * Added tests for PKCS #8 encoding/decoding + * Added more tests for ECB and CBC + +1.1.2, 2002-10-21 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Support for PKCS #8 encoded RSA, DSA, and DH private keys + * Support for Diffie-Hellman X.509 public keys + * Major reorganization of how X.509 keys are handled + * Added PKCS #5 v2.0's PBES1 encryption scheme + * Added a generic cipher lookup interface + * Added the WiderWake4+1 stream cipher + * Added support for sync-able stream ciphers + * Added a 'paranoia level' option for the LibraryInitializer + * More security for RNG output meant for long term keys + * Added documentation for some of the new 1.1.x features + * CFB's feedback argument is now specified in bits + * Renamed CTR class to CTR_BE + * Updated the RSA and DSA examples to use X.509 and PKCS #8 key formats + +1.1.1, 2002-10-15 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Added the Korean hash function HAS-160 + * Partial support for RSA and DSA X.509 public keys + * Added a mostly functional BER encoder/decoder + * Added support for non-deterministic MAC functions + * Initial support for PEM encoding/decoding + * Internal cleanups in the PK algorithms + * Several new convenience functions in Pipe + * Fixed two nasty bugs in Pipe + * Messed with the entropy sources for es_unix + * Discrete logarithm groups are checked for safety more closely now + * For compatibility with GnuPG, ElGamal now supports DSA-style groups + +1.1.0, 2002-09-14 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Added entropy estimation to the RNGs + * Improved the overall design of both Randpool and ANSI_X917_RNG + * Added a separate RNG for nonce generation + * Added window exponentiation support in power_mod + * Added a get_s2k function and the PKCS #5 S2K algorithms + * Added the TLSv1 PRF + * Replaced BlockCipherModeIV typedef with InitializationVector class + * Renamed PK_Key_Agreement_Scheme to PK_Key_Agreement + * Renamed SHA1 -> SHA_160 and SHA2_x -> SHA_x + * Added support for RIPEMD-160 PKCS#1 v1.5 signatures + * Changed the key agreement scheme interface + * Changed the S2K and KDF interfaces + * Better SCAN compatibility for HAVAL, Tiger, MISTY1, SEAL, RC5, SAFER-SK + * Added support for variable-pass Tiger + * Major speedup for Rabin-Williams key generation + +1.0.1, 2002-09-14 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Fixed a minor bug in Randpool::random() + * Added some new aliases and typedefs for 1.1.x compatibility + * The 4096-bit RSA benchmark key was decimal instead of hex + * EMAC was returning an incorrect name + +1.0.0, 2002-08-26 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * 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, 2002-08-18 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * 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, 2002-08-10 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * 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, 2002-08-03 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * EMSA4 supports variable salt size + * PK_* can take a string naming the encoding method to use + * Started writing some internals documentation + +0.8.7, 2002-07-30 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * 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, 2002-07-25 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * 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, 2002-07-21 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * 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, 2002-07-14 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * 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, 2002-06-09 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * 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, 2002-05-18 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * 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, 2002-05-06 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * 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, 2002-04-24 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * 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, 2002-04-07 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Added EGD_EntropySource module (es_egd) + * Added a file tree walking EntropySource (es_ftw) + * Added MemoryLocking_Allocator module (alloc_mlock) + * Renamed the pthr_mux, unix_rnd, and mmap_mem modules + * Changed timer mechanism; the clock method can be switched on the fly. + * 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, 2002-03-19 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * 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, 2002-02-28 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * 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) + +2001 +---------------------------------------- + +0.7.7, 2001-11-24 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * 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, 2001-10-14 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * 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, 2001-08-19 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * 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 + * 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 + * Optimized CAST-256, DES, SAFER-SK, Serpent, SEAL, MD2, and RIPEMD-160 + * 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 + * Shared library soname is now set to the full version number + +0.7.4, 2001-07-15 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * 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, 2001-06-08 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * 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, 2001-06-03 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * Build system supports modules + * Added modules for mlock, a /dev/random EntropySource, POSIX1.b timers + * Added Bzip2 compression filter, 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, 2001-05-16 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * 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, 2001-03-01 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + * First public release |