tests: Fix distcheck.
[gnupg.git] / build-aux / append-signature.sh
1 #!/bin/sh
2 # Append a signature to an existing detached signature.
3 # Copyright (C) 2016 g10 Code GmbH
4 #
5 # This file is free software; as a special exception the author gives
6 # unlimited permission to copy and/or distribute it, with or without
7 # modifications, as long as this notice is preserved.
8 #
9 # This program is distributed in the hope that it will be useful, but
10 # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
11 # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
13 set -e
14 PGM="$(basename $0)"
15 GPGV=gpgv
16
17 # Prints usage information.
18 usage()
19 {
20     cat <<EOF
21 Usage: $PGM TARBALL NEWSIGNATURE
22 Append a signature to an existing detached signature.
23 Options:
24     --verbose          Print some extra information.
25     --help             Print this help.
26 EOF
27     exit $1
28 }
29
30 #
31 # Parse options
32 #
33 verbose=""
34 while [ $# -gt 0 ]; do
35     case "$1" in
36         # Set up `optarg'.
37         --*=*)
38             optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'`
39             ;;
40         *)
41             optarg=""
42             ;;
43     esac
44
45     case $1 in
46         --help|-h)
47             usage 0
48             ;;
49         --verbose|-v)
50             verbose="-v"
51             ;;
52         --)
53             break
54             ;;
55         -*)
56             usage 1 1>&2
57             ;;
58         *)
59             break;
60             ;;
61     esac
62     shift
63 done
64
65 if [ $# -ne 2 ]; then
66     usage 1 1>&2
67 fi
68 tarball="$1"
69 tarballsig="$1".sig
70 newsig="$2"
71
72 [ -n "$verbose" ] && echo "tarball: $tarball"
73 [ -n "$verbose" ] && echo "sig ...: $tarballsig"
74 [ -n "$verbose" ] && echo "newsig : $newsig"
75
76 if ! $GPGV --version >/dev/null 2>/dev/null ; then
77     echo "${PGM}: Command \"gpgv\" is not installed" >&2
78     exit 1
79 fi
80
81 distsigkey="/usr/local/share/gnupg/distsigkey.gpg"
82 if [ ! -f "$distsigkey" ]; then
83     distsigkey="/usr/share/gnupg/distsigkey.gpg"
84 fi
85 if [ ! -f "$distsigkey" ]; then
86     echo "${PGM}: File \"$distsigkey\" is not installed" >&2
87     exit 1
88 fi
89
90 if ! $GPGV $verbose --keyring "$distsigkey" \
91            -- "$tarballsig" "$tarball" 2>/dev/null ; then
92     echo "${PGM}: Existing signature '$tarballsig' does not verify" >&2
93     exit 1
94 fi
95
96 if ! $GPGV $verbose --keyring "$distsigkey" \
97            -- "$newsig" "$tarball" 2>/dev/null; then
98     echo "${PGM}: New signature '$newsig' does not verify" >&2
99     exit 1
100 fi
101
102 cat "$newsig" >> "$tarballsig"
103
104 if ! $GPGV $verbose --keyring "$distsigkey" \
105            -- "$tarballsig" "$tarball"; then
106     echo "${PGM}: Update signature '$tarballsig' does not verify" >&2
107     exit 1
108 fi