reword
[pgp-tools.git] / caff / caff
index 58468205e937ff3ec68d8714e421cebf8fbbef75..f3cb06338c22cc70f5e87d4209c26f4e1985b845 100755 (executable)
--- a/caff/caff
+++ b/caff/caff
@@ -247,7 +247,7 @@ sub readwrite_gpg($$$$$%) {
 
        my ($stdout, $stderr, $status) = ("", "", "");
        my $exitwhenstatusmatches = $options{'exitwhenstatusmatches'};
-       trace("doign stuff until we find $exitwhenstatusmatches") if defined $exitwhenstatusmatches;
+       trace("doing stuff until we find $exitwhenstatusmatches") if defined $exitwhenstatusmatches;
 
        my $readwrote_stuff_this_time = 0;
        my $do_not_wait_on_select = 0;
@@ -463,7 +463,7 @@ $CONFIG{'owner'}
 
        $message_entity->head->add("Subject", "Your signed PGP key 0x$key_id");
        $message_entity->head->add("To", $address);
-       $message_entity->head->add("From", $CONFIG{'owner'}.' <'.$CONFIG{'email'}.'>');
+       $message_entity->head->add("From", '"'.$CONFIG{'owner'}.'" <'.$CONFIG{'email'}.'>');
        $message_entity->head->add("User-Agent", $USER_AGENT);
        $message_entity->send();
        $message_entity->stringify();
@@ -518,21 +518,34 @@ if ($CONFIG{'no-download'}) {
        $gpg->options->meta_interactive( 0 );
        my ($inputfd, $stdoutfd, $stderrfd, $statusfd, $handles) = make_gpg_fds();
        
-       my $pid = $gpg->recv_keys(handles => $handles, command_args => [ @KEYIDS ]);
-       my ($stdout, $stderr, $status) = readwrite_gpg('', $inputfd, $stdoutfd, $stderrfd, $statusfd);
-       waitpid $pid, 0;
+       my @local_keyids = @KEYIDS;
+       for my $keyid (@local_keyids) {
+               info ("fetching $keyid...");
+               my $pid = $gpg->recv_keys(handles => $handles, command_args => [ $keyid ]);
+               my ($stdout, $stderr, $status) = readwrite_gpg('', $inputfd, $stdoutfd, $stderrfd, $statusfd);
+               waitpid $pid, 0;
 
 # [GNUPG:] IMPORT_OK 0 5B00C96D5D54AEE1206BAF84DE7AAF6E94C09C7F
 # [GNUPG:] NODATA 1
 # [GNUPG:] NODATA 1
 # [GNUPG:] IMPORT_OK 0 25FC1614B8F87B52FF2F99B962AF4031C82E0039
-       for my $line (split /\n/, $status) {
-               if ($line =~ /^\[GNUPG:\] IMPORT_OK/) {
-                       push @keyids_ok, shift @KEYIDS;
-               } elsif ($line =~ /^\[GNUPG:\] NODATA/) {
+               my $handled = 0;
+               for my $line (split /\n/, $status) {
+                       if ($line =~ /^\[GNUPG:\] IMPORT_OK/) {
+                               push @keyids_ok, shift @KEYIDS;
+                               $handled = 1;
+                               last;
+                       } elsif ($line =~ /^\[GNUPG:\] NODATA/) {
+                               push @keyids_failed, shift @KEYIDS;
+                               $handled = 1;
+                               last;
+                       };
+               };
+               unless ($handled) {
+                       notice ("Huh, what's up with $keyid?");
                        push @keyids_failed, shift @KEYIDS;
                };
-       }
+       };
        die ("Still keys in \@KEYIDS.  This should not happen.") if scalar @KEYIDS;
        notice ("Import failed for: ". (join ' ', @keyids_failed).".") if scalar @keyids_failed;
 };
@@ -541,14 +554,15 @@ if ($CONFIG{'no-download'}) {
 # sign keys
 ###########
 unless ($CONFIG{'no-sign'}) {
-       info("Sign the following keys according to your policy...");
+       info("Sign the following keys according to your policy, then exit gpg with 'save' after signing each key");
        for my $keyid (@keyids_ok) {
                my @command;
                push @command, $CONFIG{'gpg-sign'};
                push @command, '--local-user', $USER if (defined $USER);
                push @command, "--homedir=$GNUPGHOME";
                push @command, '--secret-keyring', $CONFIG{'secret-keyring'};
-               push @command, '--sign-key', $keyid;
+               push @command, '--edit', $keyid;
+               push @command, 'sign';
                print join(' ', @command),"\n";
                system (@command);
        };