Spaces:
Build error
Build error
| # !!! コードサイニング証明書を取り扱うので取り扱い注意 !!! | |
| set -eu | |
| if [ ! -v CERT_BASE64 ]; then | |
| echo "CERT_BASE64が未定義です" | |
| exit 1 | |
| fi | |
| if [ ! -v CERT_PASSWORD ]; then | |
| echo "CERT_PASSWORDが未定義です" | |
| exit 1 | |
| fi | |
| if [ $# -ne 1 ]; then | |
| echo "引数の数が一致しません" | |
| exit 1 | |
| fi | |
| target_file_glob="$1" | |
| # 証明書 | |
| CERT_PATH=cert.pfx | |
| echo -n "$CERT_BASE64" | base64 -d - > $CERT_PATH | |
| # 指定ファイルに署名する | |
| function codesign() { | |
| TARGET="$1" | |
| SIGNTOOL=$(find "C:/Program Files (x86)/Windows Kits/10/App Certification Kit" -name "signtool.exe" | sort -V | tail -n 1) | |
| powershell "& '$SIGNTOOL' sign /fd SHA256 /td SHA256 /tr http://timestamp.digicert.com /f $CERT_PATH /p $CERT_PASSWORD '$TARGET'" | |
| } | |
| # 指定ファイルが署名されているか | |
| function is_signed() { | |
| TARGET="$1" | |
| SIGNTOOL=$(find "C:/Program Files (x86)/Windows Kits/10/App Certification Kit" -name "signtool.exe" | sort -V | tail -n 1) | |
| powershell "& '$SIGNTOOL' verify /pa '$TARGET'" || return 1 | |
| } | |
| # 署名されていなければ署名 | |
| ls $target_file_glob | while read target_file; do | |
| if is_signed "$target_file"; then | |
| echo "署名済み: $target_file" | |
| else | |
| echo "署名: $target_file" | |
| codesign "$target_file" | |
| fi | |
| done | |
| # 証明書を消去 | |
| rm $CERT_PATH | |