@noloader noloader released this Apr 8, 2018 · 2153 commits to master since this release

Assets 2

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.

Download

The download is available from the Crypto++ website. The checksums for the download are below.

  • Original cryptopp564.zip
  • SHA1: effa1770b81dfe05db48ddc0468ead8660929650
  • SHA256: be430377b05c15971d5ccb6e44b4d95470f561024ed6d701fe3da3a188c84ad7
  • SHA512: d9f0ce92f5f95794b5a43d5ae865bfe7bae555f1565210dd4fd9fa9d44b2f801d947e216042099f7d40dd83e3d385a6346343b05431f05bf04276ba85b7ff63f
  • WHIRLPOOL: 344354e2b4a822eb1f431137678067f6a042e710c13ab70e53dca2523f29b8bcf2227e6973f67e69079ddde789f1af764c0913a0e73808e784cec195ef722ce4

Mirrors for the download are below. Note that GitHub and Sourceforge checksums on the ZIP or TAR are different because each creates the archive from sources.

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