Force a reseed in HMAC_RNG after 20 bytes have been added, rather than
waiting for a full kilobyte. This is for the benefit of DSA/ECDSA
which want a call to add_entropy to update the state in some way,
passing just a hash input which might be as small as 20 bytes.
Be more conservative about entropy estimates. In particular, instead
of giving /dev/random, EGD, and CryptoAPI a full 8 bits per byte of
entropy, estimate at 6 bits.

In the proc walker, allow more files to be read, read more of any
particular file, and count each bit for 1/10 as much as before.
Reading more of the file seems especially valuable, as some files are
quite random, whereas others are very static, and this should ensure
we read more of the actually unpredictable inputs.

Prefer /dev/random over /dev/urandom
Avoid having more than one directory open at a time by just keeping a
list of directory names (without the open DIRs) plus the one currently
active dir.
Avoid blocking more than 100 ms in the random device reader. Scale up
how much we ask for on the basis of how many bits we're counting each
byte as contributing. Change /dev/*random estimate to 7 bits per byte.

Small cleanup in HMAC_RNG.
The benchmark examples ran very slowly because they were passing
16*1024 to an argument that treated those values as KiB, it took the
RNG ~3 seconds to create 16 MiB of data to randomize the input. Change
to 16. Also cap the value that can be passed to --buf-size to 1024,
for a 1 MiB buffer.
Allow the semi-standard but rarely used 1.3.132.1.12 OID for ECDH keys
on decoding by default, and add a comment showing how to enable it for
encoding.
Typo in comment
In Python 3 subprocess returns bytes instead of strings. We can
convert using bytes.decode, but that's not available in Python 2.5 and
there doesn't seem to be a good way to test for it at runtime. Instead
use a slight hack of calling subprocess with universal_newlines=True,
which causes Py3k subprocess to assume the output is UTF-8 and decode
accordingly (this should be fine in these cases since monotone will
output a hex string and GCC will just output a version number). On
Python 2 it's mostly ignored (especially as we call strip on the
result anyway).
Don't require a <source> entry in info.txt, if not set use *.cpp
Add more comments explaining what is going on in dl_work_factor
Remove the client SRP6 class, really free standing functions are fine
for this.

Add a new function that identifies a named SRP group from the N/g
params - this is important as we need to verify the SRP groups, the
easiest way to do that is to to force them to be a known/published
value.

Add the 1536, 3072, 4096, 6144, and 8192 bit groups from RFC 5054
Use just 256 bits of secret exponent (recomended value in RFC 5054).
Much faster, especially when using 8192 bit groups as OpenSSL does by
default.

Use BOTAN_DLL symbol visibility macros.
The comments incorrectly described end as returning the last element,
rather than one past the end. Reported by Stuart Maclean on the
mailing list.
merge of '058444ec216dd9690938c82922d911df2da535b4'
     and 'bc49da394c675517b140a404c19094020d6e9d40'
Avoid a few maintainer mode flag warnings. Remove -Weffc++ from the
list of maintainer mode flags. It produces some very useful warnings,
but also a lot of noisy junk that I really don't care about.
Some fixes for very minimal builds (typically due to --no-autoload)
merge of '18430eaa6fe25e978f72f25c0531dab0aba55894'
     and '50fa70d871f837c3c3338fabf5fb45649669aabf'
Fix various typos, and remove an unused macro in checks/bench.cpp

All reported by Patrick Pelletier.
Patrick Pelletier pointed out the hook for Qt_Mutex in libstate.cpp
was broken, and after fixing that and trying to compile the module it
becamse clear that the Qt mutex did not work at all with recent Qt
versions. Taking this as a clear indicator that it is not being used,
remove it.
Patrick Pelletier noted on the mailing list that the implementation of
Camellia exposed by the OpenSSL module is parameterized by the key
length, much as AES is, while the version in the main source uses a
single name/type for all variants. For consistency, convert to using a
key length parameterized name in our version as well. In the future
this might allow for better loop unrolling, etc but currently we don't
make use of that.