blob: 7529ae165a3c7fe6d5d205975b63307dfd8c3f9b [file] [log] [blame]
Apache Commons Crypto 1.0.0
RELEASE NOTES
The Apache Commons Crypto team is pleased to announce the release of Apache Commons Crypto 1.0.0
Apache Commons Crypto is a cryptographic library optimized with AES-NI (Advanced Encryption
Standard New Instructions). It provides Java API for both cipher level and Java stream level.
Developers can use it to implement high performance AES encryption/decryption with the minimum
code and effort. Please note that Crypto doesn't implement the cryptographic algorithm such as
AES directly. It wraps to Openssl or JCE which implement the algorithms.
Features
--------
1. Cipher API for low level cryptographic operations.
2. Java stream API (CryptoInputStream/CryptoOutputStream) for high level stream encryption/decryption.
3. Both optimized with high performance AES encryption/decryption. (1400 MB/s - 1700 MB/s throughput in modern Xeon processors).
4. JNI-based implementation to achieve comparable performance to the native C/C++ version based on OpenSsl.
5. Portable across various operating systems (currently only Linux/MacOSX/Windows);
Apache Commons Crypto loads the library according to your machine environment (it checks system properties, `os.name` and `os.arch`).
6. Simple usage. Add the commons-crypto-(version).jar file to your classpath.
Export restrictions
-------------------
This distribution includes cryptographic software.
The country in which you currently reside may have restrictions
on the import, possession, use, and/or re-export to another country,
of encryption software. BEFORE using any encryption software,
please check your country's laws, regulations and policies
concerning the import, possession, or use, and re-export of
encryption software, to see if this is permitted.
See <http://www.wassenaar.org/> for more information.
The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS),
has classified this software as Export Commodity Control Number (ECCN) 5D002.C.1,
which includes information security software using or performing
cryptographic functions with asymmetric algorithms.
The form and manner of this Apache Software Foundation distribution makes
it eligible for export under the License Exception
ENC Technology Software Unrestricted (TSU) exception
(see the BIS Export Administration Regulations, Section 740.13)
for both object code and source code.
The following provides more details on the included cryptographic software:
* Commons Crypto use [Java Cryptography Extension](http://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec.html) provided by Java
* Commons Crypto link to and use [OpenSSL](https://www.openssl.org/) ciphers
Initial release
===============
The initial release is known to build on Linux, MacOS/X and Windows (using MinGW).
It may build on other systems.
Please note that the JNA interface to OpenSSL is a preliminary release.
It is relatively slow, but may be of use on systems which aren't yet supported by the JNI code.
Changes in this version include:
New features:
o CRYPTO-68: Enable common code quality reports.
o CRYPTO-11: User guide documentation . Thanks to Ke Jia, Jerry Chen.
o CRYPTO-12: Rename CryptoInputStream to CipherInputStream and CryptoOutputStream to CipherOutputStream . Thanks to Xianda Ke.
o CRYPTO-13: The API differences between apache.commons.crypto and JCE . Thanks to Xianda Ke.
o CRYPTO-40: Remove the full qualified package name for shadowed classes . Thanks to Xianda Ke, Jerry Chen.
o CRYPTO-42: Remove the header files required for cross platform compilation . Thanks to Dian Fu, Jerry Chen.
o CRYPTO-45: Document how to build Commons Crypto . Thanks to Dian Fu, Benedikt Ritter.
o CRYPTO-48: Setup site build as defined in commons-parent pom . Thanks to Benedikt Ritter, Dapeng Sun.
Fixed Bugs:
o CRYPTO-65: Warnings compiling on MacOSX - JNIEXPORT redefined. Thanks to sebb.
o CRYPTO-29: Make sure Cipher.ENCRYPT_MODE is consistent with JDK . Thanks to Dian Fu, Sebb.
o CRYPTO-30: Mutable fields should be private . Thanks to Ferdinand Xu, Sebb.
o CRYPTO-34: JavaSecureRandom should throw Exception if it cannot create the instance . Thanks to Dapeng Sun, Sebb.
o CRYPTO-47: Fix build of MAC_OS . Thanks to Dapeng Sun.
o CRYPTO-49: CRYPTO-1 Fix build of X86 . Thanks to Dapeng Sun.
o CRYPTO-57: Fix build on Mac OS Thanks to Benedikt Ritter.
o CRYPTO-61: Fix possible NPE in OpensslCryptoRandom Thanks to Hendrik Saly.
o CRYPTO-54: US Export classification and ECCN registration for encryption Thanks to Stian Soiland-Reyes, Jerry Chen, Benedikt Ritter, Gary Gregory.
Changes:
o CRYPTO-26: Utility classes should not have public constructors . Thanks to Dapeng Sun.
o CRYPTO-28: Update the README.md of Apache Commons Crypto . Thanks to Ferdinand Xu, Ke Jia.
o CRYPTO-3: Change default cipher as OpensslCipher . Thanks to ferdinand xu.
o CRYPTO-31: Make fields final wherever possible . Thanks to Ferdinand Xu, Sebb.
o CRYPTO-33: SecureRandom shadows JVM class . Thanks to Xianda Ke, Sebb.
o CRYPTO-38: Always use blocks . Thanks to Dapeng Sun, Gary Gregory.
o CRYPTO-7: Rename source code in Chimera to Apache name space . Thanks to ferdinand xu.
o CRYPTO-62: Add multithreaded related tests Thanks to Hendrik Saly.
Historical list of changes: https://commons.apache.org/proper/commons-crypto/changes-report.html
For complete information on Apache Commons Crypto, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Apache Commons Crypto website:
https://commons.apache.org/proper/commons-crypto/