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

12
.gitignore vendored
View file

@ -1,2 +1,12 @@
/boca-light/
/boca-mail/
/boca-pg/
/boca-pkix/
/boca-prov/
/boca-tls/
/boca-util/
/crypto/
/libs/*
/log/*
/private/* /private/*
pom.xml

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 -------------------------------------------------------------------

45
bordercastle.conf Normal file
View file

@ -0,0 +1,45 @@
VERSION_MAJOR=1
VERSION_MINOR=81
BC_VER=${VERSION_MAJOR}.${VERSION_MINOR}
FORCED=false
VERBOSE=true
INFO=true
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
M2_HOME=/data/dev/tool/maven/3.0.5
MAVEN_REPO=/data/dev/tool/maven/repo
USER_HOME=$MAIN_DIR/maven/user.home
PROGUARD_JAR=/data/java/libs/ProGuard/7.7.0/lib/proguard.jar
PATH=$JAVA_HOME/bin:$M2_HOME/bin:$PATH
export JAVA_HOME M2_HOME USER_HOME HOME PATH
DIST_DIR=$MAIN_DIR/libs
JAVA_RUNTIME=$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/jre/lib/jce.jar
JAVAX_ACTIVATION_JAR=$MAVEN_REPO/javax/activation/activation/1.1/activation-1.1.jar
JAVAX_MAIL_JAR=$MAVEN_REPO/javax/mail/mail/1.4.5/mail-1.4.5.jar
if [[ ! -f $JAVAX_ACTIVATION_JAR ]]; then
echo "missing JAVAX_ACTIVATION_JAR: $JAVAX_ACTIVATION_JAR"
exit -1
fi
if [[ ! -f $JAVAX_MAIL_JAR ]]; then
echo "missing JAVAX_MAIL_JAR: $JAVAX_MAIL_JAR"
exit -1
fi
JAVA_CLASSPATH=$JAVAX_ACTIVATION_JAR:$JAVAX_MAIL_JAR
verbose() {
if [[ "$VERBOSE" == "true" ]]; then
echo "$@"
fi
}
info() {
if [[ "$VERBOSE" == "true" || "$INFO" == "true" ]]; then
echo "$@"
fi
}

View file

@ -1,3 +1,144 @@
#!/bin/bash #!/bin/bash
echo "building BorderCastle JCE provider ..." ## -- 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 -------------------------------------------------------------------

9
bordercastle/MANIFEST.MF Normal file
View file

@ -0,0 +1,9 @@
Manifest-Version: 1.0
Name: org/bordercastle
Specification-Title: BouncyCastle JCE Provider
Specification-Vendor: bouncycastle.org
Specification-Version: ${bouncycastle.version}
Implementation-Title: BorderCastle JCE Provider
Implementation-Vendor: bordercastle.org
Implementation-Version: ${bordercastle.version}

48
bordercastle/Version.java Normal file
View file

@ -0,0 +1,48 @@
// -- FILE ------------------------------------------------------------------
// name : Version.java
// project : BoarderZone: BorderCastle
// created : Leon Poyyayil - 2013-08-06
// language : java
// environment: JDK 1.6.0
// copyright : (c) 1990-2025 by Leon Poyyayil (private), Switzerland
// license : Bouncy Castle License. see LICENSE
// --------------------------------------------------------------------------
package org.bordercastle;
// -- CLASS -----------------------------------------------------------------
/** Simple version information.
*///-------------------------------------------------------------------------
public final class Version {
// ----- constants -----
/** the version of this library */
private static final String VERSION = "${bordercastle.version}";
// -- METHOD ----------------------------------------------------------------
/** Prevent instantiation.
*///-------------------------------------------------------------------------
private Version()
{
} // Version
// -- METHOD ----------------------------------------------------------------
/** Provides access to the version. Intentionally only available through a
method call for public use to prevent the java compiler from copying the
constant value to the call sites at compile time.
@return the version
*///-------------------------------------------------------------------------
public static String getVersion()
{
return VERSION;
} // getVersion
} // class Version
// --------------------------------------------------------------------------
// -- EOF -------------------------------------------------------------------

View file

@ -0,0 +1,92 @@
## -- FILE ------------------------------------------------------------------
## name : proguard-base.conf
## project : BoarderZone: BorderCastle
## created : Leon Poyyayil - 2013-07-15
## language : ProGuard obfuscator configuration
## environment: ProGuard 5.3.2
## copyright : (c) 1990-2025 by Leon Poyyayil (private), Switzerland
## license : Bouncy Castle License. see LICENSE
## --------------------------------------------------------------------------
# ProGuard configuration file to process the BorderCastle JCE provider
# library, such that it remains usable as a library.
# based on examples/library.pro from the ProGuard 4.9 distribution
# with the following changes:
# - removed all definitions in regard to library, input and output jars
# - removed definitions to control runtime output of proguard itself
# - disabled renaming of SourceFile attributes
# - turned off keeping of parameter names
# - removed all commented sections
# - added specific settings at end for BorderCastle
# Keep a fixed source file attribute and all line number
# tables to get line numbers in the stack traces.
#-keepparameternames
#-renamesourcefileattribute SourceFile
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,
SourceFile,LineNumberTable,EnclosingMethod
# Preserve all annotations.
-keepattributes *Annotation*
# Preserve all public classes, and their public and protected fields and
# methods.
-keep public class * {
public protected *;
}
# Preserve all .class method names.
-keepclassmembernames class * {
java.lang.Class class$(java.lang.String);
java.lang.Class class$(java.lang.String, boolean);
}
# Preserve all native method names and the names of their classes.
-keepclasseswithmembernames class * {
native <methods>;
}
# Preserve the special static methods that are required in all enumeration
# classes.
-keepclassmembers class * extends java.lang.Enum {
public static **[] values();
public static ** valueOf(java.lang.String);
}
# Explicitly preserve all serialization members. The Serializable interface
# is only a marker interface, so it wouldn't save them.
# You can comment this out if your library doesn't use serialization.
# If your code contains serializable classes that have to be backward
# compatible, please refer to the manual.
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
static final java.io.ObjectStreamField[] serialPersistentFields;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
#############################################################################
# now for some specific bordercastle classes:
# prevent warning about reflection use of the ubiquituous getInstance method:
-keepclassmembers class * {
public static *** getInstance(java.lang.Object);
}
# prevent warning about reflection use of any string arg constructors
-keepclassmembers class * {
public <init>(java.lang.String);
}
## -- EOF -------------------------------------------------------------------

View file

@ -0,0 +1,100 @@
## -- FILE ------------------------------------------------------------------
## name : proguard.conf
## project : BoarderZone: BorderCastle
## created : Leon Poyyayil - 2013-07-15
## language : ProGuard obfuscator configuration
## environment: ProGuard 5.3.2
## copyright : (c) 1990-2025 by Leon Poyyayil (private), Switzerland
## license : Bouncy Castle License. see LICENSE
## --------------------------------------------------------------------------
# ProGuard configuration file to process the BorderCastle JCE provider
# library, such that it remains usable as a library.
#############################################################################
# specific bordercastle JCE classes:
# need to keep some package-protected classes because they are used as parameter
# in methods which remain un-obfuscated ...
-keep class org.bordercastle.cert.crmf.PKMACValueGenerator {
public protected *;
}
-keep class org.bordercastle.crypto.engines.AEADBaseEngine {
public protected *;
}
-keep class org.bordercastle.crypto.util.SSHBuffer {
public protected *;
}
-keep class org.bordercastle.oer.OERDefinition$ExtensionList {
public protected *;
}
-keep class org.bordercastle.oer.OERDefinition$OptionalList {
public protected *;
}
-keep class org.bordercastle.pkix.jcajce.CertStatus {
public protected *;
}
-keep class org.bordercastle.pkix.jcajce.X509CertStoreSelector {
public protected *;
}
-keep class org.bordercastle.pqc.crypto.frodo.FrodoMatrixGenerator {
public protected *;
}
-keep class org.bordercastle.pqc.legacy.crypto.gemss.Pointer {
public protected *;
}
-keep class org.bordercastle.pqc.legacy.crypto.gemss.PointerUnion {
public protected *;
}
-keep class org.bordercastle.pqc.crypto.lms.LMOtsPrivateKey {
public protected *;
}
-keep class org.bordercastle.pqc.crypto.lms.LMOtsPublicKey {
public protected *;
}
-keep class org.bordercastle.pqc.crypto.lms.LMOtsSignature {
public protected *;
}
-keep class org.bordercastle.pqc.crypto.lms.LMSSignature {
public protected *;
}
-keep class org.bordercastle.pqc.crypto.lms.LMSSignedPubKey {
public protected *;
}
-keep class org.bordercastle.pqc.crypto.picnic.PicnicEngine {
public protected *;
}
-keep class org.bordercastle.pqc.crypto.picnic.Tape {
public protected *;
}
-keep class org.bordercastle.pqc.crypto.xmss.OTSHashAddress {
public protected *;
}
-keep class org.bordercastle.pqc.crypto.xmss.WOTSPlusParameters {
public protected *;
}
-keep class org.bordercastle.pqc.crypto.xmss.WOTSPlusSignature {
public protected *;
}
-keep class org.bordercastle.tsp.ers.IndexedHash {
public protected *;
}
-keep class org.bordercastle.x509.CertStatus {
public protected *;
}
# this method is being accessed dynamically as it is only available since JDK 1.8
# by org.bordercastle.jcajce.provider.drbg.DRBG.
# it is actually about java.security.SecureRandom but we don't want to see a ProGuard
# warning about not needing to specify a library class for being kept ...
-keep public class *SecureRandom {
java.security.SecureRandom getInstanceStrong();
}
# the same as above for the use of method AlgorithmParameterSpec.getName() from
# org.bordercastle.jcajce.provider.asymmetric.util.ECUtil.getNameFrom()
-keep public class *AlgorithmParameterSpec {
java.lang.String getName();
}
## -- EOF -------------------------------------------------------------------

View file

@ -0,0 +1,26 @@
## -- FILE ------------------------------------------------------------------
## name : proguard-tls.conf
## project : BoarderZone: BorderCastle
## created : Leon Poyyayil - 2025-10-25
## language : ProGuard obfuscator configuration
## environment: ProGuard 5.3.2
## copyright : (c) 1990-2025 by Leon Poyyayil (private), Switzerland
## license : Bouncy Castle License. see LICENSE
## --------------------------------------------------------------------------
# ProGuard configuration file to process the BorderCastle JCE provider
# library, such that it remains usable as a library.
#############################################################################
# specific bordercastle TLS classes:
# need to keep some package-protected classes because they are used as parameter
# in methods which remain un-obfuscated ...
-keep class org.bordercastle.tls.DTLSRecordLayer {
public protected *;
}
-keep class org.bordercastle.tls.DTLSReliableHandshake {
public protected *;
}
## -- EOF -------------------------------------------------------------------

1
bouncycastle/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
crypto-*.zip

View file

@ -0,0 +1,331 @@
diff -rupN bouncycastle/boca-light/src/main/java/org/bordercastle/crypto/util/DerUtil.java bordercastle/boca-light/src/main/java/org/bordercastle/crypto/util/DerUtil.java
--- bouncycastle/boca-light/src/main/java/org/bordercastle/crypto/util/DerUtil.java 2025-10-25 07:40:23.182387118 +0200
+++ bordercastle/boca-light/src/main/java/org/bordercastle/crypto/util/DerUtil.java 2025-10-25 07:40:47.173482490 +0200
@@ -27,13 +27,8 @@ class DerUtil
}
catch (final IOException e)
{
- throw new IllegalStateException("Cannot get encoding: " + e.getMessage())
- {
- public Throwable getCause()
- {
- return e;
- }
- };
+ // TODO: BorderCastle: prevent problems later with android .dex files on obfuscated inner class
+ throw new IllegalStateException("Cannot get encoding: " + e.getMessage(), e);
}
}
}
diff -rupN bouncycastle/boca-light/src/main/java/org/bordercastle/pqc/math/ntru/parameters/NTRUHPSParameterSet.java bordercastle/boca-light/src/main/java/org/bordercastle/pqc/math/ntru/parameters/NTRUHPSParameterSet.java
--- bouncycastle/boca-light/src/main/java/org/bordercastle/pqc/math/ntru/parameters/NTRUHPSParameterSet.java 2025-10-25 07:40:28.278407368 +0200
+++ bordercastle/boca-light/src/main/java/org/bordercastle/pqc/math/ntru/parameters/NTRUHPSParameterSet.java 2025-10-25 07:40:47.174482494 +0200
@@ -11,7 +11,7 @@ import org.bordercastle.pqc.math.ntru.Po
* @see NTRUHPS2048509
* @see NTRUHPS2048677
* @see NTRUHPS4096821
- * @see <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification document</a> section 1.3.2
+ * @see <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification document, section 1.3.2</a>
*/
public abstract class NTRUHPSParameterSet
extends NTRUParameterSet
diff -rupN bouncycastle/boca-light/src/main/java/org/bordercastle/pqc/math/ntru/parameters/NTRUHRSSParameterSet.java bordercastle/boca-light/src/main/java/org/bordercastle/pqc/math/ntru/parameters/NTRUHRSSParameterSet.java
--- bouncycastle/boca-light/src/main/java/org/bordercastle/pqc/math/ntru/parameters/NTRUHRSSParameterSet.java 2025-10-25 07:40:28.316407519 +0200
+++ bordercastle/boca-light/src/main/java/org/bordercastle/pqc/math/ntru/parameters/NTRUHRSSParameterSet.java 2025-10-25 07:40:47.174482494 +0200
@@ -10,7 +10,7 @@ import org.bordercastle.pqc.math.ntru.Po
* The naming convention for the classes is {@code NTRUHRSS[n]}. e.g. {@link NTRUHRSS701} has n = 701.
*
* @see NTRUHRSS701
- * @see <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification document</a> section 1.3.3
+ * @see <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification document, section 1.3.3</a>
*/
public abstract class NTRUHRSSParameterSet
extends NTRUParameterSet
diff -rupN bouncycastle/boca-light/src/main/java/org/bordercastle/pqc/math/ntru/Polynomial.java bordercastle/boca-light/src/main/java/org/bordercastle/pqc/math/ntru/Polynomial.java
--- bouncycastle/boca-light/src/main/java/org/bordercastle/pqc/math/ntru/Polynomial.java 2025-10-25 07:40:28.335407594 +0200
+++ bordercastle/boca-light/src/main/java/org/bordercastle/pqc/math/ntru/Polynomial.java 2025-10-25 07:40:47.173482490 +0200
@@ -80,7 +80,7 @@ public abstract class Polynomial
*
* @param len array length of packed polynomial
* @return
- * @see <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification</a> section 1.8.5
+ * @see <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification, section 1.8.5</a>
*/
// defined in packq.c
public abstract byte[] sqToBytes(int len);
@@ -90,7 +90,7 @@ public abstract class Polynomial
* Unpack a Sq polynomial
*
* @param a byte array of packed polynomial
- * @see <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification</a> section 1.8.6
+ * @see <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification, section 1.8.6</a>
*/
// defined in packq.c
public abstract void sqFromBytes(byte[] a);
@@ -101,7 +101,7 @@ public abstract class Polynomial
*
* @param len array length of packed polynomial
* @return
- * @see <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification</a> section 1.8.3
+ * @see <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification, section 1.8.3</a>
*/
// defined in packq.c
public byte[] rqSumZeroToBytes(int len)
@@ -114,7 +114,7 @@ public abstract class Polynomial
* Unpack a Rq0 polynomial
*
* @param a byte array of packed polynomial
- * @see <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification</a> section 1.8.4
+ * @see <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification, section 1.8.4</a>
*/
// defined in packq.c
public void rqSumZeroFromBytes(byte[] a)
@@ -135,7 +135,7 @@ public abstract class Polynomial
*
* @param messageSize array length of packed polynomial
* @return
- * @see <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification</a> section 1.8.7
+ * @see <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification, section 1.8.7</a>
*/
// defined in pack3.c
public byte[] s3ToBytes(int messageSize)
@@ -181,7 +181,7 @@ public abstract class Polynomial
* Unpack a S3 polynomial
*
* @param msg byte array of packed polynomial
- * @see <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification</a> section 1.8.8
+ * @see <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification, section 1.8.8</a>
*/
// defined in pack3.c
public void s3FromBytes(byte[] msg)
@@ -248,7 +248,7 @@ public abstract class Polynomial
/**
* @param a
- * @see <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification</a> section 1.9.3
+ * @see <a href="https://ntru.org/f/ntru-20190330.pdf">NTRU specification, section 1.9.3</a>
*/
// defined in poly_lift.c
public abstract void lift(Polynomial a);
diff -rupN bouncycastle/boca-pkix/src/main/java/org/bordercastle/cert/cmp/package-info.java bordercastle/boca-pkix/src/main/java/org/bordercastle/cert/cmp/package-info.java
--- bouncycastle/boca-pkix/src/main/java/org/bordercastle/cert/cmp/package-info.java 2025-10-25 07:40:36.887441590 +0200
+++ bordercastle/boca-pkix/src/main/java/org/bordercastle/cert/cmp/package-info.java 2025-10-25 07:40:47.174482494 +0200
@@ -1,6 +1,4 @@
/**
- * <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
- * "https://www.w3.org/TR/html4/loose.dtd">
* Basic support package for handling and creating CMP (RFC 4210) certificate management messages.
*/
package org.bordercastle.cert.cmp;
diff -rupN bouncycastle/boca-pkix/src/main/java/org/bordercastle/cert/crmf/jcajce/package-info.java bordercastle/boca-pkix/src/main/java/org/bordercastle/cert/crmf/jcajce/package-info.java
--- bouncycastle/boca-pkix/src/main/java/org/bordercastle/cert/crmf/jcajce/package-info.java 2025-10-25 07:40:36.373439547 +0200
+++ bordercastle/boca-pkix/src/main/java/org/bordercastle/cert/crmf/jcajce/package-info.java 2025-10-25 07:40:47.174482494 +0200
@@ -1,6 +1,4 @@
/**
- * <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
- * "https://www.w3.org/TR/html4/loose.dtd">
* JCA extensions to the CRMF online certificate request package.
*/
package org.bordercastle.cert.crmf.jcajce;
diff -rupN bouncycastle/boca-pkix/src/main/java/org/bordercastle/cert/crmf/package-info.java bordercastle/boca-pkix/src/main/java/org/bordercastle/cert/crmf/package-info.java
--- bouncycastle/boca-pkix/src/main/java/org/bordercastle/cert/crmf/package-info.java 2025-10-25 07:40:36.419439730 +0200
+++ bordercastle/boca-pkix/src/main/java/org/bordercastle/cert/crmf/package-info.java 2025-10-25 07:40:47.175482498 +0200
@@ -1,6 +1,4 @@
/**
- * <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
- * "https://www.w3.org/TR/html4/loose.dtd">
* Basic support package for handling and creating CRMF (RFC 4211) certificate request messages.
*/
package org.bordercastle.cert.crmf;
diff -rupN bouncycastle/boca-pkix/src/main/java/org/bordercastle/cert/jcajce/package-info.java bordercastle/boca-pkix/src/main/java/org/bordercastle/cert/jcajce/package-info.java
--- bouncycastle/boca-pkix/src/main/java/org/bordercastle/cert/jcajce/package-info.java 2025-10-25 07:40:36.573440342 +0200
+++ bordercastle/boca-pkix/src/main/java/org/bordercastle/cert/jcajce/package-info.java 2025-10-25 07:40:47.175482498 +0200
@@ -1,6 +1,4 @@
/**
- * <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
- * "https://www.w3.org/TR/html4/loose.dtd">
* JCA extensions to the certificate building and processing package.
*/
package org.bordercastle.cert.jcajce;
diff -rupN bouncycastle/boca-pkix/src/main/java/org/bordercastle/cert/ocsp/jcajce/package-info.java bordercastle/boca-pkix/src/main/java/org/bordercastle/cert/ocsp/jcajce/package-info.java
--- bouncycastle/boca-pkix/src/main/java/org/bordercastle/cert/ocsp/jcajce/package-info.java 2025-10-25 07:40:36.749441041 +0200
+++ bordercastle/boca-pkix/src/main/java/org/bordercastle/cert/ocsp/jcajce/package-info.java 2025-10-25 07:40:47.175482498 +0200
@@ -1,6 +1,4 @@
/**
- * <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
- * "https://www.w3.org/TR/html4/loose.dtd">
* JCA extensions to the OCSP online certificate status package.
*/
package org.bordercastle.cert.ocsp.jcajce;
diff -rupN bouncycastle/boca-pkix/src/main/java/org/bordercastle/cert/ocsp/package-info.java bordercastle/boca-pkix/src/main/java/org/bordercastle/cert/ocsp/package-info.java
--- bouncycastle/boca-pkix/src/main/java/org/bordercastle/cert/ocsp/package-info.java 2025-10-25 07:40:36.764441101 +0200
+++ bordercastle/boca-pkix/src/main/java/org/bordercastle/cert/ocsp/package-info.java 2025-10-25 07:40:47.175482498 +0200
@@ -1,6 +1,4 @@
/**
- * <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
- * "https://www.w3.org/TR/html4/loose.dtd">
* Basic support package for handling and creating OCSP (RFC 2560) online certificate status requests.
*/
package org.bordercastle.cert.ocsp;
diff -rupN bouncycastle/boca-pkix/src/main/java/org/bordercastle/cert/selector/package-info.java bordercastle/boca-pkix/src/main/java/org/bordercastle/cert/selector/package-info.java
--- bouncycastle/boca-pkix/src/main/java/org/bordercastle/cert/selector/package-info.java 2025-10-25 07:40:36.690440807 +0200
+++ bordercastle/boca-pkix/src/main/java/org/bordercastle/cert/selector/package-info.java 2025-10-25 07:40:47.175482498 +0200
@@ -1,6 +1,4 @@
/**
- * <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
- * "https://www.w3.org/TR/html4/loose.dtd">
* Specialised Selector classes for certificates, CRLs, and attribute certificates.
*/
package org.bordercastle.cert.selector;
diff -rupN bouncycastle/boca-pkix/src/main/java/org/bordercastle/pkcs/bc/package-info.java bordercastle/boca-pkix/src/main/java/org/bordercastle/pkcs/bc/package-info.java
--- bouncycastle/boca-pkix/src/main/java/org/bordercastle/pkcs/bc/package-info.java 2025-10-25 07:40:33.882429643 +0200
+++ bordercastle/boca-pkix/src/main/java/org/bordercastle/pkcs/bc/package-info.java 2025-10-25 07:40:47.175482498 +0200
@@ -1,6 +1,4 @@
/**
- * <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
- * "https://www.w3.org/TR/html4/loose.dtd">
* BC lightweight API extensions and operators for the PKCS#10 certification request package.
*/
package org.bordercastle.pkcs.bc;
diff -rupN bouncycastle/boca-pkix/src/main/java/org/bordercastle/pkcs/jcajce/package-info.java bordercastle/boca-pkix/src/main/java/org/bordercastle/pkcs/jcajce/package-info.java
--- bouncycastle/boca-pkix/src/main/java/org/bordercastle/pkcs/jcajce/package-info.java 2025-10-25 07:40:33.790429277 +0200
+++ bordercastle/boca-pkix/src/main/java/org/bordercastle/pkcs/jcajce/package-info.java 2025-10-25 07:40:47.176482502 +0200
@@ -1,6 +1,4 @@
/**
- * <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
- * "https://www.w3.org/TR/html4/loose.dtd">
* JCA extensions and operators for the PKCS#10 certification request package.
*/
package org.bordercastle.pkcs.jcajce;
diff -rupN bouncycastle/boca-pkix/src/main/java/org/bordercastle/pkcs/package-info.java bordercastle/boca-pkix/src/main/java/org/bordercastle/pkcs/package-info.java
--- bouncycastle/boca-pkix/src/main/java/org/bordercastle/pkcs/package-info.java 2025-10-25 07:40:33.847429504 +0200
+++ bordercastle/boca-pkix/src/main/java/org/bordercastle/pkcs/package-info.java 2025-10-25 07:40:47.176482502 +0200
@@ -1,6 +1,4 @@
/**
- * <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
- * "https://www.w3.org/TR/html4/loose.dtd">
* Basic support package for handling and creating PKCS#10 certification requests, PKCS#8 encrypted keys and PKCS#12 keys stores.
*/
package org.bordercastle.pkcs;
diff -rupN bouncycastle/boca-prov/src/main/java/org/bordercastle/jce/provider/BouncyCastleProvider.java bordercastle/boca-prov/src/main/java/org/bordercastle/jce/provider/BouncyCastleProvider.java
--- bouncycastle/boca-prov/src/main/java/org/bordercastle/jce/provider/BouncyCastleProvider.java 2025-10-25 07:40:40.980457864 +0200
+++ bordercastle/boca-prov/src/main/java/org/bordercastle/jce/provider/BouncyCastleProvider.java 2025-10-25 07:40:47.176482502 +0200
@@ -151,7 +151,7 @@ public final class BouncyCastleProvider
private static final String KEYSTORE_PACKAGE = "org.bordercastle.jcajce.provider.keystore.";
private static final String[] KEYSTORES =
{
- "BoCa", "BCFKS", "PKCS12"
+ "BC", "BCFKS", "PKCS12"
};
/*
@@ -172,7 +172,22 @@ public final class BouncyCastleProvider
*/
public BouncyCastleProvider()
{
- super(PROVIDER_NAME, 1.81, info);
+ this(PROVIDER_NAME);
+ }
+
+ /**
+ * Construct a new provider with a custom name. This should only be required when
+ * using runtime registration of the provider using the
+ * <code>Security.addProvider()</code> mechanism.
+ * This constructor allows to give a distinct name to the new provider and thus allows
+ * to register multiple instances with separate names. This is helpful in environments
+ * where classloader problems would occur when one classloader installs the provider
+ * but another classloader attempts to cast objects created by the first provider
+ * (e.g. in webapp containers where each webapp wants to install the provider).
+ */
+ public BouncyCastleProvider(final String providerName)
+ {
+ super(providerName, 1.81, info);
AccessController.doPrivileged(new PrivilegedAction()
{
@@ -184,6 +199,19 @@ public final class BouncyCastleProvider
});
}
+ @Override public String toString()
+ {
+ // the java.security.Provider class in Android doesn't support the
+ // c'tor with a string version argument
+ // => was only introduced in JDK-9
+ // => but Android is based on JDK-8
+ // => must instead override the base class' toString() method
+ // to output the version in string form instead of as double
+ // (which would truncate trailing zeroes)
+ // => output "1.80" instead of "1.8" ...
+ return getName() + " version " + org.bordercastle.Version.getVersion();
+ }
+
private void setup()
{
loadAlgorithms(DIGEST_PACKAGE, DIGESTS);
diff -rupN bouncycastle/boca-prov/src/main/java/org/bordercastle/pqc/jcajce/provider/BouncyCastlePQCProvider.java bordercastle/boca-prov/src/main/java/org/bordercastle/pqc/jcajce/provider/BouncyCastlePQCProvider.java
--- bouncycastle/boca-prov/src/main/java/org/bordercastle/pqc/jcajce/provider/BouncyCastlePQCProvider.java 2025-10-25 07:40:40.159454599 +0200
+++ bordercastle/boca-prov/src/main/java/org/bordercastle/pqc/jcajce/provider/BouncyCastlePQCProvider.java 2025-10-25 07:40:47.176482502 +0200
@@ -51,7 +51,22 @@ public class BouncyCastlePQCProvider
*/
public BouncyCastlePQCProvider()
{
- super(PROVIDER_NAME, 1.81, info);
+ this(PROVIDER_NAME);
+ }
+
+ /**
+ * Construct a new provider with a custom name. This should only be required when
+ * using runtime registration of the provider using the
+ * <code>Security.addProvider()</code> mechanism.
+ * This constructor allows to give a distinct name to the new provider and thus allows
+ * to register multiple instances with separate names. This is helpful in environments
+ * where classloader problems would occur when one classloader installs the provider
+ * but another classloader attempts to cast objects created by the first provider
+ * (e.g. in webapp containers where each webapp wants to install the provider).
+ */
+ public BouncyCastlePQCProvider(final String providerName)
+ {
+ super(providerName, 1.81, info);
AccessController.doPrivileged(new PrivilegedAction()
{
@@ -63,6 +78,19 @@ public class BouncyCastlePQCProvider
});
}
+ @Override public String toString()
+ {
+ // the java.security.Provider class in Android doesn't support the
+ // c'tor with a string version argument
+ // => was only introduced in JDK-9
+ // => but Android is based on JDK-8
+ // => must instead override the base class' toString() method
+ // to output the version in string form instead of as double
+ // (which would truncate trailing zeroes)
+ // => output "1.80" instead of "1.8" ...
+ return getName() + " version " + org.bordercastle.Version.getVersion();
+ }
+
private void setup()
{
loadAlgorithms(ALGORITHM_PACKAGE, ALGORITHMS);
diff -rupN bouncycastle/boca-util/src/main/java/org/bordercastle/asn1/tsp/ArchiveTimeStamp.java bordercastle/boca-util/src/main/java/org/bordercastle/asn1/tsp/ArchiveTimeStamp.java
--- bouncycastle/boca-util/src/main/java/org/bordercastle/asn1/tsp/ArchiveTimeStamp.java 2025-10-25 07:40:44.480471784 +0200
+++ bordercastle/boca-util/src/main/java/org/bordercastle/asn1/tsp/ArchiveTimeStamp.java 2025-10-25 07:40:47.177482506 +0200
@@ -17,7 +17,6 @@ import org.bordercastle.asn1.x509.Algori
/**
* Implementation of the Archive Timestamp type defined in RFC4998.
- * @see <a href="https://tools.ietf.org/html/rfc4998">RFC 4998</a>
* <p>
* ASN.1 Archive Timestamp
* <p>
@@ -30,6 +29,7 @@ import org.bordercastle.asn1.x509.Algori
* PartialHashtree ::= SEQUENCE OF OCTET STRING
* <p>
* Attributes ::= SET SIZE (1..MAX) OF Attribute
+ * @see <a href="https://tools.ietf.org/html/rfc4998">RFC 4998</a>
*/
public class ArchiveTimeStamp
extends ASN1Object

18
maven/pom/boca-light.xml Normal file
View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>boca-light</artifactId>
<packaging>jar</packaging>
<parent>
<groupId>org.bordercastle</groupId>
<artifactId>boca-parent</artifactId>
<version>${bordercastle.version}</version>
</parent>
<name>BorderCastle Lightweight Crypto API</name>
<description>
The Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms.
This jar contains the lightweight API for the Bouncy Castle Cryptography APIs
for JDK 1.8 and onwards.
</description>
</project>

36
maven/pom/boca-mail.xml Normal file
View file

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>boca-mail</artifactId>
<packaging>jar</packaging>
<parent>
<groupId>org.bordercastle</groupId>
<artifactId>boca-parent</artifactId>
<version>${bordercastle.version}</version>
</parent>
<name>BorderCastle S/MIME API</name>
<description>
The Bouncy Castle Java S/MIME APIs for handling S/MIME protocols.
This jar contains S/MIME APIs for JDK 1.8 and onwards. The APIs can be used in conjunction
with a JCE/JCA provider such as the one provided with the Bouncy Castle Cryptography APIs.
The JavaMail API and the Java activation framework will also be needed.
</description>
<dependencies>
<dependency>
<groupId>org.bordercastle</groupId>
<artifactId>boca-util</artifactId>
<version>${bordercastle.version}</version>
</dependency>
<dependency>
<groupId>org.bordercastle</groupId>
<artifactId>boca-pkix</artifactId>
<version>${bordercastle.version}</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.5</version>
</dependency>
</dependencies>
</project>

74
maven/pom/boca-mls.xml Normal file
View file

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>boca-mls</artifactId>
<packaging>jar</packaging>
<parent>
<groupId>org.bordercastle</groupId>
<artifactId>boca-parent</artifactId>
<version>${bordercastle.version}</version>
</parent>
<name>BorderCastle MLS</name>
<description>
The Bouncy Castle MLS implementation.
This jar contains APIs for JDK 1.8 and onwards. The APIs can be used in conjunction with a JCE/JCA
provider such as the one provided with the Bouncy Castle Cryptography APIs.
</description>
<dependencies>
<dependency>
<groupId>org.bordercastle</groupId>
<artifactId>boca-prov</artifactId>
<version>${bordercastle.version}</version>
</dependency>
<dependency>
<groupId>org.bordercastle</groupId>
<artifactId>boca-util</artifactId>
<version>${bordercastle.version}</version>
</dependency>
<!-- note: this module requires some .proto files to get used for generating java code
=> not currently supported by our maven pom files and thus left out
-->
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.22.3</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-api</artifactId>
<version>1.58.0</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-core</artifactId>
<version>1.58.0</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty-shaded</artifactId>
<version>1.58.0</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-protobuf</artifactId>
<version>1.58.0</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-protobuf-lite</artifactId>
<version>1.58.0</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-services</artifactId>
<version>1.58.0</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-stub</artifactId>
<version>1.58.0</version>
</dependency>
</dependencies>
</project>

116
maven/pom/boca-parent.xml Normal file
View file

@ -0,0 +1,116 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
</pluginRepository>
</pluginRepositories>
<repositories>
<repository>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<parent>
<groupId>org.sonatype.oss</groupId>
<artifactId>oss-parent</artifactId>
<version>7</version>
</parent>
<groupId>org.bordercastle</groupId>
<artifactId>boca-parent</artifactId>
<version>${bordercastle.version}</version>
<packaging>pom</packaging>
<name>BorderCastle parent POM project</name>
<url>http://www.bordercastle.org/</url>
<description>
BorderCastle is a package-rename (org.bouncycastle.* to org.bordercastle.*) of Bouncy Castle
intended for the Android platform. Android unfortunately ships with a stripped-down version of
Bouncy Castle, which prevents easy upgrades - BorderCastle overcomes this and provides a full,
up-to-date version of the Bouncy Castle cryptographic libs.
The project was inspired by Spongy Castle (http://rtyley.github.com/spongycastle/) but forked
from it to have a documented and well established build process, directly from the Bouncy Castle
sources.
</description>
<licenses>
<license>
<name>Bouncy Castle Licence</name>
<url>http://www.bouncycastle.org/licence.html</url>
<distribution>repo</distribution>
</license>
</licenses>
<developers>
<developer>
<id>bouncy-castle-dev</id>
<name>Bouncy Castle contributors</name>
<url>http://www.bouncycastle.org/contributors.html</url>
</developer>
<developer>
<id>lepoy</id>
<name>Leon Poyyayil</name>
<timezone>0</timezone>
</developer>
<developer>
<id>dincalza</id>
<name>Dario Incalza</name>
<timezone>0</timezone>
</developer>
</developers>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<modules>
<module>boca-light</module>
<module>boca-prov</module>
<module>boca-pg</module>
<module>boca-pkix</module>
<module>boca-mail</module>
<!-- requires to generate code based on protobuf spec: currently not done
<module>boca-mls</module>
-->
<module>boca-util</module>
<module>boca-tls</module>
</modules>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.unboundid</groupId>
<artifactId>unboundid-ldapsdk</artifactId>
<version>6.0.8</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

30
maven/pom/boca-pg.xml Normal file
View file

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>boca-pg</artifactId>
<packaging>jar</packaging>
<parent>
<groupId>org.bordercastle</groupId>
<artifactId>boca-parent</artifactId>
<version>${bordercastle.version}</version>
</parent>
<name>BorderCastle OpenPGP API</name>
<description>
The Bouncy Castle Java API for handling the OpenPGP protocol.
This jar contains APIs for JDK 1.8 and onwards. The APIs can be used in conjunction with a JCE/JCA
provider such as the one provided with the Bouncy Castle Cryptography APIs.
</description>
<dependencies>
<dependency>
<groupId>org.bordercastle</groupId>
<artifactId>boca-prov</artifactId>
<version>${bordercastle.version}</version>
</dependency>
<dependency>
<groupId>org.bordercastle</groupId>
<artifactId>boca-util</artifactId>
<version>${bordercastle.version}</version>
</dependency>
</dependencies>
</project>

30
maven/pom/boca-pkix.xml Normal file
View file

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>boca-pkix</artifactId>
<packaging>jar</packaging>
<parent>
<groupId>org.bordercastle</groupId>
<artifactId>boca-parent</artifactId>
<version>${bordercastle.version}</version>
</parent>
<name>BorderCastle PKIX, CMS, EAC, TSP, PKCS, OCSP, CMP, and CRMF APIs</name>
<description>
The Bouncy Castle Java APIs for CMS, PKCS, EAC, TSP, CMP, CRMF, OCSP, and certificate generation.
This jar contains APIs for JDK 1.8 and onwards. The APIs can be used in conjunction with a JCE/JCA
provider such as the one provided with the Bouncy Castle Cryptography APIs.
</description>
<dependencies>
<dependency>
<groupId>org.bordercastle</groupId>
<artifactId>boca-prov</artifactId>
<version>${bordercastle.version}</version>
</dependency>
<dependency>
<groupId>org.bordercastle</groupId>
<artifactId>boca-util</artifactId>
<version>${bordercastle.version}</version>
</dependency>
</dependencies>
</project>

24
maven/pom/boca-prov.xml Normal file
View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>boca-prov</artifactId>
<packaging>jar</packaging>
<parent>
<groupId>org.bordercastle</groupId>
<artifactId>boca-parent</artifactId>
<version>${bordercastle.version}</version>
</parent>
<name>BorderCastle Provider</name>
<description>
The Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms.
This jar contains the JCE provider for the Bouncy Castle Cryptography APIs for JDK 1.8 and onwards.
</description>
<dependencies>
<dependency>
<groupId>org.bordercastle</groupId>
<artifactId>boca-light</artifactId>
<version>${bordercastle.version}</version>
</dependency>
</dependencies>
</project>

30
maven/pom/boca-tls.xml Normal file
View file

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>boca-tls</artifactId>
<packaging>jar</packaging>
<parent>
<groupId>org.bordercastle</groupId>
<artifactId>boca-parent</artifactId>
<version>${bordercastle.version}</version>
</parent>
<name>BorderCastle TLS/JSSE</name>
<description>
The Bouncy Castle TLS/JSSE implementation.
This jar contains APIs for JDK 1.8 and onwards. The APIs can be used in conjunction with a JCE/JCA
provider such as the one provided with the Bouncy Castle Cryptography APIs.
</description>
<dependencies>
<dependency>
<groupId>org.bordercastle</groupId>
<artifactId>boca-prov</artifactId>
<version>${bordercastle.version}</version>
</dependency>
<dependency>
<groupId>org.bordercastle</groupId>
<artifactId>boca-util</artifactId>
<version>${bordercastle.version}</version>
</dependency>
</dependencies>
</project>

31
maven/pom/boca-util.xml Normal file
View file

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>boca-util</artifactId>
<packaging>jar</packaging>
<parent>
<groupId>org.bordercastle</groupId>
<artifactId>boca-parent</artifactId>
<version>${bordercastle.version}</version>
</parent>
<name>BorderCastle Utilities</name>
<description>
The Bouncy Castle utility classes.
This jar contains a collection of classes which do not need to be in the JCE provider
jar, but are used by the other APIs. The APIs can be used in conjunction with a JCE/JCA
provider such as the one provided with the Bouncy Castle Cryptography APIs.
</description>
<dependencies>
<dependency>
<groupId>org.bordercastle</groupId>
<artifactId>boca-light</artifactId>
<version>${bordercastle.version}</version>
</dependency>
<dependency>
<groupId>org.bordercastle</groupId>
<artifactId>boca-prov</artifactId>
<version>${bordercastle.version}</version>
</dependency>
</dependencies>
</project>

1
maven/user.home/.m2/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
settings.xml

View file

@ -0,0 +1,3 @@
<settings>
<localRepository>${maven.repo}</localRepository>
</settings>