|
| 1 | +#!/usr/bin/env bash |
| 2 | +set -x |
| 3 | +SIGN_ID="$1" |
| 4 | +KEYCHAIN="$2" |
| 5 | +REL_PATH="$3" |
| 6 | +XML_PATH="$4" |
| 7 | +ABS_PATH="$(pwd)/$REL_PATH" |
| 8 | +TS="$(date +%Y-%m-%d_%H-%M-%S)" |
| 9 | +function sign_cmd() { |
| 10 | + for targetFile in "$@" ; do |
| 11 | + codesign --force --verbose=4 --deep --strict --timestamp --options=runtime --entitlements $XML_PATH --sign "$SIGN_ID" "$targetFile" 2>&1 | tee -a /tmp/codesign-output-${TS}.txt |
| 12 | + done |
| 13 | +} |
| 14 | +VERIFY_CMD="codesign --verbose=4 --verify --deep --strict" |
| 15 | +ENTITLEMENT_CMD="codesign -d --entitlements :-" |
| 16 | +LOG="2>&1 | tee -a /tmp/codesign-output-${TS}.txt" |
| 17 | + |
| 18 | +# Remove symlinks pointing outside of the project build folder: |
| 19 | +rm -f "$ABS_PATH/Contents/Resources/app/result" |
| 20 | + |
| 21 | +# Ensure the code signing identity is found and set the keychain search path: |
| 22 | +eval "security show-keychain-info \"$KEYCHAIN\" $LOG" |
| 23 | +eval "security find-identity -v -p codesigning \"$KEYCHAIN\" $LOG" |
| 24 | +eval "security list-keychains -d user -s \"$KEYCHAIN\" $LOG" |
| 25 | + |
| 26 | +# Sign framework executables not signed by the deep sign command: |
| 27 | +sign_cmd "$ABS_PATH/Contents/Frameworks/Squirrel.framework/Versions/A/Resources/ShipIt" |
| 28 | +sign_cmd "$ABS_PATH/Contents/Frameworks/Electron Framework.framework/Versions/Current/Resources/crashpad_handler" |
| 29 | +sign_cmd "$ABS_PATH/Contents/Frameworks/Electron Framework.framework/Versions/Current/Libraries/libnode.dylib" |
| 30 | +sign_cmd "$ABS_PATH/Contents/Frameworks/Electron Framework.framework/Versions/Current/Libraries/libffmpeg.dylib" |
| 31 | + |
| 32 | +sign_cmd "$ABS_PATH/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libEGL.dylib" |
| 33 | +sign_cmd "$ABS_PATH/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libGLESv2.dylib" |
| 34 | +sign_cmd "$ABS_PATH/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libswiftshader_libEGL.dylib" |
| 35 | +sign_cmd "$ABS_PATH/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libswiftshader_libGLESv2.dylib" |
| 36 | +sign_cmd "$ABS_PATH/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libvk_swiftshader.dylib" |
| 37 | + |
| 38 | +# Sign the whole component deeply |
| 39 | +sign_cmd "$ABS_PATH" |
| 40 | + |
| 41 | +# Verify the signing |
| 42 | +eval "$VERIFY_CMD \"$ABS_PATH\" $LOG" |
| 43 | +eval "$VERIFY_CMD --display -r- \"$ABS_PATH\"" "$LOG" |
| 44 | +eval "$ENTITLEMENT_CMD \"$ABS_PATH\"" "$LOG" |
| 45 | +set +x |
0 commit comments