Proposal for Apache Commons Crypto Package

(0) Rationale

Providing Java based optimized and high performance cryptographic IO streams for the applications who wants to implement the data encryption. It also provides cipher level API to use. It does provide the openssl API integration and provide the fallback mechanism to use JCE when openssl library unavailable.

(Note: Please note that Commons Crypto doesn’t implement the cryptographic algorithm such as AES directly. It wraps to Openssl or JCE which implement algorithms.)

(1) Scope of the Package

This proposal is to create a package of cryptographic IO classes with the integration of Openssl library.

It focuses on AES-NI optimizations mainly and it can be extended to other algorithms based on demand from the users later.

(1.5) Interaction With Other Packages

IO Commons Crypto relies on standard JDK 7 (or later) APIs for production deployment and on OpenSSL 1.0.1c devl libraries. It utilizes the JUnit unit testing framework, but this is of interest only to developers of the component. The functionality provided by Commons Crypto is currently in use by Apache Hadoop and Apache Spark, and both of those communities have expressed interest in changing their dependency to be on the central Commons Crypto package once it exists.

(2) Initial Source of the Package

The initial classes came from the Apache Hadoop.

The proposed package name for the new component is org.apache.commons.crypto.

(3) Required Apache Commons Resources

(4) Initial Committers