71 lines
1.7 KiB
Bash
71 lines
1.7 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
# create_vault.sh
|
||
|
#
|
||
|
#
|
||
|
# Created by Rodion Shingarev on 13.04.19.
|
||
|
#
|
||
|
OCPath="$1"
|
||
|
|
||
|
if [ "${OCPath}" = "" ]; then
|
||
|
echo "Usage ./create_vault.sh path/to/EFI/OC"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
if [ ! -d "${OCPath}" ]; then
|
||
|
echo "Path $OCPath is missing!"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
if [ ! -x /usr/bin/find ] || [ ! -x /bin/rm ] || [ ! -x /usr/bin/sed ] || [ ! -x /usr/bin/xxd ]; then
|
||
|
echo "Unix environment is broken!"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
if [ ! -x /usr/libexec/PlistBuddy ]; then
|
||
|
echo "PlistBuddy is missing!"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
if [ ! -x /usr/bin/shasum ]; then
|
||
|
echo "shasum is missing!"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
abort() {
|
||
|
/bin/rm -rf vault.plist vault.sig /tmp/vault_hash
|
||
|
echo "Fatal error: ${1}!"
|
||
|
exit 1
|
||
|
}
|
||
|
|
||
|
echo "Chose ${OCPath} for hashing..."
|
||
|
|
||
|
cd "${OCPath}" || abort "Failed to reach ${OCPath}"
|
||
|
/bin/rm -rf vault.plist vault.sig || abort "Failed to cleanup"
|
||
|
/usr/libexec/PlistBuddy -c "Add Version integer 1" vault.plist || abort "Failed to set vault.plist version"
|
||
|
|
||
|
echo "Hashing files in ${OCPath}..."
|
||
|
|
||
|
/usr/bin/find . -not -path '*/\.*' -type f \
|
||
|
\( ! -iname ".*" \) \
|
||
|
\( ! -iname "vault.*" \) \
|
||
|
\( ! -iname "OpenCore.efi" \) | while read fname; do
|
||
|
fname="${fname#"./"}"
|
||
|
wname="${fname//\//\\\\}"
|
||
|
shasum=$(/usr/bin/shasum -a 256 "${fname}") || abort "Failed to hash ${fname}"
|
||
|
sha=$(echo "$shasum" | /usr/bin/sed 's/^\([a-f0-9]\{64\}\).*/\1/') || abort "Illegit hashsum"
|
||
|
if [ "${#sha}" != 64 ] || [ "$(echo "$sha"| /usr/bin/sed 's/^[a-f0-9]*$//')"]; then
|
||
|
abort "Got invalid hash: ${sha}!"
|
||
|
fi
|
||
|
|
||
|
echo "${wname}: ${sha}"
|
||
|
|
||
|
echo "${sha}" | /usr/bin/xxd -r -p > /tmp/vault_hash || abort "Hashing failure"
|
||
|
/usr/libexec/PlistBuddy -c "Import Files:'${wname}' /tmp/vault_hash" vault.plist || abort "Failed to append vault.plist!"
|
||
|
done
|
||
|
|
||
|
/bin/rm -rf /tmp/vault_hash
|
||
|
|
||
|
echo "All done!"
|
||
|
exit 0
|