3 Building BorderCastle
Leon Poyyayil edited this page 2025-10-25 08:07:45 +02:00

Build Instructions for BorderCastle

  1. Clone this repository into a local work directory, called IC_HOME in the following steps, and make it the current directory.
  2. Download the full distribution from the BouncyCastle GitHub release page, e.g. bc-java-r1v81.zip.
  3. Unpack the downloaded archive and rename the created folder to crypto:
    IC_HOME$ unzip bc-java-r1v81.zip
    IC_HOME$ mv bc-java-r1v81 crypto
    IC_HOME$ chmod -R u+w crypto/*
  1. This should result in a directory structure similar to the following:
    IC_HOME$ ls -Al
    total 296260
    drwx------ 0 lep lep         0 2015-06-21 08:34:29 bin/
    drwx------ 0 lep lep         0 2016-12-10 20:26:29 bordercastle/
    drwx------ 0 lep lep         0 2016-12-10 20:02:26 bouncycastle/
    drwx------ 0 lep lep         0 2017-01-25 17:40:00 crypto/
    -rw------- 0 lep lep  53387945 2025-06-17 12:43:17 bc-java-r1v81.zip
    drwx------ 0 lep lep         0 2013-08-08 13:40:42 doc/
    drwx------ 0 lep lep         0 2015-06-21 08:34:28 maven/
    IC_HOME$
  1. Execute the script to convert the project structure to maven:
    IC_HOME$ bin/bouncycastle-to-maven-layout.sh
  1. Execute the script to perform the package renaming and other replacements:
    IC_HOME$ bin/bouncycastle-to-bordercastle.sh
  1. Apply the patch for the chosen version to add the BorderCastle specific additions and changes:
    IC_HOME$ patch -p1 < bouncycastle/crypto-1.81.patch
  1. Compile the libraries with Maven (assuming a version compatible with Maven 3.0.5):
    IC_HOME$ mvn clean install
  1. If all went well, you'll find the built libraries in the target folder in each of the maven project folders, e.g.:
    IC_HOME$ find -name "*.jar"
    ./ic-light/target/ic-light-1.81.jar
    ./ic-mail/target/ic-mail-1.81.jar
    ./ic-pg/target/ic-pg-1.81.jar
    ./ic-pkix/target/ic-pkix-1.81.jar
    ./ic-prov/target/ic-prov-1.81.jar
    ./ic-test/target/ic-test-1.81.jar
    ./ic-tls/target/ic-tls-1.81.jar
    ./ic-util/target/ic-util-1.81.jar
    IC_HOME$