imported scripts from intellicastle project and adapted to bordercastle

This commit is contained in:
Leon Poyyayil 2025-10-25 08:02:34 +02:00
parent 6178c58132
commit dd07940e6a
29 changed files with 1744 additions and 2 deletions

46
bin/bordercastle-compile.sh Executable file
View file

@ -0,0 +1,46 @@
#!/bin/bash
## -- FILE ------------------------------------------------------------------
## name : bordercastle-compile.sh
## project : BoarderZone: BorderCastle
## created : Leon Poyyayil - 2013-07-14
## language : Linux shell script
## environment: GNU bash
## copyright : (c) 1990-2025 by Leon Poyyayil (private), Switzerland
## license : Bouncy Castle License. see LICENSE
## --------------------------------------------------------------------------
SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
MAIN_DIR=$(readlink -f $( dirname "$SCRIPT_DIR") )
pushd $MAIN_DIR > /dev/null
. bordercastle.conf
MAVEN_CONFIG=$USER_HOME/.m2/settings.xml
MAVEN_REPO_SED_ARG=$(echo "$MAVEN_REPO" | sed "s,/,\\\\/,g")
if [ ! -f "$MAVEN_CONFIG" ]; then
sed "s,\${maven.repo},$MAVEN_REPO_SED_ARG,g" "${MAVEN_CONFIG}.tpl" > "$MAVEN_CONFIG"
fi
if [ ! -d $DIST_DIR ]; then
mkdir $DIST_DIR
else
rm -rf $DIST_DIR/*
fi
mvn --settings $MAVEN_CONFIG clean install | tee $DIST_DIR/build-maven.log
BUILD_DIR_SED_ARG=$(pwd | sed "s,/,\\\\/,g")
sed "s,$MAVEN_REPO_SED_ARG,\$REPO,g" $DIST_DIR/build-maven.log > $DIST_DIR/build-maven.log.tmp
sed "s,$BUILD_DIR_SED_ARG,.,g" $DIST_DIR/build-maven.log.tmp > $DIST_DIR/build-maven.log
rm -f $DIST_DIR/build-maven.log.tmp
TARGETS=$(ls)
for TARGET in $TARGETS
do
if [[ -d $TARGET && -d $TARGET/target ]]; then
cp $TARGET/target/*.jar $DIST_DIR
fi
done
popd > /dev/null
## -- EOF -------------------------------------------------------------------

95
bin/bordercastle-javadoc.sh Executable file
View file

@ -0,0 +1,95 @@
#!/bin/bash
## -- FILE ------------------------------------------------------------------
## name : bordercastle-javadoc.sh
## project : BoarderZone: BorderCastle
## created : Leon Poyyayil - 2020-05-01
## language : Linux shell script
## environment: GNU bash
## copyright : (c) 1990-2025 by Leon Poyyayil (private), Switzerland
## license : Bouncy Castle License. see LICENSE
## --------------------------------------------------------------------------
SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
MAIN_DIR=$(readlink -f $( dirname "$SCRIPT_DIR") )
pushd $MAIN_DIR > /dev/null
. bordercastle.conf
pushd $DIST_DIR > /dev/null
echo "- collecting source code"
mkdir -p tmp/src
cd tmp/src
for TARGET in light mail pg pkix prov tls util
do
echo " - boca-$TARGET"
cp -r ../../../boca-$TARGET/src/main/java/* .
cp -r ../../../boca-$TARGET/src/main/javadoc/* .
done
echo "- removing unused/unneeded classes"
rm -rf org/bordercastle/cert/dane/fetcher
rm -rf org/bordercastle/crypto/examples
rm -rf org/bordercastle/mail/smime/examples
rm -rf org/bordercastle/openpgp/examples
rm org/bordercastle/jce/provider/X509LDAPCertStoreSpi.java
rm org/bordercastle/jce/provider/X509StoreLDAP*.java
rm -rf org/bordercastle/util/test
rm org/bordercastle/x509/util/LDAPStoreHelper.java
cd ..
# avoid javadoc warning: Multiple sources of package comments found for package "org.bordercastle.xxx"
echo "- removing duplicate package info sources"
for PKG_INFO in $(find src -name package-info.java)
do
PKG_DIR=$(dirname $PKG_INFO)
PKG_HTML="$PKG_DIR/package.html"
if [[ -f "$PKG_HTML" ]]; then
rm "$PKG_HTML"
fi
done
echo "- preparing classpath"
CLASSPATH=$JAVA_CLASSPATH
echo "- preparing output directory"
mkdir api
echo "- preparing javadoc options"
TITLE="BorderCastle $BC_VER"
echo "-sourcepath src" > opts.txt
echo "-d api" >> opts.txt
echo "-classpath $CLASSPATH" >> opts.txt
echo "-protected" >> opts.txt
echo "-splitindex" >> opts.txt
echo "-nosince" >> opts.txt
echo "-notimestamp" >> opts.txt
echo "-notree" >> opts.txt
echo "-nohelp" >> opts.txt
echo "-nodeprecatedlist" >> opts.txt
echo "-encoding UTF8" >> opts.txt
echo "-quiet" >> opts.txt
echo "-Xdoclint:-missing" >> opts.txt
echo "-Xdoclint:-html" >> opts.txt
echo "-windowtitle '$TITLE'" >> opts.txt
echo "-header '$TITLE'" >> opts.txt
echo "-footer '$TITLE'" >> opts.txt
echo "- listing source code to document"
find src -name *.java >> opts.txt
echo "- generating javadoc"
javadoc @opts.txt
echo "- packing javadoc"
cd api
jar cfM ../../bordercastle-jce-javadoc.zip *
cd ..
echo "- cleaning up"
cd ..
rm -rf tmp
popd > /dev/null
popd > /dev/null
## -- EOF -------------------------------------------------------------------

55
bin/bordercastle-obfuscate.sh Executable file
View file

@ -0,0 +1,55 @@
#!/bin/bash
## -- FILE ------------------------------------------------------------------
## name : bordercastle-obfuscate.sh
## project : BoarderZone: BorderCastle
## created : Leon Poyyayil - 2013-07-15
## language : Linux shell script
## environment: GNU bash
## copyright : (c) 1990-2025 by Leon Poyyayil (private), Switzerland
## license : Bouncy Castle License. see LICENSE
## --------------------------------------------------------------------------
SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
MAIN_DIR=$(readlink -f $( dirname "$SCRIPT_DIR") )
pushd $MAIN_DIR > /dev/null
. bordercastle.conf
LIBRARY_JARS=$JAVA_RUNTIME:$JAVAX_MAIL_JAR
pushd $DIST_DIR > /dev/null
PROGUARD_OPTS=
PROGUARD_OPTS="$PROGUARD_OPTS -verbose"
PROGUARD_OPTS="$PROGUARD_OPTS -include ../bordercastle/proguard-base.conf"
PROGUARD_OPTS="$PROGUARD_OPTS -libraryjars $LIBRARY_JARS"
PROGUARD_OPTS="$PROGUARD_OPTS "
obfuscate() {
SUFFIX=$1
LIB_JAR=$2
OPTS="$PROGUARD_OPTS"
OPTS="$OPTS -include ../bordercastle/proguard-${SUFFIX}.conf"
OPTS="$OPTS -injars bordercastle-${SUFFIX}.jar"
OPTS="$OPTS -outjars bordercastle-${SUFFIX}-obfuscated.jar"
if [[ -n "$LIB_JAR" ]]; then
OPTS="$OPTS -libraryjars $LIB_JAR"
fi
echo "- obfuscating $SUFFIX"
java -jar $PROGUARD_JAR $OPTS
PROGUARD_EXIT_CODE=$?
if [[ "$PROGUARD_EXIT_CODE" != "0" ]]; then
echo "proguard failed with exit code: $PROGUARD_EXIT_CODE"
exit $PROGUARD_EXIT_CODE
fi
echo "- packing $SUFFIX"
cp bordercastle-${SUFFIX}-obfuscated.jar bordercastle-${SUFFIX}-obfuscated-packed.jar
pack200 -G -r bordercastle-${SUFFIX}-obfuscated-packed.jar
}
obfuscate jce
obfuscate tls bordercastle-jce.jar
popd > /dev/null
popd > /dev/null
## -- EOF -------------------------------------------------------------------

View file

@ -0,0 +1,36 @@
#!/bin/bash
## -- FILE ------------------------------------------------------------------
## name : bordercastle-post-build-cleanup.sh
## project : BoarderZone: BorderCastle
## created : Leon Poyyayil - 2014-08-09
## language : Linux shell script
## environment: GNU bash
## copyright : (c) 1990-2025 by Leon Poyyayil (private), Switzerland
## license : Bouncy Castle License. see LICENSE
## --------------------------------------------------------------------------
# this script simply removes all stuff that has been created during a full build
SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
MAIN_DIR=$(readlink -f $( dirname "$SCRIPT_DIR") )
pushd $MAIN_DIR > /dev/null
. bordercastle.conf
for TARGET in light mail pg pkix prov tls util
do
echo "- boca-$TARGET ..."
rm -rf boca-$TARGET/src/ boca-$TARGET/target/ boca-$TARGET/pom.xml
if [ "$TARGET" == "test" ]; then
# remove generated test output files ...
rm -f boca-$TARGET/*
fi
rmdir boca-$TARGET
done
rm -rf private/patch/bouncycastle/*
rm -rf private/patch/bordercastle/*
rm pom.xml
popd >/dev/null
## -- EOF -------------------------------------------------------------------

56
bin/bordercastle-repack.sh Executable file
View file

@ -0,0 +1,56 @@
#!/bin/bash
## -- FILE ------------------------------------------------------------------
## name : bordercastle-repack.sh
## project : BoarderZone: BorderCastle
## created : Leon Poyyayil - 2013-07-15
## language : Linux shell script
## environment: GNU bash
## copyright : (c) 1990-2025 by Leon Poyyayil (private), Switzerland
## license : Bouncy Castle License. see LICENSE
## --------------------------------------------------------------------------
SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
MAIN_DIR=$(readlink -f $( dirname "$SCRIPT_DIR") )
pushd $MAIN_DIR > /dev/null
. bordercastle.conf
pushd $DIST_DIR > /dev/null
# now re-pack the provider into a single jar for more convenient usage:
cd $DIST_DIR
mkdir tmp
cd tmp
unzip -q ../boca-light-*.jar
rm -rf META-INF/*
unzip -q ../boca-mail-*.jar
rm -rf META-INF/*
unzip -q ../boca-prov-*.jar
rm -rf META-INF/*
unzip -q ../boca-pkix-*.jar
rm -rf META-INF/*
unzip -q ../boca-util-*.jar
rm -rf META-INF/*
# remove classes which we don't use
rm -rf org/bordercastle/cert/dane/fetcher
rm -rf org/bordercastle/crypto/examples
rm -rf org/bordercastle/jce/examples
rm org/bordercastle/jce/provider/X509LDAPCertStoreSpi.class
rm org/bordercastle/jce/provider/X509StoreLDAP*.class
rm -rf org/bordercastle/util/test
rm -rf org/bordercastle/x509/examples
rm org/bordercastle/x509/util/LDAPStoreHelper.class
cd ..
cd tmp
sed "s/-Version: \$.*\.version./-Version: $BC_VER/g" $MAIN_DIR/bordercastle/MANIFEST.MF > META-INF/MANIFEST.MF
jar -cMf ../bordercastle-jce.jar *
cd ..
rm -rf tmp
cp boca-tls-*.jar bordercastle-tls.jar
popd > /dev/null
popd > /dev/null
## -- EOF -------------------------------------------------------------------

104
bin/bordercastle-sign.sh Executable file
View file

@ -0,0 +1,104 @@
#!/bin/bash
## -- FILE ------------------------------------------------------------------
## name : bordercastle-sign.sh
## project : BoarderZone: BorderCastle
## created : Leon Poyyayil - 2013-07-15
## language : Linux shell script
## environment: GNU bash
## copyright : (c) 1990-2025 by Leon Poyyayil (private), Switzerland
## license : Bouncy Castle License. see LICENSE
## --------------------------------------------------------------------------
SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
MAIN_DIR=$(readlink -f $( dirname "$SCRIPT_DIR") )
pushd $MAIN_DIR > /dev/null
. bordercastle.conf
check_env() {
VAR_NAME=$1
VAR_VALUE=$2
IS_FILE=$3
if [[ -z "$VAR_NAME" ]]; then
echo "undefined env var: $VAR_NAME"
exit -1
fi
if [[ -z "$VAR_VALUE" ]]; then
echo "empty env var: $VAR_NAME"
exit -1
fi
if [[ "$IS_FILE" == "true" ]]; then
if [[ ! -f "$VAR_VALUE" ]]; then
echo "missing file: $VAR_NAME: $VAR_VALUE"
exit -1
fi
fi
}
load_config() {
CFG=$1
if [[ ! -f "$CFG" ]]; then
echo "missing signing config: $CFG"
exit -1
fi
. "$CFG"
check_env JARSIGNER_STORE_FILE "$JARSIGNER_STORE_FILE" true
check_env JARSIGNER_STORE_PASS "$JARSIGNER_STORE_PASS" false
check_env JARSIGNER_KEY_NAME "$JARSIGNER_KEY_NAME" false
check_env JARSIGNER_KEY_PASS "$JARSIGNER_KEY_PASS" false
check_env JARSIGNER_TSA_URL "$JARSIGNER_TSA_URL" false
}
sign_jar() {
JAR_BASE=$1
OUT_BASE=$2
if [[ "$OUT_BASE" == "" ]]; then
OUT_BASE=$JAR_BASE
fi
RAW_JAR=${JAR_BASE}.jar
SIGNED=signed/${OUT_BASE}.jar
echo "- $RAW_JAR => $SIGNED"
BASE_OPTS=
BASE_OPTS="$BASE_OPTS -keystore $JARSIGNER_STORE_FILE"
BASE_OPTS="$BASE_OPTS -storepass:env JARSIGNER_STORE_PASS"
SIGN_OPTS="$BASE_OPTS"
SIGN_OPTS="$SIGN_OPTS -keypass:env JARSIGNER_KEY_PASS"
SIGN_OPTS="$SIGN_OPTS -tsa $JARSIGNER_TSA_URL"
SIGN_OPTS="$SIGN_OPTS -strict"
SIGN_OPTS="$SIGN_OPTS -sigfile BOCASIGN"
SIGN_OPTS="$SIGN_OPTS -digestalg SHA-384"
jarsigner $SIGN_OPTS -signedjar "$SIGNED" "$RAW_JAR" "$JARSIGNER_KEY_NAME"
RET_VAL=$?
if [[ "$RET_VAL" != "0" ]]; then
echo "failed to sign: jarsigner returned $RET_VAL"
exit $RET_VAL
fi
VERIFY_OPTS="$BASE_OPTS"
#VERIFY_OPTS="$VERIFY_OPTS -verbose"
jarsigner $VERIFY_OPTS -verify "$SIGNED"
RET_VAL=$?
if [[ "$RET_VAL" != "0" ]]; then
echo "failed to verify: jarsigner returned $RET_VAL"
exit $RET_VAL
fi
}
load_config private/sign.conf
pushd $DIST_DIR > /dev/null
mkdir -p signed
sign_jar boca-light-$BC_VER
sign_jar boca-mail-$BC_VER
sign_jar boca-pg-$BC_VER
sign_jar boca-pkix-$BC_VER
sign_jar boca-prov-$BC_VER
sign_jar boca-tls-$BC_VER
sign_jar boca-util-$BC_VER
sign_jar bordercastle-jce-obfuscated-packed bordercastle-jce-$BC_VER
sign_jar bordercastle-tls-obfuscated-packed bordercastle-tls-$BC_VER
popd > /dev/null
popd > /dev/null
## -- EOF -------------------------------------------------------------------

View file

@ -0,0 +1,80 @@
#!/bin/bash
## -- FILE ------------------------------------------------------------------
## name : bouncycastle-to-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 is based on the become-spongy.sh script from spongycastle
# but cleaned up and enhanced to support later versions than 1.47 and to
# properly function with filenames that contain spaces.
SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
MAIN_DIR=$(readlink -f $( dirname "$SCRIPT_DIR") )
pushd $MAIN_DIR > /dev/null
. bordercastle.conf
# Package rename org.bouncycastle to org.bordercastle
# 1) rename directories:
echo "- renaming directories ..."
find bc* -name bouncycastle | xargs rename s/bouncycastle/bordercastle/
# 2) replace package and import statements:
echo "- replacing package names and imports ..."
find bc* -type f -print0 | while read -d '' -r FILENAME
do
TMPFILENAME=$FILENAME.sed.tmp
sed s/bouncycastle/bordercastle/g "$FILENAME" > "$TMPFILENAME"
# keep the web address pointing to the original:
sed s/www.bordercastle.org/www.bouncycastle.org/g "$TMPFILENAME" > "$FILENAME"
rm -f "$TMPFILENAME"
done
# BC to BoCa (resp. BCPQC to BoCaPQC) for provider name
echo "- renaming provider ..."
find bc* -type f -print0 | while read -d '' -r FILENAME
do
TMPFILENAME1=$FILENAME.sed1.tmp
TMPFILENAME2=$FILENAME.sed2.tmp
sed s/\"BC\"/\"BoCa\"/g "$FILENAME" > "$TMPFILENAME1"
sed s/\"BCPQC\"/\"BoCaPQC\"/g "$TMPFILENAME1" > "$TMPFILENAME2"
sed s/\"BCJSSE\"/\"BoCaJSSE\"/g "$TMPFILENAME2" > "$FILENAME"
rm -f "$TMPFILENAME1" "$TMPFILENAME2"
done
# Rename 'bc-' artifacts to 'boca-'
echo "- renaming artifacts ..."
rename s/^bc/boca/ *
echo "- adding version info class ..."
sed s/\"\$\{bordercastle.version\}\"/\"$BC_VER\"/g "bordercastle/Version.java" > "boca-light/src/main/java/org/bordercastle/Version.java"
# add the maven pom files
echo "- generating maven pom files ..."
cp maven/pom/boca-parent.xml pom.xml
for TARGET in light mail pg pkix prov tls util
do
cp maven/pom/boca-$TARGET.xml boca-$TARGET/pom.xml
mkdir -p boca-$TARGET/src/main/java
mkdir -p boca-$TARGET/src/main/resources
mkdir -p boca-$TARGET/src/test/java
mkdir -p boca-$TARGET/src/test/resources
done
# fill in the version
echo "- expanding version in maven pom files ..."
find -type f -name 'pom.xml' | while read -r FILENAME
do
TMPFILENAME=$FILENAME.sed.tmp
sed s/\>\$\{bordercastle.version\}\</\>$BC_VER\</g "$FILENAME" > "$TMPFILENAME"
cat "$TMPFILENAME" > "$FILENAME"
rm -f "$TMPFILENAME"
done
popd >/dev/null
## -- EOF -------------------------------------------------------------------

View file

@ -0,0 +1,74 @@
#!/bin/bash
## -- FILE ------------------------------------------------------------------
## name : bouncycastle-to-maven-layout.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 is based on the use-maven-layout.sh script from spongycastle
# but cleaned up and enhanced to support later versions than 1.47 and to
# properly function with filenames that contain spaces.
SCRIPT_DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
MAIN_DIR=$(readlink -f $( dirname "$SCRIPT_DIR") )
pushd $MAIN_DIR > /dev/null
. bordercastle.conf
function move_file {
# echo Moving $1 to $2
mkdir -p `dirname "$2"`
mv "$1" "$2"
}
function move_files {
if [ -d "$1" ]; then
echo " $1/**/*.* => $2"
find "$1" -type f -print0 | while read -d '' -r FILENAME
do
NEWFILENAME=`echo "$FILENAME" | sed -e "s,$1,$2,"`
move_file "$FILENAME" "$NEWFILENAME"
done
fi
}
echo "- java source files ..."
move_files crypto/mail/src/main/java bc-mail/src/main/java
move_files crypto/pg/src/main/java bc-pg/src/main/java
move_files crypto/pkix/src/main/java bc-pkix/src/main/java
move_files crypto/prov/src/main/java bc-prov/src/main/java
move_files crypto/core/src/main/java bc-light/src/main/java
#move_files crypto/mls/src/main/java bc-mls/src/main/java
move_files crypto/tls/src/main/java bc-tls/src/main/java
move_files crypto/tls/src/main/jdk1.5 bc-tls/src/main/java
move_files crypto/util/src/main/java bc-util/src/main/java
echo "- javadoc resource files ..."
move_files crypto/mail/src/main/javadoc bc-mail/src/main/javadoc
move_files crypto/pg/src/main/javadoc bc-pg/src/main/javadoc
move_files crypto/pkix/src/main/javadoc bc-pkix/src/main/javadoc
move_files crypto/prov/src/main/javadoc bc-prov/src/main/javadoc
move_files crypto/core/src/main/javadoc bc-light/src/main/javadoc
#move_files crypto/mls/src/main/javadoc bc-mls/src/main/javadoc
move_files crypto/tls/src/main/javadoc bc-tls/src/main/javadoc
move_files crypto/util/src/main/javadoc bc-util/src/main/javadoc
echo "- resource files ..."
move_files crypto/mail/src/main/resources bc-mail/src/main/resources
move_files crypto/pkix/src/main/resources bc-pkix/src/main/resources
move_files crypto/prov/src/main/resources bc-prov/src/main/resources
echo "- documentation"
mkdir -p doc
mv crypto/*.html doc
mv crypto/docs/releasenotes.html doc
mv crypto/docs/specifications.html doc
echo "- cleanup"
rm -rf crypto
popd >/dev/null
## -- EOF -------------------------------------------------------------------