#!/bin/sh . $srcdir/defs.inc || exit 3 check_exported_public_key() { $GPG --list-packets $1 >$1.packets grep '^:public key packet:' $1.packets >/dev/null grep "^ keyid: .*$KEY$" $1.packets >/dev/null grep '^:user ID packet:' $1.packets >/dev/null grep "^:signature packet:.*keyid.*$KEY" $1.packets >/dev/null rm $1.packets } check_armored_public_key() { grep '^-----BEGIN PGP PUBLIC KEY BLOCK-----$' $1 >/dev/null grep '^-----END PGP PUBLIC KEY BLOCK-----$' $1 >/dev/null check_exported_public_key $1 } check_exported_private_key() { $GPG --list-packets $1 >$1.packets grep '^:secret key packet:' $1.packets >/dev/null grep "^ keyid: .*$KEY$" $1.packets >/dev/null grep '^:user ID packet:' $1.packets >/dev/null grep "^:signature packet:.*keyid.*$KEY" $1.packets >/dev/null rm $1.packets } check_armored_private_key() { grep '^-----BEGIN PGP PRIVATE KEY BLOCK-----$' $1 >/dev/null grep '^-----END PGP PRIVATE KEY BLOCK-----$' $1 >/dev/null check_exported_private_key $1 } logfile="`pwd`/pinentry.log" ppfile="`pwd`/passphrases" rm -f -- $logfile $ppfile touch $ppfile prepare_passphrase() { echo $* >>$ppfile } prepare_passphrase_confirm() { echo "fake-entry being started to CONFIRM the weak phrase" >>$ppfile } assert_passphrases_consumed() { if test -s $ppfile; then echo "Expected $ppfile to be empty, but these are enqueued:" >&2 cat "$ppfile" >&2 exit 1 fi rm -f -- $logfile } export PINENTRY_USER_DATA="--logfile=$logfile --passphrasefile=$ppfile" info "Checking key export." for KEY in D74C5F22 C40FDECF ECABF51D do progress $KEY $GPG --export $KEY >$KEY.public check_exported_public_key $KEY.public rm $KEY.public $GPG --armor --export $KEY >$KEY.public check_armored_public_key $KEY.public rm $KEY.public # test without --armor: if [ $KEY = D74C5F22 ]; then # Key D74C5F22 is protected by a passphrase. Prepare this # one. Currently, GnuPG does not ask for an export passphrase # in this case. prepare_passphrase "$usrpass1" fi $GPG --export-secret-keys $KEY >$KEY.private check_exported_private_key $KEY.private rm $KEY.private assert_passphrases_consumed # test with --armor: if [ $KEY = D74C5F22 ]; then # Key D74C5F22 is protected by a passphrase. Prepare this # one. Currently, GnuPG does not ask for an export passphrase # in this case. prepare_passphrase "$usrpass1" fi $GPG --armor --export-secret-keys $KEY >$KEY.private check_armored_private_key $KEY.private rm $KEY.private assert_passphrases_consumed done progress_end