From 79a0077e9b7b5c4e2c9304492f55b3fe50fb39a9 Mon Sep 17 00:00:00 2001 From: weasel Date: Tue, 3 Jul 2007 13:53:50 +0000 Subject: [PATCH] Try to handle expired keys specified in also-encrypt-to better git-svn-id: svn://svn.debian.org/pgp-tools/trunk@335 b513b33f-fedd-0310-b452-c3deb5f4c849 --- caff/caff | 23 +++++++++++++++-------- debian/changelog | 3 ++- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/caff/caff b/caff/caff index 5d6121e..9ce3a96 100755 --- a/caff/caff +++ b/caff/caff @@ -477,6 +477,9 @@ sub load_config() { unless (defined $CONFIG{'mail-template'}) { $CONFIG{'mail-template'} .= $_ foreach ; } + if ((defined $CONFIG{'also-encrypt-to'}) && ! (ref($CONFIG{'also-encrypt-to'}) eq 'ARRAY')) { + $CONFIG{'also-encrypt-to'} = [ $CONFIG{'also-encrypt-to'} ]; + }; }; sub make_gpg_fds() { @@ -766,19 +769,23 @@ sub send_mail($$$@) { my ($inputfd, $stdoutfd, $stderrfd, $statusfd, $handles) = make_gpg_fds(); $gpg->options->push_recipients( $key_id ); if (defined $CONFIG{'also-encrypt-to'}) { - if (ref($CONFIG{'also-encrypt-to'})) { - $gpg->options->push_recipients($_) - foreach @{$CONFIG{'also-encrypt-to'}}; - } else { - $gpg->options->push_recipients($CONFIG{'also-encrypt-to'}); - } + $gpg->options->push_recipients($_) foreach @{$CONFIG{'also-encrypt-to'}}; } my $pid = $gpg->encrypt(handles => $handles); my ($stdout, $stderr, $status) = readwrite_gpg($message, $inputfd, $stdoutfd, $stderrfd, $statusfd); waitpid $pid, 0; if ($stdout eq '') { - warn ("No data from gpg for encrypting mail\n"); - next; + if (($status =~ /^\[GNUPG:\] INV_RECP ([0-9]+) ([0-9A-F]+)/m) and + (defined $CONFIG{'also-encrypt-to'})) { + my $reason = $1; + my $keyid = $2; + if (grep { %_ eq $keyid } @{$CONFIG{'also-encrypt-to'}}) { + warn("Could not encrypt to $keyid, spezified in CONFIG{'also-encrypt-to'}. Try to update the key using gpg --homedir=\$HOME/caff/gnupghome --import ."); + return; + }; + }; + warn ("No data from gpg for encrypting mail. STDERR was:\n$stderr\nstatus output was:\n$status\n"); + return; }; $message = $stdout; diff --git a/debian/changelog b/debian/changelog index d55d1ef..3195e52 100644 --- a/debian/changelog +++ b/debian/changelog @@ -7,8 +7,9 @@ signing-party (0.4.11-2) UNRELEASED; urgency=low [ Peter Palfrader ] * Fix a warning message in caff when encrypting fails. + * Try to handle expired keys specified in also-encrypt-to better - -- Peter Palfrader Tue, 3 Jul 2007 15:40:34 +0200 + -- Peter Palfrader Tue, 3 Jul 2007 15:53:27 +0200 signing-party (0.4.11-1) unstable; urgency=low -- 2.39.5