wolfcrypt-jni/examples/certs/convert-to-bks.sh

72 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
# Convert JKS KeyStore files to BKS format for Android use.
# Android does not support JKS KeyStores, so BKS format is needed.
#
# Requires a Bouncy Castle provider JAR (bcprov). Download from:
# https://www.bouncycastle.org/download/bouncy-castle-java/
#
# Usage:
# cd examples/certs
# ./convert-to-bks.sh <path/to/bcprov.jar>
#
# Example:
# ./convert-to-bks.sh ~/Downloads/bcprov-jdk18on-1.78.1.jar
if [ -z "$1" ]; then
echo "Expected path to Bouncy Castle provider JAR."
echo "Usage: ./convert-to-bks.sh <path/to/bcprov.jar>"
echo ""
echo "Example:"
echo " ./convert-to-bks.sh ~/Downloads/bcprov-jdk18on-1.78.1.jar"
exit 1
fi
PROVIDER="$1"
if [ ! -f "$PROVIDER" ]; then
echo "Error: Provider JAR not found: $PROVIDER"
exit 1
fi
convert () {
if [ ! -f "${1}.jks" ]; then
echo "Warning: ${1}.jks not found, skipping"
return
fi
rm -f "${1}.bks" 2>/dev/null
keytool -importkeystore \
-srckeystore "${1}.jks" \
-destkeystore "${1}.bks" \
-srcstoretype JKS \
-deststoretype BKS \
-srcstorepass "wolfsslpassword" \
-deststorepass "wolfsslpassword" \
-provider org.bouncycastle.jce.provider.BouncyCastleProvider \
-providerpath "$PROVIDER"
if [ $? -eq 0 ]; then
echo "Converted: ${1}.jks -> ${1}.bks"
else
echo "Error converting: ${1}.jks"
FAIL=1
fi
}
FAIL=0
echo "Converting JKS KeyStore files to BKS format..."
echo ""
convert "ca-server-rsa-2048"
convert "ca-server-ecc-256"
echo ""
if [ $FAIL -ne 0 ]; then
echo "One or more conversions failed."
exit 1
fi
echo "Done."