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