Вот сценарий оболочки, который я использую для этой цели. Он создает временную связку ключей, устанавливает в нее указанный открытый ключ, запускает указанную команду и затем удаляет временную связку ключей.
Обратите внимание, что это устанавливает ключ с сервера ключей. Не должно быть сложно настроить его, чтобы использовать ключ, который у вас уже есть на диске (и я должен добавить опцию, чтобы сделать это).
Обновление: см. https://github.com/Keith-S-Thompson/gpg-tmp
#!/bin/sh
keyid=$1
shift
case "$keyid" in
????????)
;;
*)
echo "Usage: $0 key args..." 1>&2
exit 1
esac
tmp_keyring=$HOME/$keyid-keyring.gpg
gpg --no-default-keyring --keyring $tmp_keyring --recv-keys $keyid
gpg --no-default-keyring --keyring $tmp_keyring "$@"
rm -f $tmp_keyring
Действует как команда gpg
, но принимает дополнительный начальный аргумент, определяющий 8-значный идентификатор ключа.
Пример использования:
$ gpg coreutils-8.9.tar.gz.sig
gpg: Signature made Tue 04 Jan 2011 07:04:25 AM PST using RSA key ID 000BEEEE
gpg: Can't check signature: public key not found
$ gpg-tmp 000BEEEE coreutils-8.9.tar.gz.sig
gpg: keyring `/home/kst/000BEEEE-keyring.gpg' created
gpg: requesting key 000BEEEE from hkp server subkeys.pgp.net
gpg: key 000BEEEE: public key "Jim Meyering <jim@meyering.net>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
gpg: Signature made Tue 04 Jan 2011 07:04:25 AM PST using RSA key ID 000BEEEE
gpg: Good signature from "Jim Meyering <jim@meyering.net>"
gpg: aka "Jim Meyering <meyering@gnu.org>"
gpg: aka "Jim Meyering <meyering@redhat.com>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 155D 3FC5 00C8 3448 6D1E EA67 7FD9 FCCB 000B EEEE
Имейте в виду, что это абсолютно ничего не говорит о надежности ключа, но полезно для проверки целостности.
(Интересно, сколько ключей сгенерировал Джим Мейринг до того, как получил тот?)