Crypto++ 8.0 release
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, avoidstd::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 toAlgorithm
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
andCRYPTOPP_DISABLE_INTEL_ASM
- folds two previous defines
- various SunCC improvements for Solaris
- various XLC improvements for PowerPC
- make GF2_32 class member of RawIDA
- move
DEFAULT_CHANNEL
andAAD_CHANNEL
intocryptlib.cpp
(Issue 751) - various updates to
GNUmakefile
andGNUmakefile-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
andLegacyDecryptorWithMAC
(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
andvalidate{N}.cpp
- resource constrained devices and SunCC could not compile them without hassles
- fix SPARC alignment problems due to
GetAlignmentOf<T>()
onword64
(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.