Crypto++ 5.6.4 release
Crypto++ 5.6.4
Crypto++ 5.6.4 was released on September 11, 2016. The 5.6.4 release was mostly a maintenance release. The release included a few new classes, like BLAKE2b, BLAKE2s, ChaCha8/12/20, HMQV and FHMQV.
Release Notes
The release notes for Crypto++ 5.6.4 follows.
- maintenance release, honored API/ABI/Versioning requirements
- expanded community input and support
- 22 unique contributors for this release
- fixed CVE-2016-3995
- changed SHA3 to FIPS 202 (F1600, XOF d=0x06)
- added Keccak (F1600, XOF d=0x01)
- added ChaCha (ChaCha8/12/20)
- added HMQV and FHMQV
- Hashed and Fully Hashed MQV
- added BLAKE2 (BLAKE2s and BLAKE2b)
- C++, SSE2, SSE4, ARM NEON and ARMv8 ASIMD
- added CRC32-C
- C/C++, Amd64 CRC, and ARMv8 CRC
- improved Rabin-William signatures
- Tweaked roots e and f
- improved C++11 support
- atomics, threads and fences
- alginof, alignas
- constexpr
- noexcept
- improved GCM mode
- ARM NEON and ARMv8 ASIMD
- ARMv8 carry-less multiply
- improved Windows 8 and 10 support
- Windows Phone, Universal Windows Platform, Windows Store
- improved MIPS, ARMv7 and ARMv8 support
- added scripts setenv-{android | embedded | ios}.sh for GNUmakefile-cross
- aggressive use of -march= and -mfpu= in cryptest.sh
- improved build systems
- Visual Studio 2010 default
- added CMake support (lacks FindCryptopp.cmake)
- archived VC++ 5.0/6.0 project files (vc60.zip)
- archived VS2005 project files (vs2005.zip)
- archived Borland project files (bds10.zip)
- improved Testing and QA
- expanded platforms and compilers
- added code generation tests based on CPU features
- added C++03, C++11, C++14, C++17 testing
- added -O3, -O5, -Ofast and -Os testing
- ported to MSVC 2015 SP3, Xcode 7.3, Sun Studio 12.5, GCC 7.0, MacPorts GCC 7.0, Clang 3.8, Intel C++ 17.00
Bug Fixes and Minor Issues
The bug fix and minor issue list for Crypto++ 5.6.4 follows. Most 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.
The list below has about 70 issues. 10 of the 70 are roughly feature requests that required tracking due to non-trivial code changes. For the remaining 60 issues, the project's test scripts, cryptest.sh
and cryptest.nmake
, uncovered about 47 (78.3%) of them.
- Timing Attack Counter Measure AES (146) and Camellia (203) (AES was CVE'd; Camellia was pre-emptive)
- Implementing GCM on ARMv8 (177)
- Apple Clang 6.3 and undeclared identifier '_rdseed64_step' (183)
- Apple Clang 6.0 (LLVM Clang 3.5) and alignment on __m128i variable (256)
- Apple Clang 5.0 (LLVM Clang 3.4) and undeclared identifier '_mm_clmulepi64_si128' (184)
- Apple Clang 5.0 compiler crash when using pclmulqdq ASM insn (182)
- Apple Clang 6.0 (LLVM Clang 3.5), ARM and "error: no matching function for call to vcombine_u64" (234)
- Apple Clang 6.0 (LLVM Clang 3.5), ARM and "compiler does not support '-mfpu=neon-vfpv4'" (246)
- LLVM Clang and undeclared identifiers '_tzcnt_u32' and '_blsr_u32' (205)
- LLVM Clang 3.5 and "SSE instruction set not enabled" (196)
- LLVM Clang 3.5 and "error: SSSE3 instruction set not enabled" (245)
- Missing symbols for FixedKeyLength::KEYLENGTH under C++11 and C++14 with constexpr (255)
- StaticGetValidKeyLength returns incorrect values due to incorrect preprocessor macro (252)
- GCC, ARMv8 and "fatal error: arm_acle.h: No such file or directory" (238)
- Mingw-w64 and 'sigset_t' does not name a type (237)
- word64 compile problems due to SSE2 and NEON interfaces (236)
- GCC 4.9, Aarch32 and internal compiler error: in expand_shift_1, at expmed.c:2318 (233)
- GCC 4.9, Raspberry Pi 3 and Bus Error (231)
- Sun GCC 4.8 and missing 64-bit BMI/BMI2 instructions (230)
- Sun Studio 12.1-12.3 and "Error: cannot use vector unsigned long long[2] to initialize vector unsigned long long[2]" (229)
- Sun Studio 12.2 and failed compile using PLATFORM_CXXFLAGS (228, Commit 199c00f)
- Sun Studio 12.2-12.5 and failed compile for gcm.cpp (228, Commit 199c00f)
- Sun Studio 12.4 and failed compile for rijndael.cpp (224, Commit 199c00f)
- Sun Studio 12.4 and "Error: The operand ___LKDB cannot be assigned to..." (188)
- Sun Studio 12.3 and 12.4 builds broken (179)
- Sun Studio 12.5 and BLAKE2b runtime failure (247)
- Sun Studio 12.5 and "assertion failed in function pr_post_process_node() @ preopt.c:3868" (220, Commit 199c00f)
- OS X and Valgrind findings for uninitialized variables when using -Ofast (223)
- OS X and incorrect install_name for dynamic library (80)
- Android cross-compile autoconf header check (222)
- ld.gold and i686 without PIC: "/usr/bin/ld: -f may not be used without -shared" (219)
- VS2015 and multiple C4589 warnings, "Constructor of abstract class X ignores initializer for virtual base class Y" (214)
- Blake2s fails under VS2008/Win32/Release for Validation Suite (209)
- CMake and "No rule to make target 'static'. Stop" (192)
- CMake and "MACOSX_RPATH is not specified for the following targets..." (191)
- CMake and "unknown target_include_directories" (181)
- CMake and "include_directories given empty-string as include directory" (199)
- CMake and "write_basic_package_version_file" (198)
- CMake path variable should use CURRENT_SOURCE_DIR (135)
- cpu.h and error: expected unqualified-id before 'int' (193)
- MacPorts GCC should use Clang integrated assembler via -Wa,-q (190)
- MacPorts GCC engages -DCRYPTOPP_DISABLE_ASM (189)
- Cygwin i686/GCC 5.3 and error: 'u_short' was not declared in this scope (187)
- Cygwin x86_64 and failed compile when using std=c++03 (148)
- Cygwin x86_64 and 'fd_set' does not name a type (137)
- Cygwin x86_64 crash with -DDEBUG -Os (100)
- cryptest.exe reports wrong CPU features (176)
- Use std::call for singleton implementation (173)
- Performance based counter for TimerBase on Windows Phone and Windows Store apps (168)
- Deactivate FIPS code paths for Windows Store apps (167)
- NO_SOCKET macro (or similar) to remove sockets only for Windows Store apps (165)
- NonblockingRng using BCryptGenRandom for Windows 10 and above (165)
- VS2015 with Update2 and broken build using /MD (163)
- blake2.cpp and crc.cpp compile issues under [Visual Studio] ARM Developer Prompt (162)
- Failed build on Debian 8 and m68k processor (153)
- validat1.cpp compile issue with NO_OS_DEPENDENCE defined (141)
- Assert when running CMAC example on the wiki (138)
- StringNarrow may violate ODR and lead to UB (127)
- GCC and Clang warnings when compiling with -Wcast-align (122)
- VS2008 C4996 warning due to std::reverse_copy (123)
- Android NDK and failed compile due to g_pAssignIntToInteger (119)
- Inflator throws end of compressed block on complete compressed data (112)
- Crash when setting alternate alphabet for Base32 decoder (108)
- Valgrind reports unintialized reads under 32-bit ARM (105)
- Borland failed compile due to size_t/unsigned int mismatch in PKCS_DigestDecoration::length (102)
- SecBlock and incorrect result during self assignment (Issue 92, Commit 605744d)
- SecBlock and incorrect result during append when T is not a byte (Issue 92, Commit 81482d8)
- secblock.h failed compile and typo inside assert (92)
- Assert during ZDeflate operation (83)
- Assert in misc.h due to NULL pointers in memcpy_s and memmove_s (79)
- PolynomialMod2::operator<<= incorrect result (64)
File Changes
Below is a list of source files that were added or deleted at Crypto++ 5.6.4.
$ git diff-tree -r --summary CRYPTOPP_5_6_3 CRYPTOPP_5_6_4 | grep -v "change" | awk '{$2=$3=""; print $0}' | egrep '(.h|.cpp|.txt|.dat)'
create CMakeLists.txt
create TestData/fhmqv160.dat
create TestData/fhmqv256.dat
create TestData/fhmqv384.dat
create TestData/fhmqv512.dat
create TestData/hmqv160.dat
create TestData/hmqv256.dat
create TestData/hmqv384.dat
create TestData/hmqv512.dat
create TestVectors/blake2.txt
create TestVectors/blake2b.txt
create TestVectors/blake2s.txt
create TestVectors/chacha.txt
create TestVectors/dsa_rfc6979.txt
create TestVectors/keccak.txt
delete TestVectors/sha3.txt
create TestVectors/sha3_224_fips_202.txt
create TestVectors/sha3_256_fips_202.txt
create TestVectors/sha3_384_fips_202.txt
create TestVectors/sha3_512_fips_202.txt
create TestVectors/sha3_fips_202.txt
delete bench.cpp
create bench1.cpp
create blake2.cpp
create blake2.h
create chacha.cpp
create chacha.h
delete cryptlib_bds.cpp
create fhmqv.h
create hmqv.h
create keccak.cpp
create keccak.h
Below is a list of all files that were added or deleted at Crypto++ 5.6.4. The list includes Windows IDE project files and archives.
$ git diff-tree -r --summary CRYPTOPP_5_6_3 CRYPTOPP_5_6_4 | grep -v "change" | awk '{$2=$3=""; print $0}'
create CMakeLists.txt
create TestData/fhmqv160.dat
create TestData/fhmqv256.dat
create TestData/fhmqv384.dat
create TestData/fhmqv512.dat
create TestData/hmqv160.dat
create TestData/hmqv256.dat
create TestData/hmqv384.dat
create TestData/hmqv512.dat
create TestVectors/blake2.txt
create TestVectors/blake2b.txt
create TestVectors/blake2s.txt
create TestVectors/chacha.txt
create TestVectors/dsa_rfc6979.txt
create TestVectors/keccak.txt
delete TestVectors/sha3.txt
create TestVectors/sha3_224_fips_202.txt
create TestVectors/sha3_256_fips_202.txt
create TestVectors/sha3_384_fips_202.txt
create TestVectors/sha3_512_fips_202.txt
create TestVectors/sha3_fips_202.txt
create bds10.zip
delete bench.cpp
create bench1.cpp
create blake2.cpp
create blake2.h
create chacha.cpp
create chacha.h
delete cryptdll.dsp
delete cryptdll.vcproj
create cryptdll.vcxproj
create cryptdll.vcxproj.filters
create cryptest-ios.sh
delete cryptest.dsp
delete cryptest.dsw
create cryptest.nmake
delete cryptest.vcproj
create cryptest.vcxproj
create cryptest.vcxproj.filters
create cryptest.vcxproj.user
delete cryptest_bds.bdsgroup
delete cryptest_bds.bdsproj
delete cryptest_bds.bpf
delete cryptlib.dsp
delete cryptlib.vcproj
create cryptlib.vcxproj
create cryptlib.vcxproj.filters
delete cryptlib_bds.bdsproj
delete cryptlib_bds.cpp
create cryptopp-config.cmake
delete dlltest.dsp
delete dlltest.vcproj
create dlltest.vcxproj
create fhmqv.h
create hmqv.h
create keccak.cpp
create keccak.h
delete make-rdrand.cmd
create setenv-android.sh
create setenv-embedded.sh
create setenv-ios.sh
create vc60.zip
create vs2005.zip
delete vs2010.zip