Files
tinystt/scripts/setup-signing.sh
T

46 lines
1.5 KiB
Bash
Executable File

#!/bin/bash
# 生成一个本地自签名代码签名证书,保证每次重建后「辅助功能」授权不会失效。
set -euo pipefail
IDENTITY="${TINYSTT_SIGN_IDENTITY:-${TINYTTS_SIGN_IDENTITY:-TinySTT Dev}}"
if security find-identity -v -p codesigning 2>/dev/null | grep -q "$IDENTITY"; then
echo "签名身份已存在:$IDENTITY"
exit 0
fi
WORK="$(mktemp -d)"
trap 'rm -rf "$WORK"' EXIT
cat > "$WORK/cert.cnf" <<'EOF'
[req]
distinguished_name = dn
x509_extensions = ext
prompt = no
[dn]
CN = TinySTT Dev
[ext]
basicConstraints = critical,CA:false
keyUsage = critical,digitalSignature
extendedKeyUsage = critical,codeSigning
EOF
openssl req -x509 -newkey rsa:2048 -nodes \
-keyout "$WORK/key.pem" -out "$WORK/cert.pem" \
-days 3650 -config "$WORK/cert.cnf" >/dev/null 2>&1
openssl pkcs12 -export -out "$WORK/id.p12" \
-inkey "$WORK/key.pem" -in "$WORK/cert.pem" \
-name "$IDENTITY" -passout pass:tinystt \
-legacy -macalg sha1 -certpbe PBE-SHA1-3DES -keypbe PBE-SHA1-3DES >/dev/null 2>&1 \
|| openssl pkcs12 -export -out "$WORK/id.p12" \
-inkey "$WORK/key.pem" -in "$WORK/cert.pem" \
-name "$IDENTITY" -passout pass:tinystt \
-macalg sha1 -certpbe PBE-SHA1-3DES -keypbe PBE-SHA1-3DES >/dev/null 2>&1
security import "$WORK/id.p12" -k "$HOME/Library/Keychains/login.keychain-db" \
-P tinystt -T /usr/bin/codesign >/dev/null
echo "已创建签名身份:$IDENTITY"
security find-identity -v -p codesigning | grep "$IDENTITY" || true