Skip to content

Crypto++ 8.0 release

Compare
Choose a tag to compare
@noloader noloader released this 28 Dec 04:27
· 1927 commits to master since this release
5e5fb6c

Crypto++ 8.0

Crypto++ 8.0 was released on December 28, 2018. The 8.0.0 release was a major, planned release. There are no CVEs or memory errors.

This release was scheduled as a minor version bump, but we lost ABI compatibility due to adding AlgorithmProvider at PR 681.

Release Notes

The release notes for Crypto++ 8.0 follows.

  • 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
  • ported to MSVC 2017, Xcode 10.0, Sun Studio 12.6, GCC 8.0.1, MacPorts GCC 7.0, Clang 7.0, Intel C++ 17.00, IBM XL C/C++ 13.3

Bug Fixes and Minor Issues

The bug fix and minor issue list for Crypto++ 8.0 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.

  • add ed25519 signatures (Issue 764, PR 767)
  • add x25519 key exchange (Issue 761, PR 762)
  • add Hygon Dhyana processor support (PR 765)
  • add Power9 DARN rng support (Issue 747, PR 748)
  • add HC-128 stream cipher (Issue 679)
  • add Rabbit stream cipher (Issue 678)
  • add Simeck lightweight block cipher (Issue 675)
  • add HIGHT lightweight block cipher (Issue 672)
  • add CHAM lightweight block cipher (PR 670)
  • add LEA lightweight block cipher (Issue 669)
  • add ARM AES asm from Cryptogams (Issue 683)
  • add Make-based cpu feature tests (Issue 741, Issue 737)
  • add VectorSource (Issue 730)
  • add AES-NI accelerated SM4 encryption (Issue 540)
  • add XOP aware ChaCha (Commit ed4d57c)
  • add XOP aware SIMON and SPECK (Commit 210995b)
  • add XOP aware CHAM and LEA (Commit babdf8b)
  • add XOP aware SIMECK (Commit 67f4211)
  • add SSSE3 rotates when available (Commit b4c4c5a)
  • add SONAME to shared object for Solaris (Commit 9886b55)
  • add AlgorithmProvider member function to Algorithm class (PR 681)
  • add search for test vectors and test data (Issue 760)
    • only search well known locations for Linux LSB install
  • remove OS sockets and threads (Issue 178, Issue 208, PR 703)
    • C++11 socket, threads and synchronization classes may be used
  • disable Panama ASM on X86 (Issue 758)
  • add CRYPTOPP_DISABLE_MIXED_ASM define (Issue 756, PR 757)
    • folds two previous defines CRYPTOPP_CLANG_INTEGRATED_ASSEMBER and CRYPTOPP_DISABLE_INTEL_ASM
  • various SunCC improvements for Solaris
  • various XLC improvements for PowerPC
  • make GF2_32 class member of RawIDA
  • move DEFAULT_CHANNEL and AAD_CHANNEL into cryptlib.cpp (Issue 751)
  • various updates to GNUmakefile and GNUmakefile-cross
  • fix PowerMac G4 and G5 builds (Issue 741)
  • rewrite BLAKE2 classes (Issue 731, Commit a65d55a)
  • use C++ compiler for all source files (PR 733)
  • fix missing cpu-features.o in Android shared object (PR 733)
  • rename PPC vector functions from VectorFunc to VecFunc (Commit f6e04e5)
  • fix global optimization bug for ChaCha AVX2 under VS2017 (Issue 735)
  • fix global optimization bug for AES SSE4.1 under VS2017 (Issue 649)
  • add ability to Seek64 in test framework (Issue 732)
  • sync CRYPTOPP_{BIG|LITTLE}_ENDIAN with Autotools (Commit c601213)
  • sync CRYPTOPP_ARM_ACLE_AVAILABLE with Autotools (Commit d3a3189)
  • fix ambiguous symbol BTEA::StaticAlgorithmName (Issue 726)
  • fix LegacyDecryptor and LegacyDecryptorWithMAC (Issue 714)
  • add -xregs=no%appl for SunCC on SPARC (Commit 03297cd)
  • fix missed conditions for XTR-DH domain parameters generation (Commit 44cd7eb)
  • fix FixedSizeAllocatorWithCleanup may be unaligned on some platforms (Issue 709)
  • avoid Singleton<T> when possible (Issue 708)
  • avoid std::call_once completely (Issue 707)
  • add keccack.h and keccack.cpp for shared F1600 (Commit b9a6034)
    • Provides common core function for SHA-3 and Keccack
  • fix SecBlock ELEMS_MAX in Visual Studio .Net (2002 and 2003) (Commit d47f69a)
  • fix compiler crash in Visual Studio .Net (2002 and 2003) due to GCM (Commit c24f17b)
  • fix compile on Visual Studio 2005 without service packs (Commit 874f79c)
  • disable X32 inline assembly (Issue 686, PR 704)
  • fix build with Embarcadero C++ Builder 10.2.3 (Issue 696)
  • rewrite RDRAND and RDSEED classes (Commit 1bd18dd)
  • disable ASM for iOS simulators (Commit 3753a43)
  • refactor bench{N}.cpp, regtest{N}.cpp and validate{N}.cpp
    • resource constrained devices and SunCC could not compile them without hassles
  • fix SPARC alignment problems due to GetAlignmentOf<T>() on word64 (Issue 691, Issue 690, Issue 689, Issue 403)
  • fix Apple feature detection (Issue 685)
  • fix "Error: symbol SHA512_Round is already defined" (Issue 684)
  • workaround GCC and Clang in handling of same buffer for in and out (Commit 49d852e, Commit e580ed5)
  • fix missing Deflator::IsolatedInitialize during Gzip init (Issue 660)
  • remove CRYPTOPP_ALLOW_UNALIGNED_DATA_ACCESS support (Issue 682)
  • remove unneeded code to accomodate variable block size (Issue 535)
  • fix bad CHAM-64/ECB decryption with Clang at -O1 (Issue 677)
  • add AVX and AVX2 runtime feature detection (Issue 671)
  • fix missing Kalyna512_Info parameter (Issue 662)
  • fix Threefish blocksize parameter (Issue 663)
  • fix overcommit resources for Scrypt parallelization (Issue 641)
  • fix various Clang warnings in headers (Issue 655)
  • add recipe to install the library only (Issue 653)
  • back-off HashTransformation asserts (Issue 652)
  • use CRYPTOPP_ASSERT in Keccak and SHA3 (Issue 654)
  • add AdditionalOptions property to VCXPROJ files (Issue 649)
  • fix visibility for SIMON and SPECK (Issue 644)

MinGW 32-bit

MinGW 32-bit is failing self tests for LEA, SIMON, SPECK and SM4. MinGW 64-bit is OK. We don't know the cause and don't have a work-around.

We are tracking the problem at Issue 768, 32-bit MinGW self test failures.

Sockets and threads

Crypto++ removed Operating System specific code for sockets and threads. OS specific socket and thread support was removed to streamline the library and focus on the cryptography. The removal will also avoid porting troubles which surface on occassion. Users can re-install the files or utilize C++11 support, if desired.

The list of files removed are as follows.

  • network.cpp
  • network.h
  • socketft.cpp
  • socketft.h
  • trdlocal.cpp
  • trdlocal.h
  • wait.cpp
  • wait.h
  • winpipes.cpp
  • winpipes.h

A wiki page was setup to document the change and provide the old source files at Sockets and Threads.

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.