@#$T%GQt89v4h~! v3 keys
[pgp-tools.git] / caff / pgp-fixkey
index 903b97b55c0eed850ab5bba70e1a5d2604bc371a..03d126e56046b2834d56272f43a420d75a2b1894 100755 (executable)
@@ -1,7 +1,7 @@
 #!/usr/bin/perl -w
 
-# caff  --  CA - Fire and Forget
-# $Id: caff 37 2005-02-28 23:20:15Z weasel $
+# pgp-fixkey  --  remove broken packets from keys
+# $Id$
 #
 # Copyright (c) 2004, 2005 Peter Palfrader <peter@palfrader.org>
 #
@@ -85,7 +85,7 @@ use Fcntl;
 use IO::Select;
 use GnuPG::Interface;
 
-my $REVISION = '$Rev: 37 $';
+my $REVISION = '$Rev$';
 my ($REVISION_NUMER) = $REVISION =~ /(\d+)/;
 my $VERSION = "0.0.0.$REVISION_NUMER";
 
@@ -262,10 +262,12 @@ if (scalar @KEYIDS == 0) {
                if ($type eq 'pub') {
                        $thiskey = $keyid;
                        debug("Found key $thiskey");
+               } elsif (!defined $thiskey) {
+                       next;
                } elsif ($type eq 'sig' || $type eq 'rev') {
-                       if (($keyid eq '0' x 16) && ($created == 0)) {
-                               push @KEYIDS, $thiskey if defined $thiskey;
-                               info("Adding $thiskey");
+                       if (($keyid eq '0' x 16) || ($created == 0)) {
+                               push @KEYIDS, $thiskey;
+                               info("Key $thiskey needs cleaning.");
                                $thiskey = undef;
                        };
                };
@@ -353,8 +355,8 @@ for my $keyid (@KEYIDS) {
                if (defined $line) { # only if we found a sig here - we never remove revocation packets for instance
                        debug("[sigremoval] doing line $line.");
                        my (undef, undef, undef, undef, $signer, $created, undef, undef, undef) = split /:/, $line;
-                       if ($signer eq ('0' x 16)) {
-                               debug("[sigremoval] not interested in that sig ($signer).");
+                       if (($signer eq '0' x 16) || ($created == 0)) {
+                               debug("[sigremoval] not interested in that sig ($signer, created: $created).");
                                $answer = "yes";
                        };
                } else {