3
3
# Distributed under the MIT software license, see the accompanying
4
4
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
5
5
6
+ export LC_ALL=C
6
7
INPUT=$( cat /dev/stdin)
7
8
VALID=false
8
9
REVSIG=false
9
10
IFS='
10
11
'
11
12
if [ " $BITCOIN_VERIFY_COMMITS_ALLOW_SHA1 " = 1 ]; then
12
- GPG_RES=" $( echo " $INPUT " | gpg --trust-model always " $@ " 2> /dev/null) "
13
+ GPG_RES=" $( printf ' %s\n ' " $INPUT " | gpg --trust-model always " $@ " 2> /dev/null) "
13
14
else
14
15
# Note how we've disabled SHA1 with the --weak-digest option, disabling
15
16
# signatures - including selfsigs - that use SHA1. While you might think that
24
25
case " $LINE " in
25
26
" gpg (GnuPG) 1.4.1" * |" gpg (GnuPG) 2.0." * )
26
27
echo " Please upgrade to at least gpg 2.1.10 to check for weak signatures" > /dev/stderr
27
- GPG_RES=" $( echo " $INPUT " | gpg --trust-model always " $@ " 2> /dev/null) "
28
+ GPG_RES=" $( printf ' %s\n ' " $INPUT " | gpg --trust-model always " $@ " 2> /dev/null) "
28
29
;;
29
30
# We assume if you're running 2.1+, you're probably running 2.1.10+
30
31
# gpg will fail otherwise
31
32
# We assume if you're running 1.X, it is either 1.4.1X or 1.4.20+
32
33
# gpg will fail otherwise
33
34
esac
34
35
done
35
- [ " $GPG_RES " = " " ] && GPG_RES=" $( echo " $INPUT " | gpg --trust-model always --weak-digest sha1 " $@ " 2> /dev/null) "
36
+ [ " $GPG_RES " = " " ] && GPG_RES=" $( printf ' %s\n ' " $INPUT " | gpg --trust-model always --weak-digest sha1 " $@ " 2> /dev/null) "
36
37
fi
37
38
for LINE in $( echo " $GPG_RES " ) ; do
38
39
case " $LINE " in
@@ -46,14 +47,19 @@ for LINE in $(echo "$GPG_RES"); do
46
47
REVSIG=true
47
48
GOODREVSIG=" [GNUPG:] GOODSIG ${LINE#* * * } "
48
49
;;
50
+ " [GNUPG:] EXPKEYSIG " * )
51
+ [ " $BITCOIN_VERIFY_COMMITS_ALLOW_REVSIG " != 1 ] && exit 1
52
+ REVSIG=true
53
+ GOODREVSIG=" [GNUPG:] GOODSIG ${LINE#* * * } "
54
+ ;;
49
55
esac
50
56
done
51
57
if ! $VALID ; then
52
58
exit 1
53
59
fi
54
60
if $VALID && $REVSIG ; then
55
- echo " $INPUT " | gpg --trust-model always " $@ " 2> /dev/null | grep " \[GNUPG:\] \(NEWSIG\|SIG_ID\|VALIDSIG\)"
61
+ printf ' %s\n ' " $INPUT " | gpg --trust-model always " $@ " 2> /dev/null | grep " ^ \[GNUPG:\] \(NEWSIG\|SIG_ID\|VALIDSIG\)"
56
62
echo " $GOODREVSIG "
57
63
else
58
- echo " $INPUT " | gpg --trust-model always " $@ " 2> /dev/null
64
+ printf ' %s\n ' " $INPUT " | gpg --trust-model always " $@ " 2> /dev/null
59
65
fi
0 commit comments