X-Git-Url: http://git.sthu.org/?a=blobdiff_plain;f=gpgsigs%2Fgpgsigs;h=0caf08f68f730bcd8246b4686bb9545468df93ff;hb=d90154fd1046ab7aaf6cb3d3c316e857887a0ade;hp=6f78dc9f20bfd81b483a301b2771f4ae24114cad;hpb=17f0ce59a48ac9d6841932e7a68f11d899954a5f;p=pgp-tools.git diff --git a/gpgsigs/gpgsigs b/gpgsigs/gpgsigs old mode 100644 new mode 100755 index 6f78dc9..0caf08f --- a/gpgsigs/gpgsigs +++ b/gpgsigs/gpgsigs @@ -1,5 +1,7 @@ #!/usr/bin/perl +# $Id$ + # See the pod documentation at the end of this file for author, # copyright, and licence information. # @@ -16,7 +18,7 @@ # * better charset conversion # * pod documentation -my $VERSION = "0.2"; +my $VERSION = qq$Rev$; use strict; use warnings; @@ -25,20 +27,24 @@ use IPC::Open3; use Getopt::Long; -sub version +sub version($) { - print STDERR < - (c) 2004 Peter Palfrader + (c) 2004, 2005 Peter Palfrader (c) 2004, 2005 Christoph Berg EOF } -sub usage +sub usage($$) { - version(); - print STDERR <] [] @@ -48,7 +54,7 @@ separate multiple keyids with ',' -f convert from charset -t convert UIDs to charset in output EOF - exit shift; + exit $error; } @@ -57,9 +63,9 @@ GetOptions( f => \$fromcharset, t => \$charset, r => \$recv_keys, - help => sub { usage(0); }, - version => sub { version(); exit 0;}, -) or usage(1); + help => sub { usage(*STDOUT, 0); }, + version => sub { version(*STDOUT); exit 0;}, +) or usage(*STDERR, 1); # charset conversion @@ -127,18 +133,18 @@ sub myrecode($) { # parse options my $mykey = uc(shift @ARGV); -my $keytxt = (shift @ARGV) || usage(1); +my $keytxt = (shift @ARGV) || usage(*STDERR, 1); my $outfile = (shift @ARGV) || '-'; my @mykeys = split /,/, $mykey; map { s/^0x//i; } @mykeys; if (!@mykeys || scalar @ARGV) { - usage(1); + usage(*STDERR, 1); } if (!grep { /^([0-9A-F]{16,16}|[0-9A-F]{8,8})$/ } @mykeys) { print STDERR "Invalid keyid given\n"; - usage(1); + usage(*STDERR, 1); } -r $keytxt or die ("$keytxt does not exist\n"); @@ -176,9 +182,21 @@ while () { $uid = myrecode($1); next; } - if ( m/^sig:(?:.*?:){3,3}([0-9A-F]{8})([0-9A-F]{8}):(?:.*?:){3,3}(.*):.*?:/ ) { - $sigs->{$key}->{$uid}->{$1.$2} = $3; - $sigs->{$key}->{$uid}->{$2} = $3; + if ( m/^sig:(?:.*?:){3,3}([0-9A-F]{8})([0-9A-F]{8}):(?:.*?:){5,5}(.*?):/ ) { + my $class = $3; + if ($class eq '10x') { + $class = 'S'; + } elsif ($class eq '11x') { + $class = '1'; + } elsif ($class eq '12x') { + $class = '2'; + } elsif ($class eq '13x') { + $class = '3'; + } else { + $class = 's'; + }; + $sigs->{$key}->{$uid}->{$1.$2} = $class; + $sigs->{$key}->{$uid}->{$2} = $class; next; } if ( m/^uat:/ ) { @@ -199,10 +217,10 @@ for my $k ( keys %{$sigs} ) { # read checksums -open MD, "gpg --print-md md5 $keytxt|" or warn "can't get gpg md5"; +open MD, "gpg --print-md md5 $keytxt|" or warn "can't get gpg md5\n"; my $MD5 = ; close MD; -open MD, "gpg --print-md sha1 $keytxt|" or warn "can't get gpg sha1"; +open MD, "gpg --print-md sha1 $keytxt|" or warn "can't get gpg sha1\n"; my $SHA1 = ; close MD; @@ -218,12 +236,12 @@ sub print_tag { my ($key, $uid) = @_; if (! defined $sigs->{$key}->{$uid}) { - warn "uid '$uid' not found on key $key"; - return '(_)'; + warn "uid '$uid' not found on key $key\n"; + return '(' . (' ' x @mykeys) . ')'; } my $r = '('; foreach my $mykey (@mykeys) { - $r .= defined $sigs->{$key}->{$uid}->{$mykey} ? "S" : " "; + $r .= defined $sigs->{$key}->{$uid}->{$mykey} ? $sigs->{$key}->{$uid}->{$mykey} : ' '; } $r .= ')'; return $r; @@ -235,10 +253,10 @@ open (WRITE, '>'.$outfile) or die ("Cannot open $outfile for writing\n"); while () { $_ = myfromrecode($_); if (/^MD5 Checksum:/ && defined $MD5) { - s/_[_ ]+_/$MD5/; + s/[_[:xdigit:]][_ [:xdigit:]]+_/$MD5/; } if (/^SHA1 Checksum:/ && defined $SHA1) { - s/_[_ ]+_/$SHA1/; + s/[_[:xdigit:]][_ [:xdigit:]]+_/$SHA1/; } if ( m/^pub +(?:\d+)[DR]\/([0-9A-F]{8}) [0-9]{4}-[0-9]{2}-[0-9]{2} *(.*)/ ) { $key = $1; @@ -273,7 +291,7 @@ B - annotate list of GnuPG keys with already done signatures =head1 SYNOPSIS -B [-r] [-f I] [-t I] I F [F] +B [-r] [-f I] [-t I] II<[>B<,>IB<,>I<...>I<]>>I<]> F [F] =head1 DESCRIPTION @@ -303,7 +321,7 @@ LANG, and if all these are unset, the default is ISO-8859-1. =item I Use this keyid (8 or 16 byte) for annotation. Multiple keyids can be separated -by I<,>. +by a comma (B<,>). =item F @@ -338,7 +356,7 @@ http://pgp-tools.alioth.debian.org/ (c) 2004 Uli Martens -(c) 2004 Peter Palfrader +(c) 2004, 2005 Peter Palfrader (c) 2004, 2005 Christoph Berg