CryptoJPM

From Crypto++ Wiki
Jump to: navigation, search

CryptoJPM is the public fork of Crypto++ v5.6.2 made by the user Jean-Pierre Münch.

The goal of the fork is to extend the library up to the point where many newer important algorithms are implemented. The ultimate aim of this fork is to be merged back into the official release of Crypto++.

The is available at Github. Make sure to read the Readme.md file before using the library.

Already implemented features

  • ECIES now supports generic KDFs and generic Hash-Functions instead of P13663-KDF2 and SHA-1
  • HMAC now supports all Hash-Functions
  • PKCS#1 v2 RSA signature padding with appendix is supported
  • A new class of ciphers was introcuded: the tweakable block ciphers
  • The tweakable block cipher Threefish was incorporated
  • The Hash-Function Skein was implemented
  • Along with Skein, Skein-MAC, Skein-KDF and Skein-Signature-Hash were implemented (=SKEINROX initiative)
  • All Skein derivates are also personalizable, i.e. you can assign a publicly known value that will change computations
  • Support for FHMQV is now enabled
  • Support for BLAKE2 family of Hash- and MAC-Functions is now enabled. (Although the fast BLAKE2s-versions produce invalid results, due to an error in the compression function)
  • PEM-Pack is included and some bugs concerning Visual Studio and SDL are fixed.
  • Bouncy-Castle-Pack is now included.
  • Fortuna is now included.

Current state

Current algorithm

Work is in progress to implement scrypt properly.
Thanks need to go to Colin Percival who generously put one of the main functions in the public domain as he was asked.
Current objective is to debug scrypt to find out why test vectors won't hold yet.
As current implementation doesn't pass test vector checks and issue couldn't yet be identified.

It is assumed that _mm_set_epi32() function is causing some trouble, as BLAKE2b fails with this function and BLAKE2s and scrypt both use it.

Roadmap

  • Enabling Fortuna to collect Entropy by itself
  • Implementation of the Argon PBKDF
  • Implementation of PHC winners

Where to participate

If you've got good ideas of which algorithms need to be included, but haven't been mentioned yet, please participate at the discussion.
If you want to contribute code, you can do so on Github.