b2g-certificates/add-certificates-to-phone.sh

83 lines
1.8 KiB
Bash
Executable File

#!/bin/bash
function log
{
GREEN="\E[32m"
RESET="\033[00;00m"
echo -e "${GREEN}$1${RESET}"
}
usage() {
echo "Usage: ${0} [-r] (dir) | [-d] | [-h]" 1>&2
echo ""
echo "-r (dir) Enter the NSS DB root directory ( Such as Nokia, enter /data/b2g/mozilla )"
echo " Some phones may be different."
echo " For more information, please visit: https://github.com/openGiraffes/b2g-certificates"
echo "-d Use default directory (/data/b2g/mozilla)"
echo "-h Output this help."
exit 1
}
ROOT_DIR_DB=
while getopts "dhr:" options
do
case ${options} in
d) ROOT_DIR_DB=/data/b2g/mozilla;;
r) ROOT_DIR_DB=$OPTARG;;
h) usage;;
esac
done
CERT_DIR=certs
CERT=cert9.db
KEY=key4.db
PKCS11=pkcs11.txt
DB_DIR=`adb shell "ls -d ${ROOT_DIR_DB}/*.default 2>/dev/null" | sed "s/default.*$/default/g"`
if [ "${DB_DIR}" = "" ]; then
echo "Profile directory does not exist. Please start the b2g process at
least once before running this script."
exit 1
fi
# cleanup
rm -f ./$CERT
rm -f ./$KEY
rm -f ./$PKCS11
# pull files from phone
log "getting ${CERT}"
adb pull ${DB_DIR}/${CERT} .
log "getting ${KEY}"
adb pull ${DB_DIR}/${KEY} .
log "getting ${PKCS11}"
adb pull ${DB_DIR}/${PKCS11} .
# clear password and add certificates
log "set password (hit enter twice to set an empty password)"
certutil -d 'sql:.' -N
log "adding certificats"
for i in ${CERT_DIR}/*
do
log "Adding certificate $i"
certutil -d 'sql:.' -A -n "`basename $i`" -t "C,C,TC" -i $i
done
# push files to phone
log "stopping b2g"
adb shell stop b2g
log "copying ${CERT}"
adb push ./${CERT} ${DB_DIR}/${CERT}
log "copying ${KEY}"
adb push ./${KEY} ${DB_DIR}/${KEY}
log "copying ${PKCS11}"
adb push ./${PKCS11} ${DB_DIR}/${PKCS11}
log "starting b2g"
adb shell start b2g
log "Finished."