mirror of
https://github.com/acidanthera/OpenCorePkg.git
synced 2025-12-08 19:25:01 +00:00
* exclude memtest86 generated log files and reports from vault.plist * make CreateVault scripts work on linux too * create_vault.sh: use shellcheck suggestions * create_vault.sh: use full path to sort for consistency
72 lines
1.8 KiB
Bash
Executable File
72 lines
1.8 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
abort() {
|
|
echo "Fatal error: ${1}!"
|
|
exit 1
|
|
}
|
|
|
|
cleanup() {
|
|
echo "Cleaning up key"
|
|
rm -rf "${KeyPath}"
|
|
}
|
|
|
|
if [ ! -x /usr/bin/dirname ] || [ ! -x /bin/chmod ] || [ ! -x /bin/mkdir ] || [ ! -x /bin/rm ] || [ ! -x /usr/bin/strings ] || [ ! -x /usr/bin/grep ] || [ ! -x /usr/bin/awk ] || [ ! -x /bin/dd ] || [ ! -x /usr/bin/uuidgen ] ; then
|
|
abort "Unix environment is broken!"
|
|
fi
|
|
|
|
cd "$(/usr/bin/dirname "$0")" || abort "Failed to enter working directory!"
|
|
|
|
OCPath="$1"
|
|
|
|
if [ "$OCPath" = "" ]; then
|
|
OCPath=../../EFI/OC
|
|
fi
|
|
|
|
KeyPath="/tmp/$(/usr/bin/uuidgen)"
|
|
OCBin="${OCPath}/OpenCore.efi"
|
|
PubKey="${KeyPath}/vault.pub"
|
|
|
|
if [ ! -d "${OCPath}" ]; then
|
|
abort "Path ${OCPath} is missing!"
|
|
fi
|
|
|
|
if [ ! -f "${OCBin}" ]; then
|
|
abort "OpenCore.efi is missing!"
|
|
fi
|
|
|
|
if [ ! -x ./RsaTool ] || [ ! -x ./create_vault.sh ]; then
|
|
if [ -f ./RsaTool ]; then
|
|
/bin/chmod a+x ./RsaTool || abort "Failed to set permission for RsaTool"
|
|
else
|
|
abort "Failed to find RsaTool!"
|
|
fi
|
|
|
|
if [ -f ./create_vault.sh ]; then
|
|
/bin/chmod a+x ./create_vault.sh || abort "Failed to set permission for create_vault.sh"
|
|
else
|
|
abort "Failed to find create_vault.sh!"
|
|
fi
|
|
fi
|
|
|
|
trap cleanup EXIT INT TERM
|
|
|
|
if [ ! -d "${KeyPath}" ]; then
|
|
/bin/mkdir -p "${KeyPath}" || abort "Failed to create path ${KeyPath}"
|
|
fi
|
|
|
|
./create_vault.sh "${OCPath}" || abort "create_vault.sh returns errors!"
|
|
|
|
echo "Signing ${OCBin}..."
|
|
./RsaTool -sign "${OCPath}/vault.plist" "${OCPath}/vault.sig" "${PubKey}" || abort "Failed to patch ${PubKey}"
|
|
|
|
echo "Bin-patching ${OCBin}..."
|
|
off=$(($(/usr/bin/strings -a -t d "${OCBin}" | /usr/bin/grep "=BEGIN OC VAULT=" | /usr/bin/awk '{print $1}') + 16))
|
|
if [ "${off}" -le 16 ]; then
|
|
abort "${OCBin} is borked"
|
|
fi
|
|
|
|
/bin/dd of="${OCBin}" if="${PubKey}" bs=1 seek="${off}" count=528 conv=notrunc || abort "Failed to bin-patch ${OCBin}"
|
|
|
|
echo "All done!"
|
|
exit 0
|