The CEX Cryptographic Library in C++
A programmers guide to the CEX++ Cryptographic library

CEX is a library built for safety, speed, and maximum security. This help package contains details on the cryptographic primitives used in the library, their uses, and code examples.


Welcome to the CEX++ Cryptographic Library, version (A7).

Road Map

The current version is v1.0.0.7v (A7 version), which are the major, minor, patch, and release codes, and the update segment letter.

John Underhill
June 12, 2019


The current version is v1.0.0.7v (A7 version), which are the major, minor, patch, and release codes.

Current Release v1.0.0.7v (version A7):
The wide-block Rijndael-256 based authenticated stream cipher RCS, and the AES-NI version ACS
The Dilithium asymmetric signature scheme
The SPHINCS+ asymmetric signature scheme
The NTRU-Prime asymmetric cipher
Authenticated Threefish-256/512/1024 stream ciphers
Authenticated ChaCha-256/512 stream ciphers
The cSHAKE option (RHX/SHX) integrated into HX symmetric ciphers
Asymmetric ciphers updated to the NIST PQ Round 1 versions
Planned Release

Planned Release
Android/iOS/Linux Compatability


Version, June 17, 2018 (with partial release, Sept 27)
Added the NTRU-Prime asymmetric cipher
Added the RSX symmetric cipher
Added the Threefish 256/512/1024 symmetric ciphers
Added CSX512-P80 symmetric cipher
Asymmetric ciphers updated to the NIST PQ Round 1 versions

Version, February 22, 2018
Added the ModuleLWE asymmetric cipher
Added asymmetric cipher Encapsulate/Decapsulate api
Added the 128/256/512/1024 SHAKE XOF function
Updates to random providers and Prngs
The library is now Misra C++ 2014 compliant

Version, November 11, 2017
Added the McEliece asymmetric cipher
Added the 1024bit Keccak digest
Added the Poly1305 Message Authentication Code generator
The library is now SEI-CERT compliant (Misra compliance by
Full coding standards sweep of the library
Integration of std::array and std::unique_ptr throughout
A full optimization cycle completed

Version, June 30, 2017
Added asymmetric cipher interfaces and framework
Added RingLWE asymmetric cipher
Added the Auto Collection seed Provider (ACP)
Addition of the HCR prng
Renaming of the drbgs to xCG format: BCG, DCG, and HCG; Block cipher Counter Generator, Digest and HMAC Counter Generators
Overhaul of SecureRandom and prng classes

Version April 23, 2017
Last of 1.0 sweep of the symmetric library before the second half of the project engages, with thousands of changes made throughout, and the addition of (!experimental) AVX512 support.
Added a vectorized MemoryTools class, with SIMD 128/256/512 copy, clear, set-value, and xor functions.
Integrated vectorized replacements for memcpy, xor, and memset throughout, including cipher mode support for AVX512, (I don't have a xeon to test this, maybe you can help?).
Reformatting of headers (inline accessors removed and the override hint added).
Many small TODOs finished, api synchronized, and formatting and documentation changes throughout.

Version 1.0: March 28, 2017
The first official release of the library, (ciphers and protocols are now tested, documented, and ready for deployment).
Completed Code and Help review cycles.
Added parallelized HMAC implementation.
Added multi-threaded Tree Hashing to all Skein and Keccak digest implementations.
Added SIMD parallelization to Skein512.
Rewrote SHA-2 paralellized tree hashing and added support for the SHA-NI SIMD to SHA-256.
Added a multi-threaded and SIMD parallelized implementation of the SCRYPT key derivation function.


The CEX++ Help pages: http://www.vtdev.com/CEX-Plus/Help/html/index.html
CEX++ on Github: https://github.com/Steppenwolfe65/CEX
CEX .NET on Github: https://github.com/Steppenwolfe65/CEX-NET
The Code Project article on CEX .NET: http://www.codeproject.com/Articles/828477/Cipher-EX-V