|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
#!/bin/bash
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
# Copyright 2018 B. Persson, Bjorn@Rombobeorn.se
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
#
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
# This program is free software; you can redistribute it and/or modify
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
# it under the terms of the GNU General Public License as published by
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
# the Free Software Foundation; either version 2 of the License, or
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
# (at your option) any later version.
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
#
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
# This program is distributed in the hope that it will be useful,
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
# GNU General Public License for more details.
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
#
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
# You should have received a copy of the GNU General Public License along
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
function print_help {
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
cat <<'EOF'
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
Usage: gpgverify --keyring=<pathname> --signature=<pathname> --data=<pathname>
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
gpgverify is a wrapper around gpgv designed for easy and safe scripting. It
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
verifies a file against a detached OpenPGP signature and a keyring. The keyring
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
shall contain all the keys that are trusted to certify the authenticity of the
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
file, and must not contain any untrusted keys.
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
The differences, compared to invoking gpgv directly, are that gpgverify accepts
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
the keyring in either ASCII-armored or unarmored form, and that it will not
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
accidentally use a default keyring in addition to the specified one.
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
Parameters:
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
--keyring=<pathname> keyring with all the trusted keys and no others
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
--signature=<pathname> detached signature to verify
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
--data=<pathname> file to verify against the signature
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
EOF
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
}
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
fatal_error() {
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
message="$1" # an error message
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
status=$2 # a number to use as the exit code
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
echo "gpgverify: $message" >&2
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
exit $status
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
}
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
require_parameter() {
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
term="$1" # a term for a required parameter
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
value="$2" # Complain and terminate if this value is empty.
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
if test -z "${value}" ; then
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
fatal_error "No ${term} was provided." 2
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
fi
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
}
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
check_status() {
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
action="$1" # a string that describes the action that was attempted
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
status=$2 # the exit code of the command
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
if test $status -ne 0 ; then
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
fatal_error "$action failed." $status
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
fi
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
}
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
# Parse the command line.
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
keyring=
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
signature=
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
data=
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
for parameter in "$@" ; do
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
case "${parameter}" in
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
(--help)
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
print_help
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
exit
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
;;
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
(--keyring=*)
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
keyring="${parameter#*=}"
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
;;
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
(--signature=*)
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
signature="${parameter#*=}"
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
;;
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
(--data=*)
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
data="${parameter#*=}"
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
;;
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
(*)
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
fatal_error "Unknown parameter: \"${parameter}\"" 2
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
;;
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
esac
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
done
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
require_parameter 'keyring' "${keyring}"
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
require_parameter 'signature' "${signature}"
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
require_parameter 'data file' "${data}"
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
# Make a temporary working directory.
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
workdir="$(mktemp --directory)"
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
check_status 'Making a temporary directory' $?
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
workring="${workdir}/keyring.gpg"
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
# Decode any ASCII armor on the keyring. This is harmless if the keyring isn't
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
# ASCII-armored.
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
gpg2 --homedir="${workdir}" --yes --output="${workring}" --dearmor "${keyring}"
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
check_status 'Decoding the keyring' $?
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
# Verify the signature using the decoded keyring.
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
gpgv2 --homedir="${workdir}" --keyring="${workring}" "${signature}" "${data}"
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
check_status 'Signature verification' $?
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
# (--homedir isn't actually necessary. --dearmor processes only the input file,
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
# and if --keyring is used and contains a slash, then gpgv2 uses only that
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
# keyring. Thus neither command will look for a default keyring, but --homedir
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
# makes extra double sure that no default keyring will be touched in case
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
# another version of GPG works differently.)
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
# Clean up. (This is not done in case of an error that may need inspection.)
|
|
![](https://seccdn.libravatar.org/avatar/0b2750e4294f64ba21799a0c943b16696b8a8d6bb1286fd347db9107652eaf6f?s=16&d=retro) |
4bf0de7 |
rm --recursive --force ${workdir}
|