Home Page | Download | Manual | GitHub | Mediawiki | Mailing lists | Contributions | Related links |
Crypto++ 8.6 was released on September 24, 2021. The 8.6 release was a minor, unplanned release. There was one CVEs and no memory errors.
This release clears CVE-2021-40530 and fixes a problem with ChaCha20 AVX2 implementation. The CVE was due to ElGamal encryption using a work estimate to size encryption exponents instead subgroup order. The ChaCha20 issue was due to mishandling a carry in the AVX2 code path. The ChaCha20 issue was difficult to duplicate, so most users should not experience it.
The download is available from the Crypto++ website. The checksums for the download are below. Release signatures can be verified using GnuPG according to Release Signing.
Mirrors for the download are below. Note that GitHub checksums on the ZIP or TAR are different because the service creates the archive from sources.
The release notes for Crypto++ 8.6 follows.
ElGamal encryption was changed to use exponents of subgroup order due to On the (in)security of ElGamal in OpenPGP. Formerly the size of the exponent was selected based on an estimated work factor.
The AdditiveCipherTemplate<T> ProcessData fix was required because GCC began removing code when the input and output buffers were the same buffer (i.e., in-place encryption or decryption). We believe GCC began removing the code due to alias violations. The fix breaks binary compatibility so a recompile is required.
A recompile is required.
The FIPS DLL used to be an important artifact for Windows builds. NIST moved the Crypto++ library to the Historical Validation List in 2014. The Windows DLL is no longer validated.
The project files to build the FIPS DLL are cryptdll.vcxproj and dlltest.vcxproj. The projects are now deprecated and subject to removal.
Below is a list of all files that were added at Crypto++ 8.6. The list omits test programs that were renamed from *.cxx to *.cpp.
$ git diff-tree -r --summary CRYPTOPP_8_5_0 CRYPTOPP_8_6_0 | grep -v "change" | awk '{$2=$3=""; print $0}' | grep -E '(\.h|\.cpp|\.txt|\.dat)' create TestVectors/lsh.txt create TestVectors/lsh256.txt create TestVectors/lsh512.txt create TestVectors/lsh512_256.txt create lsh.h create lsh256.cpp create lsh256_avx.cpp create lsh256_sse.cpp create lsh512.cpp create lsh512_avx.cpp create lsh512_sse.cpp