Build instructions for Apache Commons Crypto

----------------------------------------------------------------------------------
Requirements:

* Unix System (Linux or Mac), or Windows with MinGW
* JDK 8 or above (environment variable JAVA_HOME must be set)
* Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy
  Files (if running unit tests)
* export JAVA_HOME
* Maven 3.0 or above
* Make
* OpenSSL devel 1.1.1 or above (OpenSSL library header files are required)
* GCC
* G++

Profile win64 on Ubuntu 64-bit:
apt-get install mingw-w64

apt install x86_64-w64-mingw32-gcc

Profile win32 on Ubuntu 64-bit:
apt install gcc-mingw-w64-i686

Profile linux32 on Ubuntu 64-bit:
dpkg --add-architecture i386
apt-get update
apt-get install libssl-dev:i386
sudo apt-get install g++-multilib

----------------------------------------------------------------------------------
Install JCE Unlimited Strength Jurisdiction Policy Files:

Download the Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files from Oracle:

For JDK 1.8: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

Install JCE Unlimited Strength Jurisdiction Policy Files to JDK:

Copy downloaded local_policy.jar and US_export_policy.jar to <java-home>/jre/lib/security/

----------------------------------------------------------------------------------
Verify OpenSSL version:

Check OpenSSL version:

  $ openssl version

If it is not 1.0.1c or above, upgrade OpenSSL version to 1.0.1c or above:

Upgrade OpenSSL in Linux:

You can follow your OS distribution instructions to upgrade OpenSSL to a proper version.

Upgrade OpenSSL in Mac:

  $ brew install openssl101
  $ brew link openssl --force

Get OpenSSL headers: sudo apt -y install libssl-dev

Cross compile to 32-bit from Linux 64-bit: sudo apt-get install gcc-multilib

----------------------------------------------------------------------------------
Maven build goals:

* Clean                       : mvn clean
* Compile                     : mvn compile
* Run tests                   : mvn test
* Run Release Audit Check     : mvn apache-rat:check
* Run API Compatibility Check : mvn japicmp:cmp
* Build the site              : mvn site
* Build Javadocs              : mvn javadoc:javadoc -Ddoclint=all
* Run benchmarks              : mvn clean test -Pbenchmark
* Run test; no JNI build      : mvn clean test -Dmaven.antrun.skip
* Create JAR                  : mvn package
* Run SpotBugs Check          : mvn compile spotbugs:check
* Run Checkstyle Check        : mvn compile checkstyle:check
* Install JAR in M2 cache     : mvn install
* Deploy JAR to Maven repo    : mvn deploy
* Change version              : mvn versions:set -DnewVersion=NEWVERSION

----------------------------------------------------------------------------------
Importing projects to eclipse

File menu: Choose Import..., select "Existing Maven Project".

----------------------------------------------------------------------------------
Building distributions:

Please read http://commons.apache.org/releases/index.html


