blob: 22fe36618c85497766ffbdb1a32e269cbefd1a36 [file] [log] [blame]
#!/usr/bin/env bash
# small utility to check signature of app on the mac. Assumes the XCode tools installed.
appPathAndName=$1
if [[ -z "${appPathAndName}" ]]
then
echo -e "\n\t[ERROR] Programming error. The applications path and name must be specified for $(basename $0)"
exit 1
fi
if [[ ! -e "${appPathAndName}" ]]
then
echo -e "\n\t[ERROR] Programning error in $(basename $0). The applications path and name was specified, but did not exist,\n\t\tWas specified as ${appPathAndName}"
exit 2
fi
SPCTL=$(which spctl)
if [[ -z "${SPCTL}" ]]
then
echo "\n\t[ERROR} spctl was not found on this system to check signatures"
exit 3
fi
CODESIGN=$(which codesign)
if [[ -z "${CODESIGN}" ]]
then
echo "\n\t[ERROR codesign was not found on this system to check signatures"
exit 4
fi
echo -e "\n\t${SPCTL} -a -t exec -vvvv $appPathAndName\n"
"${SPCTL}" -a -t exec -vvvv "$appPathAndName"
RCspctl=$?
if [[ $RCspctl != 0 ]]
then
echo -e "\n\tspctl returned $RCspctl"
fi
# display always returns 0 apparently
echo -e "\n\t${CODESIGN} --verbose=4 --display --deep -r- $appPathAndName\n"
"${CODESIGN}" --verbose=4 --display --deep --continue -r- "$appPathAndName"
# verify for return code
echo -e "\n\t${CODESIGN} --verbose=4 --verify --deep --continue -r- $appPathAndName\n"
"${CODESIGN}" --verbose=4 --verify --deep --continue -r- "$appPathAndName"
RCcodesign=$?
if [[ $RCcodesign != 0 ]]
then
echo -e "\n\tcodesign returned $RCcodesign"
fi
# according to man pages, return code of 1 means "not correctly signed".
# other return codes (2, 3) mean things like "arguments not correct"
if [[ $RCspctl == 1 || $RCcodesign == 1 ]]
then
echo -e "\n\t[ERROR] The application $appPathAndName was not correctly signed"
exit $(( $RCspctl & $RCcodesign ))
fi
if [[ $RCspctl != 0 || $RCcodesign != 0 ]]
then
echo -e "\n\t[ERROR] The verification arguments while checking $appPathAndName were not correct"
exit $(( $RCspctl & $RCcodesign ))
fi
exit 0