144 lines
5 KiB
Bash
Executable file
144 lines
5 KiB
Bash
Executable file
#!/bin/bash
|
|
## -- FILE ------------------------------------------------------------------
|
|
## name : bordercastle.sh
|
|
## project : BoarderZone: BorderCastle
|
|
## created : Leon Poyyayil - 2013-08-01
|
|
## language : Linux shell script
|
|
## environment: GNU bash
|
|
## copyright : (c) 1990-2025 by Leon Poyyayil (private), Switzerland
|
|
## license : Bouncy Castle License. see LICENSE
|
|
## --------------------------------------------------------------------------
|
|
|
|
# this script builds the Bouncy Castle JCE provider from scratch with changed
|
|
# package names to allow for independency of other Bouncy/Spongy Castle users.
|
|
|
|
SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
MAIN_DIR=$(readlink -f "$SCRIPT_DIR")
|
|
pushd $MAIN_DIR >/dev/null
|
|
. bordercastle.conf
|
|
|
|
BC_PKG="r${VERSION_MAJOR}rv${VERSION_MINOR}"
|
|
BC_DIR="bc-java-${BC_PKG}"
|
|
BC_URL="https://github.com/bcgit/bc-java/archive/refs/tags/${BC_PKG}.zip"
|
|
BC_ZIP=bouncycastle/crypto-${BC_VER}.zip
|
|
PATCH=bouncycastle/crypto-$BC_VER.patch
|
|
|
|
DELIMITER=$'\n==========\n'
|
|
|
|
if [[ "$FORCED" == "true" ]]; then
|
|
verbose "cleaning up old stuff ..."
|
|
rm -rf bc* boca* crypto crypto-$BC_VER log/*.done
|
|
rm -rf private/patch/bouncycastle/*
|
|
rm -rf private/patch/bordercastle/*
|
|
fi
|
|
|
|
if [ -f "$BC_ZIP" ]; then
|
|
verbose "BouncyCastle v. $BC_VER already downloaded"
|
|
else
|
|
info "downloading BouncyCastle v. $BC_VER ..."
|
|
wget -O "$BC_ZIP" "$BC_URL" -nv -o log/bouncycastle-download.log
|
|
fi
|
|
|
|
if [[ ! -d crypto && ! -d bc-light && ! -d boca-light ]]; then
|
|
info "extracting original BouncyCastle v. $BC_VER sources ..."
|
|
unzip -o -b $BC_ZIP 2>&1 > log/crypto-$BC_VER.zip.log
|
|
mv $BC_DIR crypto
|
|
chmod -R u+w crypto/*
|
|
rm -f log/*.done
|
|
else
|
|
verbose "BouncyCastle already unpacked"
|
|
fi
|
|
|
|
if [[ -d crypto && ! -d bc-light && ! -d boca-light ]]; then
|
|
info "${DELIMITER}converting original BouncyCastle source tree to maven layout ..."
|
|
bin/bouncycastle-to-maven-layout.sh 2>&1 | tee log/bouncycastle-to-maven-layout.sh.log
|
|
rm -f log/*.done
|
|
else
|
|
verbose "BouncyCastle already converted to maven layout"
|
|
fi
|
|
|
|
if [[ -d bc-light && ! -d boca-light ]]; then
|
|
info "${DELIMITER}converting BouncyCastle source tree to BorderCastle packages ..."
|
|
bin/bouncycastle-to-bordercastle.sh 2>&1 | tee log/bouncycastle-to-bordercastle.sh.log
|
|
rm -f log/*.done
|
|
else
|
|
verbose "BouncyCastle already converted to BorderCastle"
|
|
fi
|
|
|
|
if [[ ! -d private/patch/bouncycastle/boca-light ]]; then
|
|
info "${DELIMITER}preparing patch creation ..."
|
|
mkdir -p private/patch/bouncycastle
|
|
cp -a boca-* private/patch/bouncycastle/
|
|
else
|
|
verbose "BorderCastle patch already prepared"
|
|
fi
|
|
|
|
if [[ -f "$PATCH" && ! -f log/crypto-$BC_VER.patch.done ]]; then
|
|
info "${DELIMITER}applying BorderCastle source code patch ..."
|
|
patch -p1 < "$PATCH" 2>&1 | tee log/crypto-$BC_VER.patch.log
|
|
touch log/crypto-$BC_VER.patch.done
|
|
else
|
|
verbose "BorderCastle already patched"
|
|
fi
|
|
|
|
if [[ ! -d private/patch/bordercastle/boca-light ]]; then
|
|
info "${DELIMITER}updating patch ..."
|
|
mkdir -p private/patch/bordercastle
|
|
cp -a boca-* private/patch/bordercastle/
|
|
pushd private/patch >/dev/null
|
|
diff -rupN bouncycastle bordercastle > ../../bouncycastle/crypto-${BC_VER}-new.patch
|
|
popd >/dev/null
|
|
info "=> examine new patch: bouncycastle/crypto-${BC_VER}-new.patch"
|
|
else
|
|
verbose "BorderCastle patch already updated"
|
|
fi
|
|
|
|
if [[ ! -f log/bordercastle-compile.done ]]; then
|
|
info "${DELIMITER}compiling BorderCastle source code with maven ..."
|
|
LOGFILE=log/bordercastle-compile.sh.log
|
|
bin/bordercastle-compile.sh 2>&1 | tee "$LOGFILE"
|
|
SEARCH_QUERY="\[INFO\] BUILD FAILURE"
|
|
if grep -q "$SEARCH_QUERY" "$LOGFILE"; then
|
|
echo "${DELIMITER}maven build failed, aborting"
|
|
exit -1
|
|
fi
|
|
touch log/bordercastle-compile.done
|
|
else
|
|
verbose "BorderCastle already compiled"
|
|
fi
|
|
|
|
if [[ ! -f libs/bordercastle-jce-javadoc.zip ]]; then
|
|
info "${DELIMITER}generating BorderCastle javadoc ..."
|
|
bin/bordercastle-javadoc.sh 2>&1 | tee log/bordercastle-javadoc.sh.log
|
|
else
|
|
verbose "BorderCastle javadoc already generated"
|
|
fi
|
|
|
|
if [[ ! -f libs/bordercastle-jce.jar ]]; then
|
|
info "${DELIMITER}re-packing BorderCastle JCE provider .jar ..."
|
|
bin/bordercastle-repack.sh 2>&1 | tee log/bordercastle-repack.sh.log
|
|
else
|
|
verbose "BorderCastle JCE provider already re-packed"
|
|
fi
|
|
|
|
if [[ ! -f libs/bordercastle-jce-obfuscated.jar ]]; then
|
|
info "${DELIMITER}obfuscating BorderCastle JCE provider .jar ..."
|
|
bin/bordercastle-obfuscate.sh 2>&1 | tee log/bordercastle-obfuscate.sh.log
|
|
else
|
|
verbose "BorderCastle JCE provider already obfuscated"
|
|
fi
|
|
|
|
if [[ ! -f libs/signed/bordercastle-jce-$BC_VER.jar ]]; then
|
|
info "${DELIMITER}signing BorderCastle libraries .jar ..."
|
|
bin/bordercastle-sign.sh 2>&1 | tee log/bordercastle-sign.sh.log
|
|
else
|
|
verbose "BorderCastle libraries already signed"
|
|
fi
|
|
|
|
if [[ "$FORCED" == "true" ]]; then
|
|
info "${DELIMITER}cleaning intermediate build files ..."
|
|
bin/bordercastle-post-build-cleanup.sh 2>&1 | tee log/bordercastle-post-build-cleanup.sh.log
|
|
fi
|
|
|
|
popd >/dev/null
|
|
## -- EOF -------------------------------------------------------------------
|