aboutsummaryrefslogtreecommitdiffstats
path: root/doc/news.rst
diff options
context:
space:
mode:
Diffstat (limited to 'doc/news.rst')
-rw-r--r--doc/news.rst4165
1 files changed, 0 insertions, 4165 deletions
diff --git a/doc/news.rst b/doc/news.rst
deleted file mode 100644
index f88b480d0..000000000
--- a/doc/news.rst
+++ /dev/null
@@ -1,4165 +0,0 @@
-Release Notes
-========================================
-
-Version 1.11.34, Not Yet Released
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* Fix TLS session resumption bugs which caused resumption failures if an
- application used a single session cache for both TLS and DTLS. (GH #688)
-
-* Add MessageAuthenticationCode::start_msg interface, for MACs which require or
- can use a nonce (GH #691)
-
-* Add GMAC, a MAC based on GCM which requires a nonce (GH #488 / #691)
-
-* HMAC_DRBG allows configuring maximum number of bytes before a forced reseed
- (GH #690)
-
-* The deprecated RNGs HMAC_RNG and X9.31 RNG have been removed. Now the only
- userspace PRNG included in the library is HMAC_DRBG. (GH #692)
-
-* The entropy sources for EGD and BeOS, as well as the Unix entropy source which
- executed processes to get statistical data have been removed. (GH #692)
-
-* The openpgp module (which just implemented OpenPGP compatible base64 encoding
- and decoding, nothing else) has been removed.
-
-* Add more tests for Pipe/Filter (GH #689 #693)
-
-
-Version 1.11.33, 2016-10-26
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* Avoid side channel during OAEP decryption. (CVE-2016-8871)
-
-* A countermeasure for the Lucky13 timing attack against CBC-based TLS
- ciphersuites has been added. (GH #675)
-
-* Added X25519-based key exchange for TLS (GH #673)
-
-* Add Certificate_Store_In_SQL which supports storing certs, keys, and
- revocation information in a SQL database. Subclass Certificate_Store_In_SQLite
- specializes with support for SQLite3 databases. (GH #631)
-
-* The Certificate_Store interface has been changed to deal with
- ``std::shared_ptrs`` instead of raw pointers (GH #471 #631)
-
-* Add support for official SHA-3. Keccak-1600 was already supported
- but used different padding from FIPS 202. (GH #669)
-
-* Add SHAKE-128 based stream cipher. (GH #669)
-
-* NewHope key exchange now supports the SHA-256/AES-128-CTR scheme
- used by BoringSSL in addition to the SHA-3/SHAKE-128 parameters used
- by the reference implementation. (GH #669)
-
-* Add support for the TLS Supported Point Formats Extension from RFC 4492. Adds
- ``TLS::Policy::use_ecc_point_compression`` policy option. If supported on both
- sides, ECC points can be sent in compressed format which saves a few bytes
- during the handshake. (GH #645)
-
-* Fix entropy source selection bug on Windows, which caused the CryptoAPI
- entropy source to be not available under its normal name "win32_cryptoapi" but
- instead "dev_random". GH #644
-
-* Accept read-only access to ``/dev/urandom``. System_RNG previously required
- read-write access, to allow applications to provide inputs to the system
- PRNG. But local security policies might only allow read-only access, as is the
- case with Ubuntu's AppArmor profile for applications in the Snappy binary
- format. If opening read/write fails, System_RNG silently backs down to
- read-only, in which case calls to ``add_entropy`` on that object will fail.
- (GH #647 #648)
-
-* Fix use of Win32 CryptoAPI RNG as an entropy source, which was accidentally
- disabled due to empty list of acceptable providers being specified. Typically
- the library would fall back to gathering entropy from OS functions returning
- statistical information, but if this functionality was disabled in the build a
- ``PRNG_Unseeded`` exception would result. (GH #655)
-
-* Add support for building the library as part of the IncludeOS unikernel.
- This included making filesystem and threading support optional. (GH #665)
-
-* Added ISA annotations so that with GCC (all supported versions) and
- Clang (since 3.7) it is no longer required to compile amalgamation
- files with ABI specific flags such as ``-maes``. (GH #665)
-
-* Internal cleanups to TLS CBC record handling. TLS CBC ciphersuites
- can now be disabled by disabling ``tls_cbc`` module. (GH #642 #659)
-
-* Internal cleanups to the object lookup code eliminates most global locks and
- all use of static initializers (GH #668 #465)
-
-* Avoid ``static_assert`` triggering under MSVC debug builds (GH #646)
-
-* The antique PBKDF1 password hashing scheme is deprecated and will be
- removed in a future release. It was only used to support the equally
- ancient PBES1 private key encryption scheme, which was removed in 1.11.8.
-
-* Added MSVC debug/checked iterator builds (GH #666 #667)
-
-* Added Linux ppc64le cross compile target to Travis CI (GH #654)
-
-* If RC4 is disabled, also disable it coming from the OpenSSL provider (GH #641)
-
-* Add TLS message parsing tests (GH #640)
-
-* Updated BSI policy to prohibit DES, HKDF, HMAC_RNG (GH #649)
-
-* Documentation improvements (GH #660 #662 #663 #670)
-
-Version 1.11.32, 2016-09-28
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* Add support for the NewHope Ring-LWE key encapsulation algorithm. This scheme
- provides an estimated ~200 bit security level against a quantum attacker while
- also being very fast and requiring only modest message sizes of 1824 and 2048
- bytes for initiator and responder, resp. This version is tested as having
- bit-for-bit identical output as the reference implementation by the authors.
-
- Be warned that NewHope is still a very new scheme and may yet fall to analysis.
- For best assurance, NewHope should be used only in combination with another
- key exchange mechanism, such as ECDH.
-
-* New TLS callbacks API. Instead of numerous std::function callbacks, the
- application passes an object implementing the TLS::Callbacks interface, which
- has virtual functions matching the previous callbacks (plus some extras).
- Full source compatability with previous versions is maintained for now, but
- the old interface is deprecated and will be removed in a future release. The
- manual has been updated to reflect the changes. (GH #457 and #567)
-
-* Add support for TLS Encrypt-then-MAC extension (GH #492 and #578), which fixes
- the known issues in the TLS CBC-HMAC construction.
-
-* The format of the TLS session struct has changed (to support EtM), so old
- TLS session caches will be invalidated.
-
-* How the library presents optimized algorithm implementations has changed. For
- example with the algorithm AES-128, previously there were three BlockCipher
- classes AES_128, AES_128_SSSE3, and AES_128_NI which used (resp) a table-based
- implementation vulnerable to side channels, a constant time version using
- SSSE3 SIMD extensions on modern x86, and x86 AES-NI instructions. Using the
- correct version at runtime required using ``BlockCipher::create``. Now, only
- the class AES_128 is presented, and the best available version is always used
- based on CPUID checks. The tests have been extended to selectively disable
- CPUID bits to ensure all available versions are tested. (GH #477 #623)
-
- Removes API classes AES_128_NI, AES_192_NI, AES_256_NI, AES_128_SSSE3,
- AES_192_SSSE3 AES_256_SSSE3, IDEA_SSE2, Noekeon_SIMD, Serpent_SIMD,
- Threefish_512_AVX2, SHA_160_SSE2
-
-* The deprecated algorithms Rabin-Williams, Nyberg-Rueppel, MARS, RC2, RC5, RC6,
- SAFER-SK, TEA, MD2, HAS-160, and RIPEMD-128 have been removed. (GH #580)
-
-* A new Cipher_Mode interface ``process`` allows encryption/decryption of
- buffers without requiring copying into ``secure_vector`` first. (GH #516)
-
-* Fix verification of self-issued certificates (GH #634)
-
-* SSE2 optimizations for ChaCha, 60% faster on both Westmere and Skylake (GH #616)
-
-* The HMAC_RNG constructor added in 1.11.31 that took both an RNG and an
- entropy source list ignored the entropy sources.
-
-* The configure option ``--via-amalgamation`` was renamed to ``--amalgamation``.
- The configure option ``--gen-amalgamation`` was removed. It did generate
- amalgamations but build Botan without amalgamation. Users should migrate to
- ``--amalgamation``. (GH #621)
-
-* DH keys did not automatically self-test after being generated, contrary to
- the current behavior for other key types.
-
-* Add tests for TLS 1.2 PRF (GH #628)
-
-Version 1.11.31, 2016-08-30
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* Fix undefined behavior in Curve25519 on platforms without a native 128-bit
- integer type. This was known to produce incorrect results on 32-bit ARM
- under Clang. GH #532 (CVE-2016-6878)
-
-* If X509_Certificate::allowed_usage was called with more than one Key_Usage
- set in the enum value, the function would return true if *any* of the allowed
- usages were set, instead of if *all* of the allowed usages are set.
- GH #591 (CVE-2016-6879)
-
-* Incompatible changes in DLIES: Previously the input to the KDF was
- the concatenation of the (ephemeral) public key and the secret value
- derived by the key agreement operation. Now the input is only the
- secret value obtained by the key agreement operation. That's how it
- is specified in the original paper "DHIES: An encryption scheme
- based on Diffie-Hellman Problem" or in BSI technical guideline
- TR-02102-1 for example. In addition to the already present
- XOR-encrypion/decryption mode it's now possible to use DLIES with a
- block cipher. Furthermore the order of the output was changed from
- {public key, tag, ciphertext} to {public key, ciphertext, tag}. Both
- modes are compatible with BouncyCastle.
-
-* Add initial PKCS #11 support (GH #507). Currently includes a low level
- wrapper to all of PKCS #11 (p11.h) and high level code for RSA and ECDSA
- signatures and hardware RNG access.
-
-* Add ECIES encryption scheme, compatible with BouncyCastle (GH #483)
-
-* Add ECKCDSA signature algorithm (GH #504)
-
-* Add KDF1 from ISO 18033 (GH #483)
-
-* Add FRP256v1 curve (GH #551)
-
-* Changes for userspace PRNGs HMAC_DRBG and HMAC_RNG (GH #520 and #593)
-
- These RNGs now derive from Stateful_RNG which handles issues like periodic
- reseeding and (on Unix) detecting use of fork. Previously these measures were
- included only in HMAC_RNG.
-
- Stateful_RNG allows reseeding from another RNG and/or a specified set of
- entropy sources. For example it is possible to configure a HMAC_DRBG to reseed
- using a PKCS #11 token RNG, the CPU's RDSEED instruction, and the system RNG
- but disabling all other entropy polls.
-
-* AutoSeeded_RNG now uses NIST SP800-90a HMAC_DRBG(SHA-384). (GH #520)
-
-* On Windows and Unix systems, the system PRNG is used as the sole reseeding
- source for a default AutoSeeded_RNG, completely skipping the standard entropy
- polling code. New constructors allow specifying the reseed RNG and/or entropy
- sources. (GH #520)
-
-* The `hres_timer` entropy source module has been removed. Timestamp inputs to
- the RNG are now handled as additional_data inputs to HMAC_DRBG.
-
-* Add RDRAND_RNG which directly exposes the CPU RNG (GH #543)
-
-* Add PKCS #1 v1.5 id for SHA-512/256 (GH #554)
-
-* Add X509_Time::to_std_timepoint (GH #560)
-
-* Fix a bug in ANSI X9.23 padding mode, which returned one byte more
- than the given block size (GH #529).
-
-* Fix bug in SipHash::clear, which did not reset all state (GH #547)
-
-* Fixes for FreeBSD (GH #517) and OpenBSD (GH #523). The compiler defaults
- to Clang on FreeBSD now.
-
-* SonarQube static analysis integration (GH #592)
-
-* Switched Travis CI to Ubuntu 14.04 LTS (GH #592)
-
-* Added ARM32, ARM64, PPC32, PPC64, and MinGW x86 cross compile targets to Travis CI (GH #608)
-
-* Clean up in TLS ciphersuite handling (GH #583)
-
-* Threefish-512 AVX2 optimization work (GH #581)
-
-* Remove build configuration host and timestamp from build.h
- This makes this header reproducible and allows using ccache's direct mode
- (GH #586 see also #587)
-
-* Prevent building for x86-64 with x86-32 compiler and the reverse (GH #585)
-
-* Avoid build problem on 32-bit userspace ARMv8 (GH #563)
-
-* Refactor of internal MP headers (GH #549)
-
-* Avoid MSVC C4100 warning (GH #525)
-
-* Change botan.exe to botan-cli.exe on Windows to workaround VC issue (GH #584)
-
-* More tests for RSA-KEM (GH #538), DH (GH #556), EME (GH #553),
- cipher mode padding (GH #529), CTS mode (GH #531),
- KDF1/ISO18033 (GH #537), OctetString (GH #545), OIDs (GH #546),
- parallel hash (GH #548), charset handling (GH #555),
- BigInt (GH #558), HMAC_DRBG (GH #598 #600)
-
-* New deprecations. See the full list in doc/deprecated.txt
-
- The X9.31 and HMAC_RNG RNGs are deprecated.
- If you need a userspace PRNG, use HMAC_DRBG (or AutoSeeded_RNG
- which is HMAC_DRBG with defaults).
-
- Support for getting entropy from EGD is deprecated, and will be
- removed in a future release. The developers believe that it is
- unlikely that any modern system requires EGD and so the code is now
- dead weight. If you rely on EGD support, you should contact the
- developers by email or GitHub ASAP.
-
- The TLS ciphersuites using 3DES and SEED are deprecated and will be
- removed in a future release.
-
- ECB mode Cipher_Mode is deprecated and will be removed in a future
- release.
-
- Support for BeOS/Haiku has not been tested in 5+ years and is in an
- unknown state. Unless reports are received of successful builds and
- use on this platform, support for BeOS/Haiku will be removed in a
- future release.
-
-Version 1.11.30, 2016-06-19
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* In 1.11.23 a bug was introduced such that CBC-encrypted TLS packets
- containing no plaintext bytes at all were incorrectly rejected with
- a MAC failure. Records like this are used by OpenSSL in TLS 1.0
- connections in order to randomize the IV.
-
-* A bug in GCM caused incorrect results if the 32-bit counter field
- overflowed. This bug has no implications on the security but affects
- interoperability.
-
- With a 96-bit nonce, this could only occur if at least 2**32 128-bit
- blocks (64 GiB) were encrypted. This actually exceeds the maximum
- allowable length of a GCM plaintext; when messages longer than
- 2**32 - 2 blocks are encrypted, GCM loses its security properties.
-
- In addition to 96-bit nonces, GCM also supports nonces of arbitrary
- length using a different method which hashes the provided nonce
- under the authentication key. When using such a nonce, the last 4
- bytes of the resulting CTR input might be near the overflow
- boundary, with the probability of incorrect overflow increasing with
- longer messages. when encrypting 256 MiB of data under a random 128
- bit nonce, an incorrect result would be produced about 1/256 of the
- time. With 1 MiB texts, the probability of error is reduced to 1/65536.
-
- Since TLS uses GCM with 96 bit nonces and limits the length of any
- record to far less than 64 GiB, TLS GCM ciphersuites are not
- affected by this bug.
-
- Reported by Juraj Somorovsky, described also in "Nonce-Disrespecting
- Adversaries: Practical Forgery Attacks on GCM in TLS"
- (https://eprint.iacr.org/2016/475.pdf)
-
-* Previously when generating a new self-signed certificate or PKCS #10
- request, the subject DN was required to contain both common name
- (CN) and country (C) fields. These restrictions have been removed.
- GH #496
-
-* The Transform and Keyed_Transform interfaces has been removed. The
- two concrete implementations of these interfaces were Cipher_Mode
- and Compressor_Transform. The Cipher_Mode interface remains unchanged
- as the Transform and Keyed_Transform signatures have moved to it;
- no changes to Cipher_Mode usage should be necessary. Any uses of
- Transform& or Keyed_Transform& to refer to a cipher should be replaced
- by Cipher_Mode&. The compression algorithm interface has changed; the start
- function now takes the per-message compression ratio to use. Previously the
- compression level to use had to be set once, at creation time, and
- the required ``secure_vector`` argument to ``start`` was required to be empty.
- The new API is documented in `compression.rst` in the manual.
-
-* Add IETF versions of the ChaCha20Poly1305 TLS ciphersuites from
- draft-ietf-tls-chacha20-poly1305-04. The previously implemented
- (non-standard) ChaCha20Poly1305 ciphersuites from
- draft-agl-tls-chacha20poly1305 remain but are deprecated.
-
-* The OCB TLS ciphersuites have been updated to use the new nonce
- scheme from draft-zauner-tls-aes-ocb-04. This is incompatible with
- previous versions of the draft, and the ciphersuite numbers used for
- the (still experimental) OCB ciphersuites have changed.
-
-* Previously an unknown critical extension caused X.509 certificate
- parsing to fail; such a cert could not be created at all. Now
- parsing succeeds and the certificate validation fails with
- an error indicating an unknown critical extension. GH #469
-
-* X509_CRL previously had an option to cause it to ignore unknown
- critical extensions. This has been removed.
-
-* Added StreamCipher::seek allowing seeking to arbitrary position
- in the key stream. Currently only implemented for ChaCha. (GH #497)
-
-* Added support for ChaCha stream cipher with 8 or 12 rounds.
-
-* Add ECGDSA signature algorithm (GH #479)
-
-* Add support for label argument to KDFs (GH #495)
-
-* Add NIST SP800-108 and 56C KDFs (GH #481)
-
-* Support for Card Verifiable Certificates and the obsolete EMSA1_BSI
- signature padding scheme have been removed. (GH #487)
-
-* A bug in the IETF version of ChaCha20Poly1305 (with 96 bit nonces)
- caused incorrect computation when the plaintext or AAD was exactly
- a multiple of 16 bytes.
-
-* Fix return type of TLS_Reader::get_u32bit, which was truncated to
- 16 bits. This only affected decoding of session ticket lifetimes.
- GH #478
-
-* Fix OS X dylib naming problem (GH #468 #467)
-
-* Fix bcrypt function under Python 3 (GH #461)
-
-* The ``unix_procs`` entropy source is deprecated and will be removed
- in a future release. This entropy source attempts to get entropy by
- running Unix programs like ``arp``, ``netstat``, and ``dmesg`` which
- produce information which may be difficult for a remote attacker to
- guess. This exists primarily as a last-ditch for Unix systems
- without ``/dev/random``. But at this point such systems effectively
- no longer exist, and the use of ``fork`` and ``exec`` by the library
- complicates effective application sandboxing.
-
-* Changes to avoid implicit cast warnings in Visual C++ (GH #484)
-
-Version 1.10.13, 2016-04-23
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* Use constant time modular inverse algorithm to avoid possible
- side channel attack against ECDSA (CVE-2016-2849)
-
-* Use constant time PKCS #1 unpadding to avoid possible side channel
- attack against RSA decryption (CVE-2015-7827)
-
-* Avoid a compilation problem in OpenSSL engine when ECDSA was
- disabled. Gentoo bug 542010
-
-Version 1.11.29, 2016-03-20
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* CVE-2016-2849 DSA and ECDSA used a modular inverse function which
- had input dependent loops. It is possible a side channel attack on
- this function could be used to recover sufficient information about
- the nonce k to mount a lattice attack and recover the private key.
- Found by Sean Devlin.
-
-* CVE-2016-2850 The TLS client did not check that the signature
- algorithm or ECC curve a v1.2 server used was actually acceptable by
- the policy. This would allow a server who ignored the preferences
- indicated in the client to use a weak algorithm, and may allow MITM
- attacks by an attacker who can break MD5 signatures or 160 bit ECC
- in real time. The server similarly failed to check on the hash a
- client used during client certificate authentication.
-
-* Reject empty TLS records at the record processing layer since such a
- record is not valid regardless of the record type. Later checks
- already correctly rejected empty records, but during processing such
- a record, a pointer to the end of the vector was created, causing a
- assertion failure under checked iterators. Found by Juraj Somorovsky.
-
-* Add PK_Decryptor::decrypt_or_random which allows an application to
- atomically (in constant time) check that a decrypted ciphertext has
- the expected length and/or apply content checks on the result. This
- is used by the TLS server for decrypting PKCS #1 v1.5 RSA ciphertexts.
- Previously the server used a implementation which was potentially
- vulnerable to side channels.
-
-* Add support for processing X.509 name constraint extension during
- path validation. GH #454
-
-* Add X509_Certificate::v3_extensions which allows retreiving the
- raw binary of all certificate extensions, including those which
- are not known to the library. This allows processing of custom
- extensions. GH #437
-
-* Add support for module policies which are a preconfigured set of
- acceptable or prohibited modules. A policy based on BSI TR-02102-1
- is included. GH #439 #446
-
-* Support for the deprecated TLS heartbeat extension has been removed.
-
-* Support for the deprecated TLS minimum fragment length extension has
- been removed.
-
-* SRP6 support is now optional in TLS
-
-* Support for negotiating MD5 and SHA-224 signatures in TLS v1.2 has
- been removed. MD5 signatures are demonstratably insecure in TLS,
- SHA-224 is rarely used.
-
-* Support for negotiating ECC curves secp160r1, secp160r2, secp160k1,
- secp192k1, secp192r1 (P-192), secp224k1, secp224r1 (P-224), and
- secp256k1 have been removed from the TLS implementation. All were
- already disabled in the default policy.
-
-* HMAC_RNG now has an explicit check for fork using pid comparisons.
- It also includes the pid and system and CPU clocks into the PRF
- computation to help reduce the risk of pid wraparound. Even so,
- applications using fork and userspace RNGs should explicitly reseed
- all such RNGs whenever possible.
-
-* Deprecation warning: support for DSA certificates in TLS is
- deprecated and will be removed in a future release.
-
-* Deprecation warning: in addition to the algorithms deprecated in
- 1.11.26, the following algorithms are now deprecated and will be
- removed in a future release: Rabin-Williams signatures, TEA, XTEA.
-
-* Deprecation warning: the library has a number of compiled in MODP
- and ECC DL parameters. All MODP parameter sets under 2048 bits and
- all ECC parameters under 256 bits are deprecated and will be removed
- in a future release. This includes the MODP groups "modp/ietf/1024",
- "modp/srp/1024", "modp/ietf/1536", "modp/srp/1536" and the ECC
- groups "secp160k1", "secp160r1", "secp160r2", "secp192k1",
- "secp192r1", "secp224k1", "secp224r1", "brainpool160r1",
- "brainpool192r1", "brainpool224r1", "x962_p192v2", "x962_p192v3",
- "x962_p239v1", "x962_p239v2" and "x962_p239v3". Additionally all
- compiled in DSA parameter sets ("dsa/jce/1024", "dsa/botan/2048",
- and "dsa/botan/3072") are also deprecated.
-
-* RDSEED/RDRAND polling now retries if the operation fails. GH #373
-
-* Fix various minor bugs found by static analysis with PVS-Studio (GH#421),
- Clang analyzer (GH #441), cppcheck (GH #444, #445), and Coverity.
-
-* Add --with-valgrind configure option to enable building against the
- valgrind client API. This currently enables checking of const time
- operations using memcheck.
-
-* Fix remaining Wshadow warnings. Enable Wshadow in build. GH #427
-
-* Use noexcept in VS 2015 GH #429
-
-* On Windows allow the user to explicitly request symlinks be used
- as part of the build. Likely only useful for someone working on
- the library itself. GH #430
-
-* Remove use of TickCount64 introduced in 1.11.27 which caused problem
- with downstream distributors/users building XP compatiable binaries
- which is still an option even in VS 2015
-
-* MCEIES requires KDF1 at runtime but did not require it be enabled
- in the build. GH #369
-
-* Small optimizations to Keccak hash
-
-* Support for locking allocator on Windows using VirtualLock. GH #450
-
-Version 1.18.15, 2016-02-13
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-* NOTE WELL: Botan 1.8 is not supported for security issues anymore.
- Moving to 1.10 or 1.11 is certainly recommended.
-* Fix CVE-2014-9742: Insufficient randomness in Miller-Rabin primality check
-* Fix CVE-2016-2194: Infinite loop in modulur square root algorithm
-* Fix CVE-2015-5726: Crash in BER decoder
-* Fix CVE-2015-5727: Excess memory allocation in BER decoder
- Note: Unlike the fix in 1.10 which checks that the source actually
- contains enough data to satisfy the read before allocating the
- memory, 1.8.15 simply rejects all ASN.1 blocks larger than 1 MiB.
- This simpler check avoids the problem without breaking ABI.
-
-Version 1.10.12, 2016-02-03
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* In 1.10.11, the check in PointGFp intended to check the affine y
- argument actually checked the affine x again. Reported by Remi Gacogne
-
- The CVE-2016-2195 overflow is not exploitable in 1.10.11 due to an
- additional check in the multiplication function itself which was
- also added in that release, so there are no security implications
- from the missed check. However to avoid confusion the change was
- pushed in a new release immediately.
-
- The 1.10.11 release notes incorrectly identified CVE-2016-2195 as CVE-2016-2915
-
-Version 1.10.11, 2016-02-01
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* Resolve heap overflow in ECC point decoding. CVE-2016-2195
-
-* Resolve infinite loop in modular square root algorithm.
- CVE-2016-2194
-
-* Correct BigInt::to_u32bit to not fail on integers of exactly 32 bits.
- GH #239
-
-Version 1.11.28, 2016-02-01
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* One of the checks added while addressing CVE-2016-2195 was incorrect
- and could cause needless assertion failures.
-
-Version 1.11.27, 2016-02-01
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* SECURITY: Avoid heap overflow in ECC point decoding. This could
- likely result in remote code execution. CVE-2016-2195
-
-* SECURITY: Avoid one word heap overflow in P-521 reduction function.
- This could potentially lead to remote code execution or other
- attack. CVE-2016-2196.
-
-* SECURITY: Avoid infinite or near-infinite loop during modular square
- root algorithm with invalid inputs. CVE-2016-2194
-
-* Add Blake2b hash function. GH #413
-
-* Use m_ prefix on all member variables. GH #398 and #407
-
-* Use final qualifier on many classes. GH #408
-
-* Use noreturn attribute on assertion failure function to assist
- static analysis. GH #403
-
-* Use TickCount64 and MemoryStatusEx in the Windows entropy source.
- Note these calls are only available in Vista/Server 2008. No
- accomodations are made for XP or Server 2003, both of which are
- no longer patched by the vendor. GH #365
-
-Version 1.11.26, 2016-01-04
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* Deprecation warnings: Nyberg-Rueppel signatures, MARS, RC2, RC5,
- RC6, SAFER, HAS-160, RIPEMD-128, MD2 and support for the TLS minimum
- fragment length extensions are all being considered for removal in a
- future release. If there is a compelling use case for keeping any of
- them in the library, please open a discussion ticket on GitHub.
-
-* Support for the TLS extended master secret extension (RFC 7627) has
- been added.
-
-* The format of serialized TLS sessions has changed to add a flag
- indicating support for the extended master secret flag, which is
- needed for proper handling of the extension.
-
-* Root all exceptions thrown by the library in the ``Botan::Exception`` class.
- Previously the library would in many cases throw ``std::runtime_error``
- or ``std::invalid_argument`` exceptions which would make it hard to
- determine the source of the error in some cases.
-
-* The command line interface has been mostly rewritten. The syntax of
- many of the sub-programs has changed, and a number have been
- extended with new features and options.
-
-* Correct an error in PointGFp multiplication when multiplying a point
- by the scalar value 3. PointGFp::operator* would instead erronously
- compute it as if the scalar was 1 instead.
-
-* Enable RdRand entropy source on Windows/MSVC. GH #364
-
-* Add Intel's RdSeed as entropy source. GH #370
-
-* Add preliminary support for accessing TPM v1.2 devices. Currently
- random number generation, RSA key generation, and signing are
- supported. Tested using Trousers and an ST TPM
-
-* Add generalized interface for KEM (key encapsulation) techniques. Convert
- McEliece KEM to use it. The previous interfaces McEliece_KEM_Encryptor and
- McEliece_KEM_Decryptor have been removed. The new KEM interface now uses a KDF
- to hash the resulting keys; to get the same output as previously provided by
- McEliece_KEM_Encryptor, use "KDF1(SHA-512)" and request exactly 64 bytes.
-
-* Add support for RSA-KEM from ISO 18033-2
-
-* Add support for ECDH in the OpenSSL provider
-
-* Fix a bug in DataSource::discard_next() which could cause either an
- infinite loop or the discarding of an incorrect number of bytes.
- Reported on mailing list by Falko Strenzke.
-
-* Previously if BOTAN_TARGET_UNALIGNED_MEMORY_ACCESS_OK was defined,
- the code doing low level loads/stores would use pointer casts to
- access larger words out of a (potentially misaligned) byte array,
- rather than using byte-at-a-time accesses. However even on platforms
- such as x86 where this works, it triggers UBSan errors under Clang.
- Instead use memcpy, which the C standard says is usable for such
- purposes even with misaligned values. With recent GCC and Clang, the
- same code seems to be emitted for either approach.
-
-* Avoid calling memcpy, memset, or memmove with a length of zero to
- avoid undefined behavior, as calling these functions with an invalid
- or null pointer, even with a length of zero, is invalid. Often there
- are corner cases where this can occur, such as pointing to the very
- end of a buffer.
-
-* The function ``RandomNumberGenerator::gen_mask`` (added in 1.11.20)
- had undefined behavior when called with a bits value of 32 or
- higher, and was tested to behave in unpleasant ways (such as
- returning zero) when compiled by common compilers. This function was
- not being used anywhere in the library and rather than support
- something without a use case to justify it it seemed simpler to
- remove it. Undefined behavior found by Daniel Neus.
-
-* Support for using ``ctgrind`` for checking const time blocks has
- been replaced by calling the valgrind memcheck APIs directly. This
- allows const-time behavior to be tested without requiring a modified
- valgrind binary. Adding the appropriate calls requires defining
- BOTAN_HAS_VALGRIND in build.h. A binary compiled with this flag set
- can still run normally (though with some slight runtime overhead).
-
-* Export MGF1 function mgf1_mask GH #380
-
-* Work around a problem with some antivirus programs which causes the
- ``shutil.rmtree`` and ``os.makedirs`` Python calls to occasionally
- fail. The could prevent ``configure.py`` from running sucessfully
- on such systems. GH #353
-
-* Let ``configure.py`` run under CPython 2.6. GH #362
-
-Version 1.11.25, 2015-12-07
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* In this release the test suite has been largely rewritten. Previously the
- tests had internally used several different test helper frameworks created or
- adopted over time, each of which was insufficient on its own for testing the
- entire library. These have been fully converged on a new framework which
- suffices for all of the tests. There should be no user-visible change as a
- result of this, except that the output format of `botan-test` has changed.
-
-* Improved side channel countermeasures for the table based AES implementation.
- The 4K T tables are computed (once) at runtime to avoid various cache based
- attacks which are possible due to shared VMM mappings of read only tables.
- Additionally every cache line of the table is read from prior to processing
- the block(s).
-
-* Support for the insecure ECC groups secp112r1, secp112r2, secp128r1, and
- secp128r2 has been removed.
-
-* The portable version of GCM has been changed to run using only
- constant time operations.
-
-* Work around a bug in MSVC 2013 std::mutex which on some Windows
- versions can result in a deadlock during static initialization. On
- Windows a CriticalSection is used instead. Analysis and patch from
- Matej Kenda (TopIT d.o.o.). GH #321
-
-* The OpenSSL implementation of RC4 would return the wrong value from `name` if
- leading bytes of the keystream had been skipped in the output.
-
-* Fixed the signature of the FFI function botan_pubkey_destroy, which took the
- wrong type and was not usable.
-
-* The TLS client would erronously reject any server key exchange packet smaller
- than 6 bytes. This prevented negotiating a plain PSK TLS ciphersuite with an
- empty identity hint. ECDHE_PSK and DHE_PSK suites were not affected.
-
-* Fixed a bug that would cause the TLS client to occasionally reject a valid
- server key exchange message as having an invalid signature. This only affected
- DHE and SRP ciphersuites.
-
-* Support for negotiating use of SHA-224 in TLS has been disabled in the
- default policy.
-
-* Added `remove_all` function to the `TLS::Session_Manager` interface
-
-* Avoid GCC warning in pedantic mode when including bigint.h GH #330
-
-Version 1.11.24, 2015-11-04
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* When the bugs affecting X.509 path validation were fixed in 1.11.23, a check
- in Credentials_Manager::verify_certificate_chain was accidentally removed
- which caused path validation failures not to be signaled to the TLS layer.
- Thus in 1.11.23 certificate authentication in TLS is bypassed.
- Reported by Florent Le Coz in GH #324
-
-* Fixed an endian dependency in McEliece key generation which caused
- keys to be generated differently on big and little endian systems,
- even when using a deterministic PRNG with the same seed.
-
-* In `configure,py`, the flags for controlling use of debug, sanitizer, and
- converage information have been split out into individual options
- `--with-debug-info`, `--with-sanitizers`, and `--with-coverage`. These allow
- enabling more than one in a build in a controlled way. The `--build-mode` flag
- added in 1.11.17 has been removed.
-
-Version 1.11.23, 2015-10-26
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* CVE-2015-7824: An information leak allowed padding oracle attacks against
- TLS CBC decryption. Found in a review by Sirrix AG and 3curity GmbH.
-
-* CVE-2015-7825: Validating a malformed certificate chain could cause an
- infinite loop. Found in a review by Sirrix AG and 3curity GmbH.
-
-* CVE-2015-7826: X.509 path validation violated RFC 6125 and would accept
- certificates which should not validate under those rules. In particular botan
- would accept wildcard certificates as matching in situations where it should
- not (for example it would erroneously accept '*.example.com' as a valid
- wildcard for 'foo.bar.example.com')
-
-* CVE-2015-7827: The routines for decoding PKCS #1 encryption and OAEP blocks
- have been rewritten to run without secret indexes or branches. These
- cryptographic operations are vulnerable to oracle attacks, including via side
- channels such as timing or cache-based analysis. In theory it would be
- possible to attack the previous implementations using such a side channel,
- which could allow an attacker to mount a plaintext recovery attack.
-
- By writing the code such that it does not depend on secret inputs for branch
- or memory indexes, such a side channel would be much less likely to exist.
-
- The OAEP code has previously made an attempt at constant time operation, but
- it used a construct which many compilers converted into a conditional jump.
-
-* Add support for using ctgrind (https://github.com/agl/ctgrind) to test that
- sections of code do not use secret inputs to decide branches or memory indexes.
- The testing relies on dynamic checking using valgrind.
-
- So far PKCS #1 decoding, OAEP decoding, Montgomery reduction, IDEA, and
- Curve25519 have been notated and confirmed to be constant time on Linux/x86-64
- when compiled by gcc.
-
-* Public key operations can now be used with specified providers by passing an
- additional parameter to the constructor of the PK operation.
-
-* OpenSSL RSA provider now supports signature creation and verification.
-
-* The blinding code used for RSA, Diffie-Hellman, ElGamal and Rabin-Williams now
- periodically reinitializes the sequence of blinding values instead of always
- deriving the next value by squaring the previous ones. The reinitializion
- interval can be controlled by the build.h parameter BOTAN_BLINDING_REINIT_INTERVAL.
-
-* A bug decoding DTLS client hellos prevented session resumption for succeeding.
-
-* DL_Group now prohibits creating a group smaller than 1024 bits.
-
-* Add System_RNG type. Previously the global system RNG was only accessible via
- `system_rng` which returned a reference to the object. However is at times
- useful to have a unique_ptr<RandomNumberGenerator> which will be either the
- system RNG or an AutoSeeded_RNG, depending on availability, which this
- additional type allows.
-
-* New command line tools `dl_group` and `prime`
-
-* The `configure.py` option `--no-autoload` is now also available
- under the more understandable name `--minimized-build`.
-
-* Note: 1.11.22 was briefly released on 2015-10-26. The only difference between
- the two was a fix for a compilation problem in the OpenSSL RSA code. As the
- 1.11.22 release had already been tagged it was simpler to immediately release
- 1.11.23 rather than redo the release.
-
-Version 1.11.21, 2015-10-11
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* Add new methods for creating types such as BlockCiphers or HashFunctions,
- T::providers() returning list of provider for a type, and T::create() creating
- a new object of a specified provider. The functions in lookup.h forward to
- these new APIs. A change to the lookup system in 1.11.14 had caused problems
- with static libraries (GH #52). These problems have been fixed as part of these
- changes. GH #279
-
-* Fix loading McEliece public or private keys with PKCS::load_key / X509::load_key
-
-* Add `mce` command line tool for McEliece key generation and file encryption
-
-* Add Darwin_SecRandom entropy source which uses `SecRandomCopyBytes`
- API call for OS X and iOS, as this call is accessible even from a
- sandboxed application. GH #288
-
-* Add new HMAC_DRBG constructor taking a name for the MAC to use, rather
- than a pointer to an object.
-
-* The OCaml module is now a separate project at
- https://github.com/randombit/botan-ocaml
-
-* The encrypted sqlite database support in contrib has moved to
- https://github.com/randombit/botan-sqlite
-
-* The Perl XS module has been removed as it was no longer maintained.
-
-Version 1.11.20, 2015-09-07
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* Additional countermeasures were added to ECC point multiplications
- including exponent blinding and randomization of the point
- representation to help protect against side channel attacks.
-
-* An ECDSA provider using OpenSSL has been added.
-
-* The ordering of algorithm priorities has been reversed. Previously
- 255 was the lowest priority and 0 was the highest priority. Now it
- is the reverse, with 0 being lowest priority and 255 being highest.
- The default priority for the base algorithms is 100. This only
- affects external providers or applications which directly set
- provider preferences.
-
-* On OS X, rename libs to avoid trailing version numbers, e.g.
- libbotan-1.11.dylib.19 -> libbotan-1.11.19.dylib. This was requested
- by the Homebrew project package audit. GH #241, #260
-
-* Enable use of CPUID interface with clang. GH #232
-
-* Add support for MSVC 2015 debug builds by satisfying C++ allocator
- requirements. SO 31802806, GH #236
-
-* Make `X509_Time` string parsing and `to_u32bit()` more strict to avoid
- integer overflows and other potentially dangerous misinterpretations.
- GH #240, #243
-
-* Remove all 'extern "C"' declarations from src/lib/math/mp/ because some
- of those did throw exceptions and thus cannot be C methods. GH #249
-
-* Fix build configuration for clang debug on Linux. GH #250
-
-* Fix zlib error when compressing an empty buffer. GH #265
-
-* Fix iOS builds by allowing multiple compiler flags with the same name.
- GH #266
-
-* Fix Solaris build issue caused by `RLIMIT_MEMLOCK`. GH #262
-
-Version 1.11.19, 2015-08-03
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* SECURITY: The BER decoder would crash due to reading from offset 0
- of an empty vector if it encountered a BIT STRING which did not
- contain any data at all. As the type requires a 1 byte field this is
- not valid BER but could occur in malformed data. Found with afl.
- CVE-2015-5726
-
-* SECURITY: The BER decoder would allocate a fairly arbitrary amount
- of memory in a length field, even if there was no chance the read
- request would succeed. This might cause the process to run out of
- memory or invoke the OOM killer. Found with afl.
- CVE-2015-5727
-
-* The TLS heartbeat extension is deprecated and unless strong arguments
- are raised in its favor it will be removed in a future release.
- Comment at https://github.com/randombit/botan/issues/187
-
-* The x86-32 assembly versions of MD4, MD5, SHA-1, and Serpent and the
- x86-64 version of SHA-1 have been removed. With compilers from this
- decade the C++ versions are significantly faster. The SSE2 versions
- of SHA-1 and Serpent remain, as they are still the fastest version
- for processors with SIMD extensions. GH #216
-
-* BigInt::to_u32bit would fail if the value was exactly 32 bits.
- GH #220
-
-* Botan is now fully compaitible with _GLIBCXX_DEBUG. GH #73
-
-* BigInt::random_integer distribution was not uniform. GH #108
-
-* Added unit testing framework Catch. GH #169
-
-* Fix `make install`. GH #181, #186
-
-* Public header `fs.h` moved to `internal/filesystem.h`. Added filesystem
- support for MSVC 2013 when boost is not available, allowing tests to run on
- those systems. GH #198, #199
-
-* Added os "android" and fix Android compilation issues. GH #203
-
-* Drop support for Python 2.6 for all Botan Python scripts. GH #217
-
-Version 1.10.10, 2015-08-03
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* SECURITY: The BER decoder would crash due to reading from offset 0
- of an empty vector if it encountered a BIT STRING which did not
- contain any data at all. As the type requires a 1 byte field this is
- not valid BER but could occur in malformed data. Found with afl.
- CVE-2015-5726
-
-* SECURITY: The BER decoder would allocate a fairly arbitrary amount
- of memory in a length field, even if there was no chance the read
- request would succeed. This might cause the process to run out of
- memory or invoke the OOM killer. Found with afl.
- CVE-2015-5727
-
-* Due to an ABI incompatible (though not API incompatible) change in
- this release, the version number of the shared object has been
- increased.
-
-* The default TLS policy no longer allows RC4.
-
-* Fix a signed integer overflow in Blue Midnight Wish that may cause
- incorrect computations or undefined behavior.
-
-Version 1.11.18, 2015-07-05
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* In this release Botan has switched VCS from ``monotone`` to ``git``,
- and is now hosted on github at https://github.com/randombit/botan
-
-* The TLS client called ``std::set_difference`` on an invalid iterator
- pair. This could potentially lead to a crash depending on the
- compiler and STL implementation. It also would trigger assertion
- failures when using checked iterators. GH #73
-
-* Remove code constructs which triggered errors under MSVC and GCC
- debug iterators. The primary of these was an idiom of ``&vec[x]`` to
- create a pointer offset of a ``std::vector``. This failed when x was
- set equal to ``vec.size()`` to create the one-past-the-end address.
- The pointer in question was never dereferenced, but it triggered
- the iterator debugging checks which prevented using these valuble
- analysis tools. From Simon Warta and Daniel Seither. GH #125
-
-* Several incorrect or missing module dependencies have been fixed. These
- often prevented a successful build of a minimized amalgamation when
- only a small set of algorithms were specified. GH #71
- From Simon Warta.
-
-* Add an initial binding to OCaml. Currently only hashes, RNGs, and
- bcrypt are supported.
-
-* The default key size generated by the ``keygen`` tool has increased
- to 2048 bits. From Rene Korthaus.
-
-* The ``Botan_types`` namespace, which contained ``using`` declarations
- for (just) ``Botan::byte`` and ``Botan::u32bit``, has been removed.
- Any use should be replaced by ``using`` declarations for those types
- directly.
-
-Version 1.11.17, 2015-06-18
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* All support for the insecure RC4 stream cipher has been removed
- from the TLS implementation.
-
-* Fix decoding of TLS maximum fragment length. Regardless of what
- value was actually negotiated, TLS would treat it as a negotiated
- limit of 4096.
-
-* Fix the configure.py flag ``--disable-aes-ni`` which did nothing of
- the sort.
-
-* Fixed nmake clean target. GitHub #104
-
-* Correct buffering logic in ``Compression_Filter``. GitHub #93 and #95
-
-Version 1.11.16, 2015-03-29
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* TLS has changed from using the non-standard NPN extension to the IETF
- standardized ALPN extension for negotiating an application-level protocol.
- Unfortunately the semantics of the exchange have changed with ALPN. Using
- NPN, the server offered a list of protocols it advertised, and then the
- client chose its favorite. With ALPN, the client offers a list of protocols
- and the server chooses. The the signatures of both the TLS::Client and
- TLS::Server constructors have changed to support this new flow.
-
-* Optimized ECDSA signature verification thanks to an observation by
- Dr. Falko Strenzke. On some systems verifications are between 1.5
- and 2 times faster than in 1.11.15.
-
-* RSA encrypt and decrypt operations using OpenSSL have been added.
-
-* Public key operation types now handle all aspects of the operation,
- such as hashing and padding for signatures. This change allows
- supporting specialized implementations which only support particular
- padding types.
-
-* Added global timeout to HMAC_RNG entropy reseed. The defaults are
- the values set in the build.h macros ``BOTAN_RNG_AUTO_RESEED_TIMEOUT``
- and ``BOTAN_RNG_RESEED_DEFAULT_TIMEOUT``, but can be overriden
- on a specific poll with the new API call reseed_with_timeout.
-
-* Fixed Python cipher update_granularity() and default_nonce_length()
- functions
-
-* The library now builds on Visual C++ 2013
-
-* The GCM update granularity was reduced from 4096 to 16 bytes.
-
-* Fix a bug that prevented building the amalgamation until a non-amalgamation
- configuration was performed first in the same directory.
-
-* Add Travis CI integration. Github pull 60.
-
-Version 1.11.15, 2015-03-08
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* Support for RC4 in TLS, already disabled by default, is now deprecated.
- The RC4 ciphersuites will be removed entirely in a future release.
-
-* A bug in ffi.cpp meant Python could only encrypt. Github issue 53.
-
-* When comparing two ASN.1 algorithm identifiers, consider empty and
- NULL parameters the same.
-
-* Fixed memory leaks in TLS and cipher modes introduced in 1.11.14
-
-* MARK-4 failed when OpenSSL was enabled in the build in 1.11.14
- because the OpenSSL version ignored the skip parameter.
-
-* Fix compilation problem on OS X/clang
-
-* Use BOTAN_NOEXCEPT macro to work around lack of noexcept in VS 2013
-
-Version 1.11.14, 2015-02-27
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* The global state object previously used by the library has been removed.
- This includes the global PRNG. The library can be safely initialized
- multiple times without harm.
-
- The engine code has also been removed, replaced by a much lighter-weight
- object registry system which provides lookups in faster time and with less
- memory overhead than the previous approach.
-
- One caveat of the current system with regards to static linking: because only
- symbols already mentioned elsewhere in the program are included in the final
- link step, few algorithms will be available through the lookup system by
- default, even though they were compiled into the library. Your application
- must explicitly reference the types you require or they will not end up
- being available in the final binary. See also Github issue #52
-
- If you intend to build your application against a static library and don't
- want to explicitly reference each algo object you might attempt to look up by
- string, consider either building with ``--via-amalgamation``, or else (much
- simpler) using the amalgamation directly.
-
-* The new ``ffi`` submodule provides a simple C API/ABI for a number of useful
- operations (hashing, ciphers, public key operations, etc) which is easily
- accessed using the FFI modules included in many languages.
-
-* A new Python wrapper (in ``src/lib/python/botan.py``) using ``ffi`` and the Python
- ``ctypes`` module is available. The old Boost.Python wrapper has been removed.
-
-* Add specialized reducers for P-192, P-224, P-256, and P-384
-
-* OCB mode, which provides a fast and constant time AEAD mode without requiring
- hardware support, is now supported in TLS, following
- draft-zauner-tls-aes-ocb-01. Because this specification is not yet finalized
- is not yet enabled by the default policy, and the ciphersuite numbers used are
- in the experimental range and may conflict with other uses.
-
-* Add ability to read TLS policy from a text file using ``TLS::Text_Policy``.
-
-* The amalgamation now splits off any ISA specific code (for instance, that
- requiring SSSE3 instruction sets) into a new file named (for instance)
- ``botan_all_ssse3.cpp``. This allows the main amalgamation file to be compiled
- without any special flags, so ``--via-amalgamation`` builds actually work now.
- This is disabled with the build option ``--single-amalgamation-file``
-
-* PBKDF and KDF operations now provide a way to write the desired output
- directly to an application-specified area rather than always allocating a new
- heap buffer.
-
-* HKDF, previously provided using a non-standard interface, now uses the
- standard KDF interface and is retrievable using get_kdf.
-
-* It is once again possible to build the complete test suite without requiring
- any boost libraries. This is currently only supported on systems supporting
- the readdir interface.
-
-* Remove use of memset_s which caused problems with amalgamation on OS X.
- Github 42, 45
-
-* The memory usage of the counter mode implementation has been reduced.
- Previously it encrypted 256 blocks in parallel as this leads to a slightly
- faster counter increment operation. Instead CTR_BE simply encrypts a buffer
- equal in size to the advertised parallelism of the cipher implementation.
- This is not measurably slower, and dramatically reduces the memory use of
- CTR mode.
-
-* The memory allocator available on Unix systems which uses mmap and mlock to
- lock a pool of memory now checks environment variable BOTAN_MLOCK_POOL_SIZE
- and interprets it as an integer. If the value set to a smaller value then the
- library would originally have allocated (based on resource limits) the user
- specified size is used instead. You can also set the variable to 0 to
- disable the pool entirely. Previously the allocator would consume all
- available mlocked memory, this allows botan to coexist with an application
- which wants to mlock memory for its own uses.
-
-* The botan-config script previously installed on Unix systems has been
- removed. Its functionality is replaced by the ``config`` command of the
- ``botan`` tool executable, for example ``botan config cflags`` instead of
- ``botan-config --cflags``.
-
-* Added a target for POWER8 processors
-
-Version 1.11.13, 2015-01-11
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* All support for the insecure SSLv3 protocol and the server support
- for processing SSLv2 client hellos has been removed.
-
-* The command line tool now has ``tls_proxy`` which negotiates TLS with
- clients and forwards the plaintext to a specified port.
-
-* Add MCEIES, a McEliece-based integrated encryption system using
- AES-256 in OCB mode for message encryption/authentication.
-
-* Add DTLS-SRTP negotiation defined in RFC 5764
-
-* Add SipHash
-
-* Add SHA-512/256
-
-* The format of serialized TLS sessions has changed. Additiionally, PEM
- formatted sessions now use the label of "TLS SESSION" instead of "SSL SESSION"
-
-* Serialized TLS sessions are now encrypted using AES-256/GCM instead of a
- CBC+HMAC construction.
-
-* The cryptobox_psk module added in 1.11.4 and previously used for TLS session
- encryption has been removed.
-
-* When sending a TLS heartbeat message, the number of pad bytes to use can now
- be specified, making it easier to use for PMTU discovery.
-
-* If available, zero_mem now uses RtlSecureZeroMemory or memset_s instead of a
- byte-at-a-time loop.
-
-* The functions base64_encode and base64_decode would erroneously
- throw an exception if passed a zero-length input. Github issue 37.
-
-* The Python install script added in version 1.11.10 failed to place the
- headers into a versioned subdirectory.
-
-* Fix the install script when running under Python3.
-
-* Avoid code that triggers iterator debugging asserts under MSVC 2013. Github
- pull 36 from Simon Warta.
-
-Version 1.11.12, 2015-01-02
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* Add Curve25519. The implementation is based on curve25519-donna-c64.c
- by Adam Langley. New (completely non-standard) OIDs and formats for
- encrypting Curve25519 keys under PKCS #8 and including them in
- certificates and CRLs have been defined.
-
-* Add Poly1305, based on the implementation poly1305-donna by Andrew Moon.
-
-* Add the ChaCha20Poly1305 AEADs defined in draft-irtf-cfrg-chacha20-poly1305-03
- and draft-agl-tls-chacha20poly1305-04.
-
-* Add ChaCha20Poly1305 ciphersuites for TLS compatible with Google's servers
- following draft-agl-tls-chacha20poly1305-04
-
-* When encrypted as PKCS #8 structures, Curve25519 and McEliece
- private keys default to using AES-256/GCM instead of AES-256/CBC
-
-* Define OIDs for OCB mode with AES, Serpent and Twofish.
-
-Version 1.11.11, 2014-12-21
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* The Sqlite3 wrapper has been abstracted to a simple interface for
- SQL dbs in general, though Sqlite3 remains the only implementation.
- The main logic of the TLS session manager which stored encrypted
- sessions to a Sqlite3 database (``TLS::Session_Manager_SQLite``) has
- been moved to the new ``TLS::Session_Manager_SQL``. The Sqlite3
- manager API remains the same but now just subclasses
- ``TLS::Session_Manager_SQL`` and has a constructor instantiate the
- concrete database instance.
-
- Applications which would like to use a different db can now do so
- without having to reimplement the session cache logic simply by
- implementing a database wrapper subtype.
-
-* The CryptGenRandom entropy source is now also used on MinGW.
-
-* The system_rng API is now also available on systems with CryptGenRandom
-
-* With GCC use -fstack-protector for linking as well as compiling,
- as this is required on MinGW. Github issue 34.
-
-* Fix missing dependency in filters that caused compilation problem
- in amalgamation builds. Github issue 33.
-
-* SSLv3 support is officially deprecated and will be removed in a
- future release.
-
-Version 1.10.9, 2014-12-13
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* Fixed EAX tag verification to run in constant time
-
-* The default TLS policy now disables SSLv3.
-
-* A crash could occur when reading from a blocking random device if
- the device initially indicated that entropy was available but
- a concurrent process drained the entropy pool before the
- read was initiated.
-
-* Fix decoding indefinite length BER constructs that contain a context
- sensitive tag of zero. Github pull 26 from Janusz Chorko.
-
-* The ``botan-config`` script previously tried to guess its prefix from
- the location of the binary. However this was error prone, and now
- the script assumes the final installation prefix matches the value
- set during the build. Github issue 29.
-
-Version 1.11.10, 2014-12-10
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* An implementation of McEliece code-based public key encryption based
- on INRIA's HyMES and secured against a variety of side-channels was
- contributed by cryptosource GmbH. The original version is LGPL but
- cryptosource has secured permission to release an adaptation under a
- BSD license. A CCA2-secure KEM scheme is also included.
-
- The implementation is further described in
- http://www.cryptosource.de/docs/mceliece_in_botan.pdf and
- http://cryptosource.de/news_mce_in_botan_en.html
-
-* DSA and ECDSA now create RFC 6979 deterministic signatures.
-
-* Add support for TLS fallback signaling (draft-ietf-tls-downgrade-scsv-00).
- Clients will send a fallback SCSV if the version passed to the Client
- constructor is less than the latest version supported by local policy, so
- applications implementing fallback are protected. Servers always check the
- SCSV.
-
-* In previous versions a TLS::Server could service either TLS or DTLS
- connections depending on policy settings and what type of client hello it
- received. This has changed and now a Server object is initialized for
- either TLS or DTLS operation. The default policy previously prohibited
- DTLS, precisely to prevent a TCP server from being surprised by a DTLS
- connection. The default policy now allows TLS v1.0 or higher or DTLS v1.2.
-
-* Fixed a bug in CCM mode which caused it to produce incorrect tags when used
- with a value of L other than 2. This affected CCM TLS ciphersuites, which
- use L=3. Thanks to Manuel Pégourié-Gonnard for the anaylsis and patch.
- Bugzilla 270.
-
-* DTLS now supports timeouts and handshake retransmits. Timeout checking
- is triggered by the application calling the new TLS::Channel::timeout_check.
-
-* Add a TLS policy hook to disable putting the value of the local clock in hello
- random fields.
-
-* All compression operations previously available as Filters are now
- performed via the Transformation API, which minimizes memory copies.
- Compression operations are still available through the Filter API
- using new general compression/decompression filters in comp_filter.h
-
-* The zlib module now also supports gzip compression and decompression.
-
-* Avoid a crash in low-entropy situations when reading from /dev/random, when
- select indicated the device was readable but by the time we start the read the
- entropy pool had been depleted.
-
-* The Miller-Rabin primality test function now takes a parameter allowing the
- user to directly specify the maximum false negative probability they are
- willing to accept.
-
-* PKCS #8 private keys can now be encrypted using GCM mode instead of
- unauthenticated CBC. The default remains CBC for compatibility.
-
-* The default PKCS #8 encryption scheme has changed to use PBKDF2 with
- SHA-256 instead of SHA-1
-
-* A specialized reducer for P-521 was added.
-
-* On Linux the mlock allocator will use MADV_DONTDUMP on the pool so
- that the contents are not included in coredumps.
-
-* A new interface for directly using a system-provided PRNG is
- available in system_rng.h. Currently only systems with /dev/urandom
- are supported.
-
-* Fix decoding indefinite length BER constructs that contain a context sensitive
- tag of zero. Github pull 26 from Janusz Chorko.
-
-* The GNU MP engine has been removed.
-
-* Added AltiVec detection for POWER8 processors.
-
-* Add a new install script written in Python which replaces shell hackery in the
- makefiles.
-
-* Various modifications to better support Visual C++ 2013 and 2015. Github
- issues 11, 17, 18, 21, 22.
-
-Version 1.10.8, 2014-04-10
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* SECURITY: Fix a bug in primality testing introduced in 1.8.3 which
- caused only a single random base, rather than a sequence of random
- bases, to be used in the Miller-Rabin test. This increased the
- probability that a non-prime would be accepted, for instance a 1024
- bit number would be incorrectly classed as prime with probability
- around 2^-40. Reported by Jeff Marrison. CVE-2014-9742
-
-* The key length limit on HMAC has been raised to 512 bytes, allowing
- the use of very long passphrases with PBKDF2.
-
-Version 1.11.9, 2014-04-10
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* SECURITY: Fix a bug in primality testing introduced in 1.8.3 which
- caused only a single random base, rather than a sequence of random
- bases, to be used in the Miller-Rabin test. This increased the
- probability that a non-prime would be accepted, for instance a 1024
- bit number would be incorrectly classed as prime with probability
- around 2^-40. Reported by Jeff Marrison. CVE-2014-9742
-
-* X.509 path validation now returns a set of all errors that occurred
- during validation, rather than immediately returning the first
- detected error. This prevents a seemingly innocuous error (such as
- an expired certificate) from hiding an obviously serious error
- (such as an invalid signature). The Certificate_Status_Code enum is
- now ordered by severity, and the most severe error is returned by
- Path_Validation_Result::result(). The entire set of status codes is
- available with the new all_statuses call.
-
-* Fixed a bug in OCSP response decoding which would cause an error
- when attempting to decode responses from some widely used
- responders.
-
-* An implementation of HMAC_DRBG RNG from NIST SP800-90A has been
- added. Like the X9.31 PRNG implementation, it uses another
- underlying RNG for seeding material.
-
-* An implementation of the RFC 6979 deterministic nonce generator has
- been added.
-
-* Fix a bug in certificate path validation which prevented successful
- validation if intermediate certificates were presented out of order.
-
-* Fix a bug introduced in 1.11.5 which could cause crashes or other
- incorrect behavior when a cipher mode filter was followed in the
- pipe by another filter, and that filter had a non-empty start_msg.
-
-* The types.h header now uses stdint.h rather than cstdint to avoid
- problems with Clang on OS X.
-
-Version 1.11.8, 2014-02-13
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* The ``botan`` command line application introduced in 1.11.7 is now
- installed along with the library.
-
-* A bug in certificate path validation introduced in 1.11.6 which
- caused all CRL signature checks to fail has been corrected.
-
-* The ChaCha20 stream cipher has been added.
-
-* The ``Transformation`` class no longer implements an interface for keying,
- this has been moved to a new subclass ``Keyed_Transformation``.
-
-* The ``Algorithm`` class, which previously acted as a global base for
- various types (ciphers, hashes, etc) has been removed.
-
-* CMAC now supports 256 and 512 bit block ciphers, which also allows
- the use of larger block ciphers with EAX mode. In particular this
- allows using Threefish in EAX mode.
-
-* The antique PBES1 private key encryption scheme (which only supports
- DES or 64-bit RC2) has been removed.
-
-* The Square, Skipjack, and Luby-Rackoff block ciphers have been removed.
-
-* The Blue Midnight Wish hash function has been removed.
-
-* Skein-512 no longer supports output lengths greater than 512 bits.
-
-* Skein did not reset its internal state properly if clear() was
- called, causing it to produce incorrect results for the following
- message. It was reset correctly in final() so most usages should not
- be affected.
-
-* A number of public key padding schemes have been renamed to match
- the most common notation; for instance EME1 is now called OAEP and
- EMSA4 is now called PSSR. Aliases are set which should allow all
- current applications to continue to work unmodified.
-
-* A bug in CFB encryption caused a few bytes past the end of the final
- block to be read. The actual output was not affected.
-
-* Fix compilation errors in the tests that occurred with minimized
- builds. Contributed by Markus Wanner.
-
-* Add a new ``--destdir`` option to ``configure.py`` which controls
- where the install target will place the output. The ``--prefix``
- option continues to set the location where the library expects to be
- eventually installed.
-
-* Many class destructors which previously deleted memory have been
- removed in favor of using ``unique_ptr``.
-
-* Various portability fixes for Clang, Windows, Visual C++ 2013, OS X,
- and x86-32.
-
-Version 1.11.7, 2014-01-10
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* Botan's basic numeric types are now defined in terms of the
- C99/C++11 standard integer types. For instance ``u32bit`` is now a
- typedef for ``uint32_t``, and both names are included in the library
- namespace. This should not result in any application-visible
- changes.
-
-* There are now two executable outputs of the build, ``botan-test``,
- which runs the tests, and ``botan`` which is used as a driver to call
- into various subcommands which can also act as examples of library
- use, much in the manner of the ``openssl`` command. It understands the
- commands ``base64``, ``asn1``, ``x509``, ``tls_client``, ``tls_server``,
- ``bcrypt``, ``keygen``, ``speed``, and various others. As part of this
- change many obsolete, duplicated, or one-off examples were removed,
- while others were extended with new functionality. Contributions of
- new subcommands, new bling for exising ones, or documentation in any
- form is welcome.
-
-* Fix a bug in Lion, which was broken by a change in 1.11.0. The
- problem was not noticed before as Lion was also missing a test vector
- in previous releases.
-
-Version 1.10.7, 2013-12-29
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* OAEP had two bugs, one of which allowed it to be used even if the
- key was too small, and the other of which would cause a crash during
- decryption if the EME data was too large for the associated key.
-
-Version 1.11.6, 2013-12-29
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* The Boost filesystem and asio libraries are now being used by default.
- Pass ``--without-boost`` to ``configure.py`` to disable.
-
-* The default TLS policy no longer allows SSLv3 or RC4.
-
-* OAEP had two bugs, one of which allowed it to be used even if the
- key was too small, and the other of which would cause a crash during
- decryption if the EME data was too large for the associated key.
-
-* GCM mode now uses the Intel clmul instruction when available
-
-* Add the Threefish-512 tweakable block cipher, including an AVX2 version
-
-* Add SIV (from :rfc:`5297`) as a nonce-based AEAD
-
-* Add HKDF (from :rfc:`5869`) using an experimental PRF interface
-
-* Add HTTP utility functions and OCSP online checking
-
-* Add TLS::Policy::acceptable_ciphersuite hook to disable ciphersuites
- on an ad-hoc basis.
-
-* TLS::Session_Manager_In_Memory's constructor now requires a RNG
-
-Version 1.10.6, 2013-11-10
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* The device reading entropy source now attempts to read from all
- available devices. Previously it would break out early if a partial
- read from a blocking source occurred, not continuing to read from a
- non-blocking device. This would cause the library to fall back on
- slower and less reliable techniques for collecting PRNG seed
- material. Reported by Rickard Bellgrim.
-
-* HMAC_RNG (the default PRNG implementation) now automatically reseeds
- itself periodically. Previously reseeds only occurred on explicit
- application request.
-
-* Fix an encoding error in EC_Group when encoding using EC_DOMPAR_ENC_OID.
- Reported by fxdupont on github.
-
-* In EMSA2 and Randpool, avoid calling name() on objects after deleting them if
- the provided algorithm objects are not suitable for use. Found by Clang
- analyzer, reported by Jeffrey Walton.
-
-* If X509_Store was copied, the u32bit containing how long to cache validation
- results was not initialized, potentially causing results to be cached for
- significant amounts of time. This could allow a certificate to be considered
- valid after its issuing CA's cert expired. Expiration of the end-entity cert
- is always checked, and reading a CRL always causes the status to be reset, so
- this issue does not affect revocation. Found by Coverity scanner.
-
-* Avoid off by one causing a potentially unterminated string to be passed to
- the connect system call if the library was configured to use a very long path
- name for the EGD socket. Found by Coverity Scanner.
-
-* In PK_Encryptor_EME, PK_Decryptor_EME, PK_Verifier, and PK_Key_Agreement,
- avoid dereferencing an unitialized pointer if no engine supported operations
- on the key object given. Found by Coverity scanner.
-
-* Avoid leaking a file descriptor in the /dev/random and EGD entropy sources if
- stdin (file descriptor 0) was closed. Found by Coverity scanner.
-
-* Avoid a potentially undefined operation in the bit rotation operations. Not
- known to have caused problems under any existing compiler, but might have
- caused problems in the future. Caught by Clang sanitizer, reported by Jeffrey
- Walton.
-
-* Increase default hash iterations from 10000 to 50000 in PBES1 and PBES2
-
-* Add a fix for mips64el builds from Brad Smith.
-
-Version 1.11.5, 2013-11-10
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* The TLS callback signatures have changed - there are now two distinct
- callbacks for application data and alerts. TLS::Client and TLS::Server have
- constructors which continue to accept the old callback and use it for both
- operations.
-
-* The entropy collector that read from randomness devices had two bugs - it
- would break out of the poll as soon as any read succeeded, and it selected on
- each device individually. When a blocking source was first in the device list
- and the entropy pool was running low, the reader might either block in select
- until eventually timing out (continuing on to read from /dev/urandom instead),
- or read just a few bytes, skip /dev/urandom, fail to satisfy the entropy
- target, and the poll would continue using other (slower) sources. This caused
- substantial performance/latency problems in RNG heavy applications. Now all
- devices are selected over at once, with the effect that a full read from
- urandom always occurs, along with however much (if any) output is available
- from blocking sources.
-
-* Previously AutoSeeded_RNG referenced a globally shared PRNG instance.
- Now each instance has distinct state.
-
-* The entropy collector that runs Unix programs to collect statistical
- data now runs multiple processes in parallel, greatly reducing poll
- times on some systems.
-
-* The Randpool RNG implementation was removed.
-
-* All existing cipher mode implementations (such as CBC and XTS) have been
- converted from filters to using the interface previously provided by
- AEAD modes which allows for in-place message
- processing. Code which directly references the filter objects will break, but
- an adaptor filter allows usage through get_cipher as usual.
-
-* An implementation of CCM mode from RFC 3601 has been added, as well as CCM
- ciphersuites for TLS.
-
-* The implementation of OCB mode now supports 64 and 96 bit tags
-
-* Optimized computation of XTS tweaks, producing a substantial speedup
-
-* Add support for negotiating Brainpool ECC curves in TLS
-
-* TLS v1.2 will not negotiate plain SHA-1 signatures by default.
-
-* TLS channels now support sending a ``std::vector``
-
-* Add a generic 64x64->128 bit multiply instruction operation in mul128.h
-
-* Avoid potentially undefined operations in the bit rotation operations. Not
- known to have caused problems under existing compilers but might break in the
- future. Found by Clang sanitizer, reported by Jeffrey Walton.
-
-Version 1.11.4, 2013-07-25
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* CPU specific extensions are now always compiled if support for the
- operations is available at build time, and flags enabling use of
- extra operations (such as SSE2) are only included when compiling
- files which specifically request support. This means, for instance,
- that the SSSE3 and AES-NI implementations of AES are always included
- in x86 builds, relying on runtime cpuid checking to prevent their
- use on CPUs that do not support those operations.
-
-* The default TLS policy now only accepts TLS, to minimize surprise
- for servers which might not expect to negotiate DTLS. Previously a
- server would by default negotiate either protocol type (clients
- would only accept the same protocol type as they
- offered). Applications which use DTLS or combined TLS/DTLS need to
- override ``Policy::acceptable_protocol_version``.
-
-* The TLS channels now accept a new parameter specifying how many
- bytes to preallocate for the record handling buffers, which allows
- an application some control over how much memory is used at runtime
- for a particular connection.
-
-* Applications can now send arbitrary TLS alert messages using
- ``TLS::Channel::send_alert``
-
-* A new TLS policy ``NSA_Suite_B_128`` is available, which
- will negotiate only the 128-bit security NSA Suite B. See
- :rfc:`6460` for more information about Suite B.
-
-* Adds a new interface for benchmarking, ``time_algorithm_ops``,
- which returns a map of operations to operations per second. For
- instance now both encrypt and decrypt speed of a block cipher can be
- checked, as well as the key schedule of all keyed algorithms. It
- additionally supports AEAD modes.
-
-* Rename ARC4 to RC4
-
-Version 1.11.3, 2013-04-11
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* Add a new interface for AEAD modes (``AEAD_Mode``).
-
-* Implementations of the OCB and GCM authenticated cipher modes are
- now included.
-
-* Support for TLS GCM ciphersuites is now available.
-
-* A new TLS policy mechanism
- ``TLS::Policy::server_uses_own_ciphersuite_preferences``
- controls how a server chooses a ciphersuite. Previously it always
- chose its most preferred cipher out of the client's list, but this
- can allow configuring a server to choose by the client's preferences
- instead.
-
-* ``Keyed_Filter`` now supports returning a
- ``Key_Length_Specification`` so the full details of what
- keylengths are supported is now available in keyed filters.
-
-* The experimental and rarely used Turing and WiderWAKE stream ciphers
- have been removed
-
-* New functions for symmetric encryption are included in cryptobox.h
- though interfaces and formats are subject to change.
-
-* A new function ``algorithm_kat_detailed`` returns a string
- providing information about failures, instead of just a pass/fail
- indicator as in ``algorithm_kat``.
-
-Version 1.10.5, 2013-03-02
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* A potential crash in the AES-NI implementation of the AES-192 key
- schedule (caused by misaligned loads) has been fixed.
-
-* A previously conditional operation in Montgomery multiplication and
- squaring is now always performed, removing a possible timing
- channel.
-
-* Use correct flags for creating a shared library on OS X under Clang.
-
-* Fix a compile time incompatibility with Visual C++ 2012.
-
-Version 1.11.2, 2013-03-02
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* A bug in the release script caused the ``botan_version.py`` included
- in 1.11.1`` to be invalid, which required a manual edit to fix
- (Bugzilla 226)
-
-* Previously ``clear_mem`` was implemented by an inlined call to
- ``std::memset``. However an optimizing compiler might notice cases
- where the memset could be skipped in cases allowed by the standard.
- Now ``clear_mem`` calls ``zero_mem`` which is compiled separately and
- which zeros out the array through a volatile pointer. It is possible
- some compiler with some optimization setting (especially with
- something like LTO) might still skip the writes. It would be nice if
- there was an automated way to test this.
-
-* The new filter ``Threaded_Fork`` acts like a normal
- ``Fork``, sending its input to a number of different
- filters, but each subchain of filters in the fork runs in its own
- thread. Contributed by Joel Low.
-
-* The default TLS policy formerly preferred AES over RC4, and allowed
- 3DES by default. Now the default policy is to negotiate only either
- AES or RC4, and to prefer RC4.
-
-* New TLS ``Blocking_Client`` provides a thread per
- connection style API similar to that provided in 1.10
-
-* The API of ``Credentials_Manager::trusted_certificate_authorities``
- has changed to return a vector of ``Certificate_Store*`` instead of
- ``X509_Certificate``. This allows the list of trusted CAs to be
- more easily updated dynamically or loaded lazily.
-
-* The ``asn1_int.h`` header was split into ``asn1_alt_name.h``,
- ``asn1_attribute.h`` and ``asn1_time.h``.
-
-Version 1.10.4, 2013-01-07
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* Avoid a conditional operation in the power mod implementations on if
- a nibble of the exponent was zero or not. This may help protect
- against certain forms of side channel attacks.
-
-* The SRP6 code was checking for invalid values as specified in RFC
- 5054, specifically values equal to zero mod p. However SRP would
- accept negative A/B values, or ones larger than p, neither of which
- should occur in a normal run of the protocol. These values are now
- rejected. Credits to Timothy Prepscius for pointing out these values
- are not normally used and probably signal something fishy.
-
-* The return value of version_string is now a compile time constant
- string, so version information can be more easily extracted from
- binaries.
-
-Version 1.11.1, 2012-10-30
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Initial support for DTLS (both v1.0 and v1.2) is available in this
-release, though it should be considered highly experimental. Currently
-timeouts and retransmissions are not handled.
-
-The ``TLS::Client`` constructor now takes the version to
-offer to the server. The policy hook ``TLS::Policy`` function
-`pref_version``, which previously controlled this, has been removed.
-
-`TLS::Session_Manager_In_Memory`` now chooses a random
-256-bit key at startup and encrypts all sessions (using the existing
-`TLS::Session::encrypt`` mechanism) while they are stored in
-memory. This is primarily to reduce pressure on locked memory, as each
-session normally requires 48 bytes of locked memory for the master
-secret, whereas now only 32 bytes are needed total. This change may
-also make it slightly harder for an attacker to extract session data
-from memory dumps (eg with a cold boot attack).
-
-The keys used in TLS session encryption were previously uniquely
-determined by the master key. Now the encrypted session blob includes
-two 80 bit salts which are used in the derivation of the cipher and
-MAC keys.
-
-The ``secure_renegotiation`` flag is now considered an aspect of the
-connection rather than the session, which matches the behavior of
-other implementations. As the format has changed, sessions saved to
-persistent storage by 1.11.0 will not load in this version and vice
-versa. In either case this will not cause any errors, the session will
-simply not resume and instead a full handshake will occur.
-
-New policy hooks ``TLS::Policy::acceptable_protocol_version``,
-`TLS::Policy::allow_server_initiated_renegotiation``, and
-`TLS::Policy::negotiate_heartbeat_support`` were added.
-
-TLS clients were not sending a next protocol message during a session
-resumption, which would cause resumption failures with servers that
-support NPN if NPN was being offered by the client.
-
-A bug caused heartbeat requests sent by the counterparty during a
-handshake to be passed to the application callback as if they were
-heartbeat responses.
-
-Support for TLS key material export as specified in :rfc:`5705` has
-been added, available via ``TLS::Channel::key_material_export``
-
-A new function ``Public_Key::estimated_strength`` returns
-an estimate for the upper bound of the strength of the key. For
-instance for an RSA key, it will return an estimate of how many
-operations GNFS would take to factor the key.
-
-A new ``Path_Validation_Result`` code has been added
-``SIGNATURE_METHOD_TOO_WEAK``. By default signatures created with keys
-below 80 bits of strength (as estimated by ``estimated_strength``) are
-rejected. This level can be modified using a parameter to the
-``Path_Validation_Restrictions`` constructor.
-
-The SRP6 code was checking for invalid values as specified in
-:rfc:`5054`, ones equal to zero mod p, however it would accept
-negative A/B values, or ones larger than p, neither of which should
-occur in a normal run of the protocol. These values are now
-rejected. Credits to Timothy Prepscius for pointing out these values
-are not normally used and probably signal something fishy.
-
-Several ``BigInt`` functions have been removed, including
-``operator[]``, ``assign``, ``get_reg``, and ``grow_reg``. The version
-of ``data`` that returns a mutable pointer has been renamed
-``mutable_data``. Support for octal conversions has been removed.
-
-The constructor ``BigInt(NumberType type, size_t n)`` has been
-removed, replaced by ``BigInt::power_of_2``.
-
-In 1.11.0, when compiled by GCC, the AES-NI implementation of AES-192
-would crash if the mlock-based allocator was used due to an alignment
-issue.
-
-Version 1.11.0, 2012-07-19
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. note::
-
- In this release, many new features of C++11 are being used in the
- library. Currently GCC 4.7 and Clang 3.1 are known to work well.
- This version of the library cannot be compiled by or used with a
- C++98 compiler.
-
-There have been many changes and improvements to TLS. The interface
-is now purely event driven and does not directly interact with
-sockets. New TLS features include TLS v1.2 support, client
-certificate authentication, renegotiation, session tickets, and
-session resumption. Session information can be saved in memory or to
-an encrypted SQLite3 database. Newly supported TLS ciphersuite
-algorithms include using SHA-2 for message authentication, pre shared
-keys and SRP for authentication and key exchange, ECC algorithms for
-key exchange and signatures, and anonymous DH/ECDH key exchange.
-
-Support for OCSP has been added. Currently only client-side support
-exists.
-
-The API for X.509 path validation has changed, with
-``x509_path_validate`` in x509path.h now handles path validation and
-``Certificate_Store`` handles storage of certificates and CRLs.
-
-The memory container types have changed substantially. The
-``MemoryVector`` and ``SecureVector`` container types have been
-removed, and an alias of ``std::vector`` using an allocator that
-clears memory named ``secure_vector`` is used for key material, with
-plain ``std::vector`` being used for everything else.
-
-The technique used for mlock'ing memory on Linux and BSD systems is
-much improved. Now a single page-aligned block of memory (the exact
-limit of what we can mlock) is mmap'ed, with allocations being done
-using a best-fit allocator and all metadata held outside the mmap'ed
-range, in an effort to make best use of the very limited amount of
-memory current Linux kernels allow unpriveledged users to lock.
-
-A filter using LZMA was contributed by Vojtech Kral. It is available
-if LZMA support was enabled at compilation time by passing
-``--with-lzma`` to ``configure.py``.
-
-:rfc:`5915` adds some extended information which can be included in
-ECC private keys which the ECC key decoder did not expect, causing an
-exception when such a key was loaded. In particular, recent versions
-of OpenSSL use these fields. Now these fields are decoded properly,
-and if the public key value is included it is used, as otherwise the
-public key needs to be rederived from the private key. However the
-library does not include these fields on encoding keys for
-compatibility with software that does not expect them (including older
-versions of botan).
-
-Version 1.8.14, 2012-07-18
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* The malloc allocator would return null instead of throwing in the
- event of an allocation failure, which could cause an application
- crash due to null pointer dereference where normally an exception
- would occur.
-
-* Recent versions of OpenSSL include extra information in ECC private
- keys, the presence of which caused an exception when such a key was
- loaded by botan. The decoding of ECC private keys has been changed to
- ignore these fields if they are set.
-
-* AutoSeeded_RNG has been changed to prefer ``/dev/random`` over
- ``/dev/urandom``
-
-* Fix detection of s390x (Debian bug 638347)
-
-Version 1.10.3, 2012-07-10
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A change in 1.10.2 accidentally broke ABI compatibility with 1.10.1
-and earlier versions, causing programs compiled against 1.10.1 to
-crash if linked with 1.10.2 at runtime.
-
-Recent versions of OpenSSL include extra information in ECC private
-keys, the presence of which caused an exception when such a key was
-loaded by botan. The decoding of ECC private keys has been changed to
-ignore these fields if they are set.
-
-Version 1.10.2, 2012-06-17
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Several TLS bugs were fixed in this release, including a major
-omission that the renegotiation extension was not being used. As the
-1.10 implementation of TLS does not properly support renegotiation,
-the approach in this release is simply to send the renegotiation
-extension SCSV, which should protect the client against any handshake
-splicing. In addition renegotiation attempts are handled properly
-instead of causing handshake failures - all hello requests, and all
-client hellos after the initial negotiation, are ignored. Some
-bugs affecting DSA server authentication were also fixed.
-
-By popular request, ``Pipe::reset`` no longer requires that message
-processing be completed, a requirement that caused problems when a
-Filter's end_msg call threw an exception, after which point the Pipe
-object was no longer usable.
-
-Support for getting entropy using the rdrand instruction introduced in
-Intel's Ivy Bridge processors has been added. In previous releases,
-the ``CPUID::has_rdrand`` function was checking the wrong cpuid bit,
-and would false positive on AMD Bulldozer processors.
-
-An implementation of SRP-6a compatible with the specification in RFC
-5054 is now available in ``srp6.h``. In 1.11, this is being used for
-TLS-SRP, but may be useful in other environments as well.
-
-An implementation of the Camellia block cipher was added, again largely
-for use in TLS.
-
-If ``clock_gettime`` is available on the system, hres_timer will poll all
-the available clock types.
-
-AltiVec is now detected on IBM POWER7 processors and on OpenBSD systems.
-The OpenBSD support was contributed by Brad Smith.
-
-The Qt mutex wrapper was broken and would not compile with any recent
-version of Qt. Taking this as a clear indication that it is not in use,
-it has been removed.
-
-Avoid setting the soname on OpenBSD, as it doesn't support it (Bugzilla 158)
-
-A compilation problem in the dynamic loader that prevented using
-dyn_load under MinGW GCC has been fixed.
-
-A common error for people using MinGW is to target GCC on Windows,
-however the 'Windows' target assumes the existence of Visual C++
-runtime functions which do not exist in MinGW. Now, configuring for
-GCC on Windows will cause the configure.py to warn that likely you
-wanted to configure for either MinGW or Cygwin, not the generic
-Windows target.
-
-A bug in configure.py would cause it to interpret ``--cpu=s390x`` as
-``s390``. This may have affected other CPUs as well. Now configure.py
-searches for an exact match, and only if no exact match is found will
-it search for substring matches.
-
-An incompatibility in configure.py with the subprocess module included
-in Python 3.1 has been fixed (Bugzilla 157).
-
-The exception catching syntax of configure.py has been changed to the
-Python 3.x syntax. This syntax also works with Python 2.6 and 2.7, but
-not with any earlier Python 2 release. A simple search and replace
-will allow running it under Python 2.5::
-
- perl -pi -e 's/except (.*) as (.*):/except $1, $2:/g' configure.py
-
-Note that Python 2.4 is not supported at all.
-
-Version 1.10.1, 2011-07-11
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* A race condition in ``Algorithm_Factory`` could cause crashes in
- multithreaded code.
-
-* The return value of ``name`` has changed for GOST 28147-89 and
- Skein-512. GOST's ``name`` now includes the name of the sbox, and
- Skein's includes the personalization string (if nonempty). This
- allows an object to be properly roundtripped, which is necessary to
- fix the race condition described above.
-
-* A new distribution script is now included, as
- ``src/build-data/scripts/dist.py``
-
-* The ``build.h`` header now includes, if available, an identifier of
- the source revision that was used. This identifier is also included
- in the result of ``version_string``.
-
-Version 1.8.13, 2011-07-02
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* A race condition in ``Algorithm_Factory`` could cause crashes in
- multithreaded code.
-
-Version 1.10.0, 2011-06-20
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* Detection for the rdrand instruction being added to upcoming Intel
- Ivy Bridge processors has been added.
-
-* A template specialization of std::swap was added for the memory
- container types.
-
-Version 1.8.12, 2011-06-20
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-* If EMSA3(Raw) was used for more than one signature, it would produce
- incorrect output.
-
-* Fix the --enable-debug option to configure.py
-
-* Improve OS detection on Cygwin
-
-* Fix compilation under Sun Studio 12 on Solaris
-
-* Fix a memory leak in the constructors of DataSource_Stream and
- DataSink_Stream which would occur if opening the file failed (Bugzilla 144)
-
-Version 1.9.18, 2011-06-03
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* Fourth release candidate for 1.10.0
-
-* The GOST 34.10 verification operation was not ensuring that s and r
- were both greater than zero. This could potentially have meant it
- would have accepted an invalid all-zero signature as valid for any
- message. Due to how ECC points are internally represented it instead
- resulted in an exception being thrown.
-
-* A simple multiexponentation algorithm is now used in ECDSA and
- GOST-34.10 signature verification, leading to 20 to 25% improvements
- in ECDSA and 25% to 40% improvements in GOST-34.10 verification
- performance.
-
-* The internal representation of elliptic curve points has been
- modified to use Montgomery representation exclusively, resulting in
- reduced memory usage and a 10 to 20% performance improvement for
- ECDSA and ECDH.
-
-* In OAEP decoding, scan for the delimiter bytes using a loop that is
- written without conditionals so as to help avoid timing analysis.
- Unfortunately GCC at least is 'smart' enough to compile it to
- jumps anyway.
-
-* The SSE2 implementation of IDEA did not work correctly when compiled
- by Clang, because the trick it used to emulate a 16 bit unsigned
- compare in SSE (which doesn't contain one natively) relied on signed
- overflow working in the 'usual' way. A different method that doesn't
- rely on signed overflow is now used.
-
-* Add support for compiling SSL using Visual C++ 2010's TR1
- implementation.
-
-* Fix a bug under Visual C++ 2010 which would cause ``hex_encode`` to
- crash if given a zero-sized input to encode.
-
-* A new build option ``--via-amalgamation`` will first generate the
- single-file amalgamation, then build the library from that single
- file. This option requires a lot of memory and does not parallelize,
- but the resulting library is smaller and may be faster.
-
-* On Unix, the library and header paths have been changed to allow
- parallel installation of different versions of the library. Headers
- are installed into ``<prefix>/include/botan-1.9/botan``, libraries
- are named ``libbotan-1.9``, and ``botan-config`` is now namespaced
- (so in this release ``botan-config-1.9``). All of these embedded
- versions will be 1.10 in the upcoming stable release.
-
-* The soname system has been modified. In this release the library
- soname is ``libbotan-1.9.so.0``, with the full library being named
- ``libbotan-1.9.so.0.18``. The ``0`` is the ABI version, and will be
- incremented whenever a breaking ABI change is made.
-
-* TR1 support is not longer automatically assumed under older versions
- of GCC
-
-* Functions for base64 decoding that work standalone (without needing
- to use a pipe) have been added to ``base64.h``
-
-* The function ``BigInt::to_u32bit`` was inadvertently removed in 1.9.11
- and has been added back.
-
-* The function ``BigInt::get_substring`` did not work correctly with a
- *length* argument of 32.
-
-* The implementation of ``FD_ZERO`` on Solaris uses ``memset`` and
- assumes the caller included ``string.h`` on its behalf. Do so to
- fix compilation in the ``dev_random`` and ``unix_procs`` entropy
- sources. Patch from Jeremy C. Reed.
-
-* Add two different configuration targets for Atom, since some are
- 32-bit and some are 64-bit. The 'atom' target now refers to the
- 64-bit implementations, use 'atom32' to target the 32-bit
- processors.
-
-* The (incomplete) support for CMS and card verifiable certificates
- are disabled by default; add ``--enable-modules=cms`` or
- ``--enable-modules=cvc`` during configuration to turn them back on.
-
-Version 1.9.17, 2011-04-29
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* Third release candidate for 1.10.0
-
-* The format preserving encryption method currently available was
- presented in the header ``fpe.h`` and the functions ``fpe_encrypt``
- and ``fpe_decrypt``. These were renamed as it is likely that other
- FPE schemes will be included in the future. The header is now
- ``fpe_fe1.h``, and the functions are named ``fe1_encrypt`` and
- ``fe1_decrypt``.
-
-* New options to ``configure.py`` control what tools are used for
- documentation generation. The ``--with-sphinx`` option enables using
- Sphinx to convert ReST into HTML; otherwise the ReST sources are
- installed directly. If ``--with-doxygen`` is used, Doxygen will run
- as well. Documentation generation can be triggered via the ``docs``
- target in the makefile; it will also be installed by the install
- target on Unix.
-
-* A bug in 1.9.16 effectively disabled support for runtime CPU feature
- detection on x86 under GCC in that release.
-
-* A mostly internal change, all references to "ia32" and "amd64" have
- been changed to the vendor neutral and probably easier to understand
- "x86-32" and "x86-64". For instance, the "mp_amd64" module has been
- renamed "mp_x86_64", and the macro indicating x86-32 has changed
- from ``BOTAN_TARGET_ARCH_IS_IA32`` to
- ``BOTAN_TARGET_ARCH_IS_X86_32``. The classes calling assembly have
- also been renamed.
-
-* Similiarly to the above change, the AES implemenations using the
- AES-NI instruction set have been renamed from AES_XXX_Intel to
- AES_XXX_NI.
-
-* Systems that are identified as ``sun4u`` will default to compiling for
- 32-bit SPARCv9 code rather than 64-bit. This matches the still
- common convention for 32-bit SPARC userspaces. If you want 64-bit
- code on such as system, use ``--cpu=sparc64``.
-
-* Some minor fixes for compiling botan under the BeOS
- clone/continuation `Haiku <http://haiku-os.org>`_.
-
-* Further updates to the documentation
-
-Version 1.9.16, 2011-04-11
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* Second release candidate for 1.10.0
-
-* The documentation, previously written in LaTeX, is now in
- reStructuredText suitable for processing by `Sphinx
- <http://sphinx.pocoo.org>`_, which can generate nicely formatted
- HTML and PDFs. The documentation has also been greatly updated and
- expanded.
-
-* The class ``EC_Domain_Params`` has been renamed ``EC_Group``, with a
- typedef for backwards compatibility.
-
-* The ``EC_Group`` string constructor didn't understand the standard
- names like "secp160r1", forcing use of the OIDs.
-
-* Two constructors for ECDSA private keys, the one that creates a new
- random key, and the one that provides a preset private key as a
- ``BigInt``, have been merged. This matches the existing interface
- for DSA and DH keys. If you previously used the version taking a
- ``BigInt`` private key, you'll have to additionally pass in a
- ``RandomNumberGenerator`` object starting in this release.
-
-* It is now possible to create ECDH keys with a preset ``BigInt``
- private key; previously no method for this was available.
-
-* The overload of ``generate_passhash9`` that takes an explicit
- algorithm identifier has been merged with the one that does not.
- The algorithm identifier code has been moved from the second
- parameter to the fourth.
-
-* Change shared library versioning to match the normal Unix
- conventions. Instead of ``libbotan-X.Y.Z.so``, the shared lib is
- named ``libbotan-X.Y.so.Z``; this allows the runtime linker to do
- its runtime linky magic. It can be safely presumed that any change
- in the major or minor version indicates ABI incompatibility.
-
-* Remove the socket wrapper code; it was not actually used by anything
- in the library, only in the examples, and you can use whatever kind
- of (blocking) socket interface you like with the SSL/TLS code. It's
- available as socket.h in the examples directory if you want to use
- it.
-
-* Disable the by-default 'strong' checking of private keys that are
- loaded from storage. You can always request key material sanity
- checking using Private_Key::check_key.
-
-* Bring back removed functions ``min_keylength_of``,
- ``max_keylength_of``, ``keylength_multiple_of`` in ``lookup.h`` to
- avoid breaking applications written against 1.8
-
-Version 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 the
- Linux and NetBSD kernels, it will not trap and emulate it for us,
- causing a illegal instruction crash.
-
-* Improve detection and autoconfiguration for ARM processors. Thanks
- go out to the the `Tahoe-LAFS Software Foundation
- <http://tahoe-lafs.org>`_, who donated a Sheevaplug that I'll be
- using to figure out how to make the cryptographic primitives
- Tahoe-LAFS relies on faster, particularly targeting the ARMv5TE.
-
-Version 1.9.14, 2011-03-01
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* Add support for bcrypt, OpenBSD's password hashing scheme.
-
-* Add support for NIST's AES key wrapping algorithm, as described in
- :rfc:`3394`. It is available by including ``rfc3394.h``.
-
-* Fix an infinite loop in zlib filters introduced in 1.9.11 (Bugzilla 142)
-
-Version 1.9.13, 2011-02-19
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-GOST 34.10 signatures were being formatted in a way that was not
-compatible with other implemenations, and specifically how GOST is
-used in DNSSEC.
-
-The Keccak hash function was updated to the tweaked variant proposed
-for round 3 of the NIST hash competition. This version is not
-compatible with the previous algorithm.
-
-A new option ``--distribution-info`` was added to the configure
-script. It allows the user building the library to set any
-distribution-specific notes on the build, which are available as a
-macro ``BOTAN_DISTRIBUTION_INFO``. The default value is
-'unspecified'. If you are building an unmodified version of botan
-(especially for distribution), and want to indicate to applications
-that this is the case, consider using
-``--distribution-info=pristine``. If you are making any patches or
-modifications, it is recommended to use
-``--distribution-info=[Distribution Name] [Version]``, for instance
-'FooNix 1.9.13-r3'.
-
-Some bugs preventing compilation under Clang 2.9 and Sun Studio 12
-were fixed.
-
-The DER/BER codecs use ``size_t`` instead of ``u32bit`` for small
-integers
-
-Version 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
-
-Version 1.9.11, 2010-11-29
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* The TLS API has changed substantially and now relies heavily on
- TR1's ``std::function`` is now required. Additionally, it is
- required that all callers derive a subclass of TLS_Policy and pass
- it to a client or server object. Please remember that the TLS
- interface/API is currently unstable and will very likely change
- further before TLS is included in a stable release. A handshake
- failure that occurred when RC4 was negotiated has also been fixed.
-
-* Some possible timing channels in the implementations of Montgomery
- reduction and the IDEA key schedule were removed. The table-based
- AES implementation uses smaller tables in the first round to help
- make some timing/cache attacks harder.
-
-* The library now uses size_t instead of u32bit to represent
- lengths. Also the interfaces for the memory containers have changed
- substantially to better match STL container interfaces;
- MemoryRegion::append, MemoryRegion::destroy, and MemoryRegion::set
- were all removed, and several other functions, like clear and
- resize, have changed meaning.
-
-* Update Skein-512 to match the v1.3 specification
-* Fix a number of CRL encoding and decoding bugs
-* Counter mode now always encrypts 256 blocks in parallel
-* 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()
-* Move PBKDF lookup to engine system
-* The IDEA key schedule has been changed to run in constant time
-* Add Algorithm and Key_Length_Specification classes
-* Switch default PKCS #8 encryption algorithm from AES-128 to AES-256
-* 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
-
-Version 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 compatibility with 1.9
-* In the examples, read most input files as binary
-* The Perl build script has been removed in this release
-
-Version 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 compatibility 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
-
-Version 1.9.10, 2010-08-12
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* Add a constant-time AES implementation using SSSE3. This code is
- based on public domain assembly written by `Mike Hamburg
- <http://crypto.stanford.edu/vpaes/>`_, and described in his CHES
- 2009 paper "Accelerating AES with Vector Permute Instructions". In
- addition to being constant time, it is also significantly faster
- than the table-based implementation on some processors. The current
- code has been tested with GCC 4.5, Visual C++ 2008, and Clang 2.8.
-
-* Support for dynamically loading Engine objects at runtime was also
- added. Currently only system that use ``dlopen``-style dynamic
- linking are supported.
-
-* On GCC 4.3 and later, use the byteswap intrinsic functions.
-
-* 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
-
-Version 1.9.9, 2010-06-28
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A new pure virtual function has been added to ``Filter``, ``name``
-which simply returns some useful identifier for the object. Any
-out-of-tree ``Filter`` implementations will need to be updated.
-
-Add ``Keyed_Filter::valid_iv_length`` which makes it possible to query
-as to what IV length(s) a particular filter allows. Previously,
-partially because there was no such query mechanism, if a filter did
-not support IVs at all, then calls to ``set_iv`` would be silently
-ignored. Now an exception about the invalid IV length will be thrown.
-
-The default iteration count for the password based encryption schemes
-has been increased from 2048 to 10000. This should make
-password-guessing attacks against private keys encrypted with versions
-after this release somewhat harder.
-
-New functions for encoding public and private keys to binary,
-``X509::BER_encode`` and ``PKCS8::BER_encode`` have been added.
-
-Problems compiling under Apple's version of GCC 4.2.1 and on 64-bit
-MIPS systems using GCC 4.4 or later were fixed.
-
-The coverage of Doxygen documentation comments has significantly
-improved in this release.
-
-Version 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 and
- a PK algorithm was used after the second init
-
-* 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. If you really want to use it, pass
- ``--i-know-this-is-broken`` to the script.
-
-Version 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
-
-Version 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, valid
- signatures could be rejected in certain scenarios.
-
-Version 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
-
-Version 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
-
-Version 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
-
-* PK_Signer class now verifies all signatures before releasing them to
- the caller; this should help prevent a wide variety of fault
- attacks, though it does have the downside of hurting signature
- performance, particularly for DSA/ECDSA.
-
-* Changed S2K interface: derive_key now takes salt, iteration count
-
-* Remove dependency on TR1 shared_ptr in 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 configuration option, ``--gen-amalgamation``, creates a pair of
- files (``botan_all.cpp`` and ``botan_all.h``) which contain the
- contents of the library as it would have normally been compiled
- based on the set configuration.
-
-* Many headers are now explicitly internal-use-only and are not installed
-
-* Greatly improve the Win32 installer
-
-* Several fixes for Visual C++ debug builds
-
-Version 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
-
-Version 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
-
-Version 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++
-
-Version 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
-
-Version 1.8.7, 2009-09-09
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* Fix processing multiple messages in XTS mode
-* Add --no-autoload option to configure.py, for minimized builds
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 1.8.4, 2009-07-12
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* Fix a bug in nonce generation in the Miller-Rabin test
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 1.8.0, 2008-12-08
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* Fix compilation on Solaris with GCC
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 1.6.4, 2008-03-08
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* Fix a compilation problem with Visual Studio C++ 2003
-
-Version 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
-
-Version 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
-
-Version 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++
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 1.6.0, 2006-12-17
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* Minor cleanups versus 1.5.13
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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++
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 1.3.8, 2003-12-30
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* Initial introduction of engine support, which separates PK keys from
- the underlying operations. An engine using GNU MP was added.
-
-* DSA, DH, NR, and ElGamal constructors accept taking just the private
- key again since the public key is easily derived from it.
-
-* Montgomery reduction support was added.
-* ElGamal keys now support being imported/exported as ASN.1 objects
-* 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
-
-Version 1.3.7, 2003-12-12
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* Fixed a big security problem in es_unix (use of untrusted PATH)
-* 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
-
-Version 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
-
-Version 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
-
-Version 1.2.8, 2003-11-21
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* Merged several important bug fixes from 1.3.x
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 1.0.2, 2003-01-12
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* Fixed an obscure SEGFAULT causing bug in Pipe
-* Fixed an obscure but dangerous bug in SecureVector::swap
-
-Version 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
-
-Version 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
-
-Version 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)
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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)
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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)
-
-Version 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++
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 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
-
-Version 0.7.0, 2001-03-01
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-* First public release
-
-