detached-sig-create.sh raw
1 #!/bin/sh
2 # Copyright (c) 2014-present The Bitcoin Core developers
3 # Distributed under the MIT software license, see the accompanying
4 # file COPYING or http://www.opensource.org/licenses/mit-license.php.
5
6 export LC_ALL=C
7 if [ -z "$OSSLSIGNCODE" ]; then
8 OSSLSIGNCODE=osslsigncode
9 fi
10
11 if [ "$#" -ne 1 ]; then
12 echo "usage: $0 <path to key>"
13 echo "example: $0 codesign.key"
14 exit 1
15 fi
16
17 OUT=signature-win.tar.gz
18 SRCDIR=unsigned
19 WORKDIR=./.tmp
20 OUTDIR="${WORKDIR}/out"
21 OUTSUBDIR="${OUTDIR}/win"
22 TIMESERVER=http://timestamp.comodoca.com
23 CERTFILE="win-codesign.cert"
24
25 stty -echo
26 printf "Enter the passphrase for %s: " "$1"
27 read cs_key_pass
28 printf "\n"
29 stty echo
30
31
32 mkdir -p "${OUTSUBDIR}"
33 find ${SRCDIR} -wholename "*.exe" -type f -exec realpath --relative-to=. {} \; | while read -r bin
34 do
35 echo Signing "${bin}"
36 bin_base="$(realpath --relative-to=${SRCDIR} "${bin}")"
37 mkdir -p "$(dirname ${WORKDIR}/"${bin_base}")"
38 "${OSSLSIGNCODE}" sign -certs "${CERTFILE}" -t "${TIMESERVER}" -h sha256 -in "${bin}" -out "${WORKDIR}/${bin_base}" -key "$1" -pass "${cs_key_pass}"
39 mkdir -p "$(dirname ${OUTSUBDIR}/"${bin_base}")"
40 "${OSSLSIGNCODE}" extract-signature -pem -in "${WORKDIR}/${bin_base}" -out "${OUTSUBDIR}/${bin_base}.pem" && rm "${WORKDIR}/${bin_base}"
41 done
42
43 rm -f "${OUT}"
44 tar -C "${OUTDIR}" -czf "${OUT}" .
45 rm -rf "${WORKDIR}"
46 echo "Created ${OUT}"
47