-Changed directory structure of Crypto++: --Source files are now in "Source\CryptoPP" below Solution file --Temporary files now go into "Temporary\Platformtoolset\PLatform\Configuration" below Solution file --Output files now go into "Output\Platformtoolset\PLatform\Configuration" below Solution file --example of "Platformtoolset\PLatform\Configuration": v110\x64\Release or v100\Win32\Debug -Changed code in Rijndael to use _malloca instead of alloca, added freea to the pointer, modifications passed consistency checks -Updated cpu.h according to the patch provided by Crypto++-User "Mouse" -Patch of GNUMakefile failed, fix will be requested soon -ECIES: changed beahavior: Now templatziable with own Hash-Funktion (usage of SHA1 was forced) and own KDF (usage of P13663_KDF2 with SHA1 was forced) set old forced values as standards for backwards-compability -Changed HMAC: Has Classic Version (for SHA-1, SHA-2,...), Compability Version (nested construction for SHA-3) and fast construction (single hash, for SHA-3), not yet tested with test vectors (for SHA-2), consistency should be given -Added PKCS1_v21 RSA-PSS signature scheme with appendix, not yet tested with test vectors -Added new error class: --Invalid state: thrown if class is in an invalid state (f.ex. a hash function that notice in Final() that state's invalid) -Added classes for operationality of tweakable block ciphers: --SimpleTweakingInterface: Tweak-based version of SimpleKeyingInterface --TweakableBlockTransformation: Derivation of SimpleTweakingInterface and BlockTransformation, defining ProcessAndXorBlock as special case of ProcessAndXorBlockWithTweak --TweakableBlockCipher: Derivation of TweakableBlockTransformation and SimpleTweakInterface --FixedTweakLength: Defines the key-constants for tweak-based block ciphers --VariableTweakLength: same as FixedTweakLength --InvalidTweakLength: thrown if tweak length is invalid, behaves like InvalidKeylength --TweakableBlockCipherDocumentation: adds the documentation for tweakable blockciphers, behavior copied from BlockCipherDocumentation --NOTICE: FOR THE FOLLOWING CLASSES, THERE MAY BE A MORE ELEGANT WAY TO IMPLEMENT THEM --SimpleTweakingInterfaceImpl: implements the SimpleTweakingInterface functions --SimpleTweakableKeyingInterfaceImpl: combines functionality provided by SimpleTweakingInterfaceImpl and SimpleKeyingInterfaceImpl --TweakableBlockCipherImpl: provides same functionality as BlockCipherImpl for TweakableBlockCipher --TweakableBlockCipherFinal: provides same functionality as BlockCipherImpl for TweakableBlockCipher -Added Threefish --Added classes for operationality of Threefish: --Threefish is a tweakable block cipher and categorized correctly --Threefish256_Info: enlists the specific behavior of Threefish-256 --Threefish512_Info: enlists the specific behavior of Threefish-512 --Threefish1024_Info: enlists the specific behavior of Threefish-1024 --Threefish_256: encrypts / decrypts data with Threefish-256 --Threefish_512: encrypts / decrypts data with Threefish-256 --Threefish_1024: encrypts / decrypts data with Threefish-256 --all the above Threefish classes passed consistency and test vector checks successfully --following is compile-time switch: (default: off) --Threefish_Info: gives general information about the general Threefish --Threefish: dynamically loads the correct Threefish based upon the keysize, is incompatible with modes that require an IV, that request block size before they key, needs shared_ptr :( -Added Skein --all test vector checks are passed on a Little-Endian-Machine (Intel x64) --possible issue: Test vector checks may fail on Big-Endian-Platforms, due to (possibly) incorrect conversion operations --Added classes for Added classes for operationality of Skein: --Skein: default class, does not specify block/digest- size directly (as constant), recommended for Standard-Hashing --Skein_512: Skein-512-512 --Skein_256: Skein-512-256 --Skein_384: Skein-512-384 --Skein_224: Skein-512-224 -------------------------------------------------- ALL ABOVE: RELEASED CRYPTO++ UNOFFICIAL v.5.7.0 beta1 / CRYPTOJPM v5.7.0 beta1 -------------------------------------------------- -redesigned PasswordBasedKeyDerivationFunction class --now allows usage of mCost and tCost parameters --removed purpose byte. If you need it you must specify it in class (-> constructor parameter?) or specify a "new" DeriveKey function (locally) with byte available --provides some capabilities to determine parameters based upon time and other parameters -moved implementation of worker functions of PBKDF1 & PBKDF2 behind declaration of PKCS#12 PBKDF -changed PBKDF classes to match PBKDF-interface --changed PBKDF1 to match new interface, kept old worker function --changed PBKDF2, added & 0xFF for the byte-conversion to ensure error-free debugging --changed PBKDF2 to match new interface, kept old worker function --changed PKCS12 PBKDF to match new interface, kept old worker function -added scrypt --added scrypt_Base and scrypt classes and typedef'ed scrypt as OriginalScrypt --scrypt: some function as HMAC for HMAC_Base: provides Hash-Function and static naming and provides derive key function (highest level only) because PBKDF2 needs HASH at compile-time --scrypt_Base: implements interface functions and main logic for scrypt --check scrypt test vectors on big endian machine, Salsa20/8 core may cause problems -redesigned Skein --added Skein_Main_Provider that provides main functionality to different areas of Skein usage --added UBI class within Skein_Main_Provider as main worker class --added Skein_Base class within Skein_Main_Provider as main base for all other functionalities --added Skein (typedef of Skein_Main_Provider::Hash) to provide same functionality as old skein with personalization --added SkeinMAC (typedef of Skein_Main_Provider::MAC) to provide MAC-like functionality with personalization --added SkeinKDF (typedef of Skein_Main_Provider::KDF) to provide KDF-like functionality using Skein - with personalization and Key ID --added SkeinSignatureHash (typedef of Skein_Main_Provider::SignatureHash) to provide the capability to derive hashes for signatures where the public key is part of the hash, thus binding public key and message hash -------------------------------------------------- ALL ABOVE: UNRELEASED CRYPTO++ UNOFFICIAL v.5.7.0 beta2 / CRYPTOJPM v5.7.0 beta2 -------------------------------------------------- NOTE: SCRYPT IS NOT YET OPERATIONAL To come: -addition of Test-Vector files in the proper directory for: Skein, Threefish, PKCS#1 v2 Signature Scheme, (ECIES?), scrypt -Patch to enable FHMQV (after being put to public domain) -maybe: patch to enable ECIES compability with BouncyCastle -maybe: patch to enable compability to OpenSSL data format (PEM) -implemtation of BLAKE2 family / BLAKE (SHA-3-Finalist) -implementation of PHC winners