Crypto++ Changelog

What's new in Crypto++ 8.9.0

Oct 2, 2023
  • Minor release, recompile of programs required
  • Expanded community input and support
  • 88 unique contributors as of this release
  • Add additional tests to datatest.cpp
  • Fix SIMON128 Asan finding on POWER8
  • Fix AES/CFB and AES/CTR modes self test failures when using Cryptogams AES on ARMv7
  • Fix ARIA/CTR mode self test failures when inString==outString
  • Fix HIGHT/CTR mode self test failures when inString==outString
  • Fix Rabbit/CTR mode self test failures when inString==outString
  • Fix HC128/CTR and HC256/CTR mode self test failures when inString==outString
  • Fix Prime Table and dangling reference to a temporary
  • Fix Singleton::Ref when using C++11 memory fences
  • Remove unneeded call to Crop() in Randomize()

New in Crypto++ 8.8.0 (Jun 25, 2023)

  • Minor release, recompile of programs required
  • Expanded community input and support
  • 88 unique contributors as of this release
  • Fix crash in cryptest.exe when invoked with no options
  • Fix crash in library due to GCC removing live code
  • Fix RSA with key size 16 may provide an invalid key
  • Fix failure to build on 32-bit x86
  • Fix failure to build on iPhone Simulator for arm64
  • Fix failure to build on Windows arm64
  • Test for SSSE3 before using the ISA
  • Fix include of <x86intrin.h> when using MSVC
  • Improve performance of CRC32C_Update_SSE42 for x86-64
  • Update documentation
  • Bug fixes and Minor Issues:
  • Fix crash in cryptest.exe when invoked with no options
  • Fix crash in library due to GCC removing live code
  • Fix RSA with key size 16 may provide an invalid key
  • Fix failure to build on 32-bit x86
  • Fix failure to build on iPhone Simulator for arm64
  • Fix failure to build on Windows arm64
  • Test for SSSE3 before using the ISA
  • Fix include of >x86intrin.h< when using MSVC
  • Improve performance of CRC32C_Update_SSE42 for x86-64
  • Update documentation
  • GCC 12 crash:
  • Cryptest.exe began experiencing crashes under GCC 12 and above. It appears GCC started removing live code. Building with GCC 12 and above now requires -fno-devirtualize option. See GH #1134 and GH #1141 for details.
  • CMake support:
  • Abdessattar Sassi is now maintaining the CMake build system. Please visit abdes | cryptopp-cmake on GitHub.
  • Please note alternate build systems like Autotools and CMake are still not officially supported by the Crypto++ project. The project uses the makefile on Unix & Linux, and Visual Studio on Windows.
  • FIPS DLL deprecation:
  • 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.
  • File Changes:
  • Below is a list of all files that were created or renamed at Crypto++ 8.8:
  • $ git diff-tree -r --summary CRYPTOPP_8_7_0 CRYPTOPP_8_8_0 | grep -v "change" | awk '{$2=$3=""; print $0}' | grep -E '(.h|.cpp|.txt|.dat)'
  • Create mode 100644 TestPrograms/test_nodevirtualize.cpp
  • Delete mode 100755 TestScripts/cryptest-cmake.sh
  • Create mode 100644 TestScripts/cryptopp-compiler.cpp

New in Crypto++ 8.7.0 (Aug 8, 2022)

  • The release notes for Crypto++ 8.7 follows.
  • Expanded community input and support
  • 81 unique contributors as of this release
  • Fix RSA key generation for small moduli (GH #1136)
  • Fix AES-GCM with AESNI but without CLMUL (GH #1132)
  • Fix Clang warning with C++17 (GH #1114)
  • Fix MinGW builds due to use of O_NOFOLLOW (GH #1109)
  • Rework CFB_CipherTemplate::ProcessData and AdditiveCipherTemplate::ProcessData (GH #1088, GH #1103)
  • Restored performance and avoided performance penalty of a temp buffer
  • Fix undersized SecBlock buffer in Integer bit operations (GH #1072)
  • Work around several GCC 11 & 12 problems
  • Bug fixes and Minor Issues
  • Fix RSA key generation for small moduli (GH #1136)
  • Work around GCC 12 bad code generation for ECGDSA-RIPEMD (GH #1134)
  • Fix AES-GCM with AESNI but without CLMUL (GH #1132)
  • Work around GCC 9 bad code generation for POWER8 (GH #1115)
  • Fix Clang warning with C++17 (GH #1114)
  • Work around GCC 9 bad code generation for POWER8 (GH #1112)
  • Fix MinGW builds due to use of O_NOFOLLOW (GH #1109)
  • Rework CFB_CipherTemplate::ProcessData and AdditiveCipherTemplate::ProcessData (GH #1088, GH #1103)
  • Restored performance and avoided performance penalty of a temp buffer
  • Use arc4random_buf for non-blocking generator on FreeBSD (GH #1098)
  • Work around Microsoft ARM64 bug with SHA-1 (GH #1096)
  • Work around GCC 11 bug on armhf (GH #1094)
  • Fix undersized SecBlock buffer in Integer bit operations (GH #1072)

New in Crypto++ 8.6.0 (Sep 24, 2021)

  • Minor release, recompile of programs required
  • Expanded community input and support
  • 74 unique contributors as of this release
  • Fix ElGamal encryption
  • Fix ChaCha20 AVX2 implementation
  • Fix AdditiveCipherTemplate<T> ProcessData
  • Add LSH-256 and LSH-512 hash functions
  • Add ECIES_P1363 for backwards compatibility

New in Crypto++ 8.5.0 (Mar 8, 2021)

  • minor release, no recompile of programs required
  • expanded community input and support
  • 70 unique contributors as of this release
  • port to Apple M1

New in Crypto++ 8.4.0 (Jan 2, 2021)

  • Fix SIGILL on POWER8 when compiling with GCC 10
  • Fix potential out-of-bounds write in FixedSizeAllocatorWithCleanup
  • Fix compile on AIX POWER7 with IBM XLC 12.01
  • Fix compile on Solaris with SunCC 12.6
  • Revert changes for constant-time elliptic curve algorithms
  • Fix makefile clean and distclean recipes

New in Crypto++ 8.3.0 (Dec 20, 2020)

  • Minor release, no recompile of programs required
  • Expanded community input and support
  • 66 unique contributors as of this release
  • Use of macro CRYPTOPP_ALIGN_DATA
  • Fix potential out-of-bounds read in ECDSA
  • Fix std::bad_alloc when using ByteQueue in pipeline
  • Fix missing CRYPTOPP_CXX17_EXCEPTIONS with Clang
  • Fix potential out-of-bounds read in GCM mode
  • Add configure.sh when preprocessor macros fail
  • Fix potential out-of-bounds read in SipHash
  • Fix compile error on POWER9 due to vec_xl_be
  • Fix K233 curve on POWER8
  • Add Cirrus CI testing
  • Fix broken encryption for some 64-bit ciphers
  • Fix Android cpu-features.c using C++ compiler
  • Disable RDRAND and RDSEED for some AMD processors
  • Fix BLAKE2 hash calculation using Salt and Personalization
  • Refresh Android and iOS build scripts
  • Add XTS mode
  • Fix circular dependency between misc.h and secblock.h
  • Add Certificate interface
  • Fix recursion in AES::Encryption without AESNI
  • Add missing OID for ElGamal encryption
  • Fix missing override in KeyDerivationFunction-derived classes
  • Fix RDSEED assemble under MSVC
  • Fix elliptic curve timing leaks (CVE-2019-14318)
  • Add link-library variable to Makefiles
  • Fix SIZE_MAX definition in misc.h
  • Add GetWord64 and PutWord64 to BufferedTransformation
  • Use HKDF in AutoSeededX917RNG::Reseed
  • Fix Asan finding in VMAC on i686 in inline asm
  • Fix undeclared identifier _mm_roti_epi64 on Gentoo
  • Fix ECIES and GetSymmetricKeyLength
  • Fix possible divide by zero in PKCS5_PBKDF2_HMAC
  • Refine ASN.1 encoders and decoders
  • Disable BMI2 code paths in Integer class
  • Fix use of CRYPTOPP_CLANG_VERSION
  • Add NEON SHA1, SHA256 and SHA512 from Cryptogams
  • Add ARM SHA1, SHA256 and SHA512 from Cryptogams
  • Make config.h more autoconf friendly
  • Handle Clang triplet armv8l-unknown-linux-gnueabihf
  • Fix reference binding to misaligned address in xed25519
  • Clear asserts in TestDataNameValuePairs

New in Crypto++ 8.2.0 (Apr 28, 2019)

  • Minor release, no recompile of programs required
  • Expanded community input and support
  • 56 unique contributors as of this release
  • Use PowerPC unaligned loads and stores with Power8
  • Add SKIPJACK test vectors
  • Fix SHAKE-128 and SHAKE-256 compile
  • Removed IS_NEON from Makefile
  • Fix Aarch64 build on Fedora 29
  • Fix missing GF2NT_233_Multiply_Reduce_CLMUL in FIPS DLL
  • Add missing BLAKE2 constructors
  • Fix missing BlockSize() in BLAKE2 classes

New in Crypto++ 8.1.0 (Feb 23, 2019)

  • minor release, no recompile of programs required
  • expanded community input and support
  • 56 unique contributors as of this release
  • fix OS X PowerPC builds with Clang (GH #769)
  • add Microsoft ARM64 support (GH #776)
  • fix iPhone Simulator build due to missign symbols (GH #779)
  • add CRYPTOPP_BUGGY_SIMD_LOAD_AND_STORE (GH #782)
  • add carryless multiplies for NIST b233 and k233 curves (GH #783)
  • fix OpenMP build due to use of OpenMP 4 with down-level compilers (GH #787)
  • add SignStream and VerifyStream for ed25519 and large files (GH #796)
  • fix missing AlgorithmProvider in PanamaHash (GH #801)
  • add SHAKE-128 and SHAKE-256 (GH #805)
  • fix AVX2 build due to _mm256_broadcastsi128_si256 (PR #809)
  • add IETF ChaCha, XChaCha, ChaChaPoly1305 and XChaChaPoly1305 (GH #727)
  • Bug fixes and Minor Issues:
  • The bug fix and minor issue list for Crypto++ 8.1 follows. Many non-trivial issues are tracked for auditing and C&A purposes, but the list may not be complete. A number in parenthesis is the GitHub Issue number, if it was tracked. Sometimes a Git commit is referenced, but many trivial GitHub commits are omitted. Missing Issue numbers or lack of consecutiveness usually indicates feature requests and "won't fix/can't fix" type reports
  • avoid use of <stdint.h> types in Donna source code (Commit 9c58ba8f2bae)
  • fix missing ExtendedControlRegister when CRYPTOPP_DISABLE_ASM (Commit 29d1c1772d05)
  • fix GCM build on x86 when using GCC 3.3 (Commit 8edc5cf2d58e)
  • fix SIMECK build on x86 when SSSE3 not available (Commit fc2ead427c77)
  • fix SIMON build on x86 when SSSE3 not available (Commit 58772f3491a5)
  • fix SPECK build on x86 when SSSE3 not available (Commit a9bd504b2f12)
  • fix LEA build on x86 when SSSE3 not available (Commit d00b614e4623)
  • fix CHAM build on x86 when SSSE3 not available (Commit df47185573d9)
  • fix OS X PowerPC builds with Clang (GH #769)
  • add Microsoft ARM64 support (GH #776)
  • fix iPhone Simulator build due to missign symbols (Issue 779)
  • fix Donna self-test failure on PowerPC with IBM XLC/C++ at -O3 (Commit 3d07010ac86b)
  • fix _M_IX86 typo in Integer class (Commit 1f1c90cc290d)
  • add CRYPTOPP_BUGGY_SIMD_LOAD_AND_STORE (Issue 782)
  • add carryless multiplies for NIST b233 and k233 curves (Issue 783)
  • fix OpenMP build due to use of OpenMP 4 with down-level compilers (Issue 787)
  • move NumericLimitsMin and NumericLimitsMax to CryptoPP namespace (Issue 793)
  • add SignStream and VerifyStream for ed25519 and large files (Issue 796)
  • add SecretToPublicKey function for x25519 (Commit cae5f8e0fd23)
  • use IsPowerOf2 in Integer::Divide (Commit 48531785b74d)
  • fix Fedora 7 compile using SSE4.2 (Commit 5b1e6fd28fde)
  • add GNU Hurd support (Commits 4d24876490c0, ef1c8c2bb48b)
  • latch previous ROUNDS in Salsa and ChaCha (Issue 800, PR 804)
  • switch to RFC 8439 for ChaCha-TLS (commit 76bdb328a681)
  • refactor ChaCha and ChaChaTLS use a common core (Commit 70dcd29e0b86)
  • fix missing AlgorithmProvider in PanamaHash (Issue 801)
  • add SHAKE-128 and SHAKE-256 (Issue 805)
  • fix AVX2 build due to _mm256_broadcastsi128_si256 (PR 809, Commit a809dbdbc469)
  • add IETF ChaCha, XChaCha, ChaChaPoly1305 and XChaChaPoly1305 (Issue 727)
  • fix missing symbols in Windows DLL (Commit 3185e93fe303)
  • setenv-android.sh
  • The cross-compile script setenv-android.sh is no longer viable for building the library using the Android NDK. Recent NDK changes has mostly obsoleted the script. We are moving to a new script but it is not ready at the moment. Also see Issue 763, Building for Android using NDK not supported on Windows hosts
  • We have a GitHub setup with yet another build system at cryptopp-android. It provides Android.mk for Android's build system
  • GCC and LLVM PowerPC bugs
  • The Crypto++ library had trouble passing its self tests on PowerPC platforms using recent versions of GCC and Clang. We were aware of the problem for some time but we were not able to isolate the problem in our code
  • We recently learned of issues in GCC and LLVM which caused the runtime problems. The issues and compiler patches are available at GCC Issue 88234 and LLVM Issue 39704. If needed you should incorporate the compiler patches before resorting to -DCRYPTOPP_DISABLE_ASM

New in Crypto++ 8.0.0 (Dec 28, 2018)

  • Major release, recompile of programs required
  • Expanded community input and support
  • 54 unique contributors as of this release
  • Add x25519 key exchange and ed25519 signature scheme
  • Add limited Asymmetric Key Package support from RFC 5958
  • Add Power9 DARN random number generator support
  • Add CHAM, HC-128, HC-256, Hight, LEA, Rabbit, Simeck
  • Fix FixedSizeAllocatorWithCleanup may be unaligned on some platforms
  • Cutover to GNU Make-based cpu feature tests
  • Rename files with dashes to underscores
  • Fix LegacyDecryptor and LegacyDecryptorWithMAC use wrong MAC
  • Fix incorrect AES/CBC decryption on Windows
  • Avoid Singleton<T> when possible, avoid std::call_once completely
  • Fix SPARC alignment problems due to GetAlignmentOf<T>() on word64
  • Add ARM AES asm implementation from Cryptogams
  • Remove CRYPTOPP_ALLOW_UNALIGNED_DATA_ACCESS support

New in Crypto++ 7.0.0 (Apr 10, 2018)

  • Major release, recompile of programs required
  • Expanded community input and support
  • 48 unique contributors as of this release
  • Fix incorrect result when using Integer::InverseMod
  • May be CVE worthy, but request was not submitted
  • Fix ARIA/CTR bus error on Sparc64
  • Fix incorrect result when using a_exp_b_mod_c
  • Fix undeclared identifier uint32_t on early Visual Studio
  • Fix iPhoneSimulator build on i386
  • Fix incorrect adler32 in ZlibDecompressor
  • Fix Power7 test using PPC_FEATURE_ARCH_2_06
  • Workaround incorrect Glibc sysconf return value on ppc64-le
  • Add KeyDerivationFunction interface
  • Add scrypt key derivation function
  • Add Salsa20_Core transform callable from outside class
  • Add sbyte, sword16, sword32 and sword64
  • Remove s_nullNameValuePairs from unnamed namespace
  • Ported to MSVC 2017, Xcode 9.3, Sun Studio 12.5, GCC 8.0.1, MacPorts GCC 7.0, Clang 5.0, Intel C++ 17.00, IBM XL C/C++ 13.1
  • Bug Fixes and Minor Issues:
  • Fix incorrect result when using Integer::InverseMod (Issue 602)
  • May be CVE worthy, but a request was not submitted
  • Fix warning due to different string alignments in mqueue.cpp (Issue 591, PR 603)
  • Add PowerPC Power8 SHA hashing (Issue 513)
  • Define AT_HWCAP/AT_HWCAP2 if getauxval unavailable (PR 594)
  • Fix compile error on Windows due to symbol U collision (Issue 599)
  • Fix Adler32 error in ZlibDecompressor in multithreaded programs (Issue 596, PR 600)
  • Fix ARIA/CTR bus error on Sparc64 (Issue 597)
  • Fix GCC version for RDSEED intrinsic (PR 598)
  • Fix incorrect result when using a_exp_b_mod_c (Issue 602)
  • Fix undeclared identifier uint32_t on early Visual Studio (Issue 608)
  • Add sbyte, sword16, sword32 and sword64 (Issue 608, 609)
  • Add KeyDerivationFunction interface (Issue 610)
  • Cutover PBKDF to KeyDerivationFunction interface (PR 612)
  • Add Scrypt key derivation function (Issue 613)
  • Remove extraneous semi-colons in source files (PR 605-625)
  • Re-enable OS X and iOS tests on Travis (PR 627)
  • Add OpenMP support to Scrypt (PR 628)
  • Add Salsa20_Core transform (Issue 630)
  • Remove s_nullNameValuePairs from unnamed namespace (Issue 631)
  • Rename ECGDSA_ISO15946 -> ECGDSA (PR 634)
  • Fix iPhoneSimulator build on i386 (Issue 635)
  • Make CAST temporaries class members (Commit 71e9fec)
  • Fix Scrypt and Coverity findings CID 189203, 189204, 189205 (Commit 11e0760)
  • Change order of member initialization in ASN.1 decoders (Commit 64a15cf)
  • Make AuthenticatedSymmetricCipher::AlgorithmName non-pure (Commit 62a9574)
  • Add CPU feature queries for AIX (Commit 04e3618)

New in Crypto++ 6.1.0 (Feb 23, 2018)

  • minor release, maintenance items
  • expanded community input and support
  • 46 unique contributors as of this release
  • use 2048-bit modulus default for DSA
  • fix build under Linuxbrew
  • use /bin/sh in GNUmakefile
  • fix missing flags for SIMON and SPECK in GNUMakefile-cross
  • fix ARM and MinGW misdetection in GNUMakefile
  • port setenv-android.sh to latest NDK
  • fix Clang check for C++11 lambdas on FreeBSD
  • convert Simon and Speck to little-endian implementation
  • use LIB_MAJOR for ABI compatibility
  • fix ODR violation in AdvancedProcessBlocks_{ARCH} templates
  • handle C++17 std::uncaught_exceptions
  • ported to MSVC 2017, Xcode 8.1, Sun Studio 12.5, GCC 8.0.1, MacPorts GCC 7.0, Clang 4.0, Intel C++ 17.00, IBM XL C/C++ 13.1

New in Crypto++ 5.6.2 (Oct 18, 2013)

  • changed license to Boost Software License 1.0
  • added SHA-3 (Keccak)
  • updated DSA to FIPS 186-3 (see DSA2 class)
  • fixed Blowfish minimum keylength to be 4 bytes (32 bits)
  • fixed Salsa validation failure when compiling with GCC 4.6
  • fixed infinite recursion when on x64, assembly disabled, and no AESNI
  • ported to MSVC 2012, GCC 4.7, Clang 3.2, Solaris Studio 12.3, Intel C++ Compiler 13.0

New in Crypto++ 5.6.0 (Oct 24, 2009)

  • added AuthenticatedSymmetricCipher interface class and Filter wrappers
  • added CCM, GCM (with SSE2 assembly), EAX, CMAC, XSalsa20, and SEED
  • added support for variable length IVs
  • added OIDs for Brainpool elliptic curve parameters
  • improved AES and SHA-256 speed on x86 and x64
  • fixed incorrect VMAC computation on message lengths that are >64 mod 128 (x86 assembly version is not affected)
  • fixed compiler error in vmac.cpp on x86 with GCC -fPIC
  • fixed run-time validation error on x86-64 with GCC 4.3.2 -O2
  • fixed HashFilter bug when putMessage=true
  • removed WORD64_AVAILABLE; compiler support for 64-bit int is now required
  • ported to GCC 4.3, C++Builder 2009, Sun CC 5.10, Intel C++ Compiler 11

New in Crypto++ 5.5.2 (Oct 24, 2009)

  • ported x64 assembly language code for AES, Salsa20, Sosemanuk, and Panama to MSVC 2005 (using MASM since MSVC doesn't support inline assembly on x64)
  • fixed Salsa20 initialization crash on non-SSE2 machines
  • fixed Whirlpool crash on Pentium 2 machines
  • fixed possible branch prediction analysis (BPA) vulnerability in MontgomeryReduce(), which may affect security of RSA, RW, LUC
  • fixed link error with MSVC 2003 when using "debug DLL" form of runtime library
  • fixed crash in SSE2_Add on P4 machines when compiled with MSVC 6.0 SP5 with Processor Pack
  • added support for newly released compilers: MSVC 2008, GCC 4.2, Sun CC 5.9, Intel C++ Compiler 10.0, and Borland C++Builder 2007

New in Crypto++ 5.5.1 (Oct 24, 2009)

  • fixed VMAC validation failure on 32-bit big-endian machines

New in Crypto++ 5.5 (Oct 24, 2009)

  • added VMAC and Sosemanuk (with x86-64 and SSE2 assembly)
  • improved speed of integer arithmetic, AES, SHA-512, Tiger, Salsa20, Whirlpool, and PANAMA cipher using assembly (x86-64, MMX, SSE2)
  • optimized Camellia and added defense against timing attacks
  • updated benchmarks code to show cycles per byte and to time key/IV setup
  • started using OpenMP for increased multi-core speed
  • enabled GCC optimization flags by default in GNUmakefile
  • added blinding and computational error checking for RW signing
  • changed RandomPool, X917RNG, GetNextIV, DSA/NR/ECDSA/ECNR to reduce the risk of reusing random numbers and IVs after virtual machine state rollback
  • changed default FIPS mode RNG from AutoSeededX917RNG to AutoSeededX917RNG
  • fixed PANAMA cipher interface to accept 256-bit key and 256-bit IV
  • moved MD2, MD4, MD5, PanamaHash, ARC4, WAKE_CFB into the namespace "Weak"
  • removed HAVAL, MD5-MAC, XMAC