updated gpgsigs:
authormyon-guest <myon-guest@b513b33f-fedd-0310-b452-c3deb5f4c849>
Sat, 21 May 2005 20:59:32 +0000 (20:59 +0000)
committermyon-guest <myon-guest@b513b33f-fedd-0310-b452-c3deb5f4c849>
Sat, 21 May 2005 20:59:32 +0000 (20:59 +0000)
 * use the user's normal keyring to find signatures
 * support for multiple user keys
 * better charset conversion
 * pod documentation
updated the web page and README

git-svn-id: svn://svn.debian.org/pgp-tools/trunk@40 b513b33f-fedd-0310-b452-c3deb5f4c849

README
gpgsigs/Makefile [new file with mode: 0644]
gpgsigs/gpgsigs
gpgsigs/gpgsigs-lt2k5-annotated.txt [new file with mode: 0644]
gpgsigs/gpgsigs-lt2k5.txt [new file with mode: 0644]

diff --git a/README b/README
index ee1283387798fa0451b8237899493638b8145dec..7bc04a1b018cb4122fa3683c6b8de5c725792b77 100644 (file)
--- a/README
+++ b/README
@@ -1,5 +1,7 @@
 This repository is home for several projects relating to OpenPGP.
 
 This repository is home for several projects relating to OpenPGP.
 
+* caff -- CA - fire and forget
+* gpgsigs -- annotate list of GnuPG keys with already done signatures
 
 Please note that each individual project has its own license, please consult
 the licensing information in the subdirectories.
 
 Please note that each individual project has its own license, please consult
 the licensing information in the subdirectories.
diff --git a/gpgsigs/Makefile b/gpgsigs/Makefile
new file mode 100644 (file)
index 0000000..bc5569c
--- /dev/null
@@ -0,0 +1,7 @@
+all: gpgsigs.1
+
+gpgsigs.1: gpgsigs
+       pod2man $< > $@
+
+clean:
+       rm -f gpgsigs.1
index d89b1d57975b5b0141bad26c318ac1920464a05e..5e97c2bc09b976b7c3f81356b0e2afc3ba852120 100644 (file)
@@ -1,67 +1,93 @@
 #!/usr/bin/perl
 
 #!/usr/bin/perl
 
-# Copyright (c) 2004 Uli Martens <uli@youam.net>
-# Copyright (c) 2004 Peter Palfrader <peter@palfrader.org>
-# Copyright (c) 2004 Christoph Berg <cb@df7cb.de>
-#
-# All rights reserved.
-# 
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-#    notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-#    notice, this list of conditions and the following disclaimer in the
-#    documentation and/or other materials provided with the distribution.
-# 3. The name of the author may not be used to endorse or promote products
-#    derived from this software without specific prior written permission.
-# 
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-#
+# See the pod documentation at the end of this file for author,
+# copyright, and licence information.
 #
 # Depends: 
 #         libintl-perl (Locale::Recode)
 #      OR libtext-iconv-perl (Text::Iconv),
 #      OR the "recode" binary
 #
 # Depends: 
 #         libintl-perl (Locale::Recode)
 #      OR libtext-iconv-perl (Text::Iconv),
 #      OR the "recode" binary
+#
+# Changelog:
+# 0.1
+# 0.2 2005-05-14 cb:
+#   * use the user's normal keyring to find signatures
+#   * support for multiple user keys
+#   * better charset conversion
+#   * pod documentation
 
 
+my $VERSION = "0.2";
 
 use strict;
 use warnings;
 
 use strict;
 use warnings;
-use File::Temp qw{tempdir};
 use English;
 use IPC::Open3;
 use English;
 use IPC::Open3;
+use Getopt::Long;
+
+
+sub version
+{
+       print STDERR <<EOF;
+gpgsigs $VERSION - http://pgp-tools.alioth.debian.org/
+  (c) 2004 Uli Martens <uli\@youam.net>
+  (c) 2004 Peter Palfrader <peter\@palfrader.org>
+  (c) 2004, 2005 Christoph Berg <cb\@df7cb.de>
+EOF
+}
+
+sub usage
+{
+       version();
+       print STDERR <<EOF;
+
+Usage: $PROGRAM_NAME [-r] [-t <charset>] <keyid> <keytxt> [<outfile>]
+
+keyid is a long or short keyid (e.g. DE7AAF6E94C09C7F or 94C09C7F)
+separate multiple keyids with ','
+-r            call gpg --recv-keys before proceeding
+-f <charset>  convert <keytxt> from charset
+-t <charset>  convert UIDs to charset in output
+EOF
+       exit shift;
+}
+
 
 
-my $r;
-my $i;
+my ($fromcharset, $charset, $recv_keys);
+GetOptions(
+       f => \$fromcharset,
+       t => \$charset,
+       r => \$recv_keys,
+       help => sub { usage(0); },
+       version => sub { version(); exit 0;},
+) or usage(1);
+
+
+# charset conversion
+$fromcharset ||= "ISO-8859-1";
+$charset ||= $ENV{LC_ALL} || $ENV{LC_CTYPE} || $ENV{LANG} || "ISO-8859-1";
+$charset = "ISO-8859-1" unless $charset =~ /[\.-]/;
+$charset =~ s/.*\.//;
+$charset =~ s/@.*//;
+my ($rf, $rt, $if, $it);
 if (eval "require Locale::Recode") {
 if (eval "require Locale::Recode") {
-       $r = Locale::Recode->new (from => 'UTF-8',
-                             to   => 'ISO-8859-1');
+       $rf = Locale::Recode->new (from => $fromcharset, to => $charset) if $fromcharset;
+       $rt = Locale::Recode->new (from => 'UTF-8', to => $charset);
 } elsif (eval "require Text::Iconv") {
 } elsif (eval "require Text::Iconv") {
-       $i = Text::Iconv->new("UTF-8", "ISO-8859-1");
+       $if = Text::Iconv->new($fromcharset, $charset) if $fromcharset;
+       $it = Text::Iconv->new("UTF-8", $charset);
 }
 
 }
 
-sub myrecode($) {
+sub myfromrecode($) {
        my ($text) = @_;
        my ($text) = @_;
-       if (defined $r) {
+       if (defined $rf) {
                my $orig = $text;
                my $orig = $text;
-               $r->recode($text);
-#printf STDERR "perl:  $orig to $text\n";
+               $rf->recode($text);
                return $text;
                return $text;
-       } elsif (defined $i) {
-               $text = $i->convert($text);
+       } elsif (defined $if) {
+               return $if->convert($text);
        } else {
        } else {
-               my $pid = open3(\*WTRFH, \*RDRFH, \*ERRFH, 'recode', 'utf8..iso8859-1');
+               my $pid = open3(\*WTRFH, \*RDRFH, \*ERRFH, 'recode', "$fromcharset..$charset");
                print WTRFH $text;
                close WTRFH;
                local $/ = undef;
                print WTRFH $text;
                close WTRFH;
                local $/ = undef;
@@ -69,58 +95,83 @@ sub myrecode($) {
                close RDRFH;
                close ERRFH;
                waitpid $pid, 0;
                close RDRFH;
                close ERRFH;
                waitpid $pid, 0;
-
                die ("'recode' failed, is it installed?\n") unless defined $result;
                die ("'recode' failed, is it installed?\n") unless defined $result;
-#printf STDERR "manual:  $text to $result\n";
                return $result;
                return $result;
-       };
+       }
 }
 
 }
 
+sub myrecode($) {
+       my ($text) = @_;
+       if (defined $rt) {
+               my $orig = $text;
+               $rt->recode($text);
+               return $text;
+       } elsif (defined $it) {
+               return $it->convert($text);
+       } else {
+               my $pid = open3(\*WTRFH, \*RDRFH, \*ERRFH, 'recode', "utf8..$charset");
+               print WTRFH $text;
+               close WTRFH;
+               local $/ = undef;
+               my $result = <RDRFH>;
+               close RDRFH;
+               close ERRFH;
+               waitpid $pid, 0;
+               die ("'recode' failed, is it installed?\n") unless defined $result;
+               return $result;
+       }
+}
 
 
-my $EXPECTED_MD5 = '90 43 B8 1B';
 
 
+# parse options
 my $mykey = uc(shift @ARGV);
 my $mykey = uc(shift @ARGV);
-my $keyring = shift @ARGV;
-my $keytxt = shift @ARGV;
-my $outfile = shift @ARGV;
-
-$keyring = 'ksp-lt2k4.asc' unless defined $keyring;
-$keytxt = 'ksp-lt2k4.txt' unless defined $keytxt;
-$outfile = 'ksp-lt2k4-annotated.txt' unless defined $outfile;
-
-if (!defined $mykey || scalar @ARGV || ($mykey !~ /^[0-9A-F]{16,16}$/  && $mykey !~ /^[0-9A-F]{8,8}$/)) {
-       print STDERR "Usage: $PROGRAM_NAME keyid [<keyring> [<keytxt> [<outfile]]]\n";
-       print STDERR "\n";
-       print STDERR "keyid is a long or short keyid (e.g. DE7AAF6E94C09C7F or 94C09C7F\n";
-       exit 1;
+my $keytxt = (shift @ARGV) || usage(1);
+my $outfile = (shift @ARGV) || '-';
+
+my @mykeys = split /,/, $mykey;
+map { s/^0x//i; } @mykeys;
+
+if (!@mykeys || scalar @ARGV) {
+       usage(1);
+}
+if (!grep { /^([0-9A-F]{16,16}|[0-9A-F]{8,8})$/ } @mykeys) {
+       print STDERR "Invalid keyid given\n";
+       usage(1);
 }
 
 }
 
--r $keyring or die ("$keyring does not exist\n");
 -r $keytxt or die ("$keytxt does not exist\n");
 
 
 -r $keytxt or die ("$keytxt does not exist\n");
 
 
-my $sigs;
+# get list of keys in file
+my @keys;
+open (TXT, $keytxt) or die ("Cannot open $keytxt\n");
+while (<TXT>) {
+       if ( m/^pub  +(?:\d+)[DR]\/([0-9A-F]{8}) [0-9]{4}-[0-9]{2}-[0-9]{2} *(.*)/ ) {
+               push @keys, $1;
+       }
+}
+close TXT;
 
 
 
 
-my $tempdir = tempdir( "gpgsigs-XXXXX", DIR => '/tmp/', CLEANUP => 1);
-$ENV{'GNUPGHOME'} = $tempdir;
-print STDERR "Creating a temporary gnupghome and importing keys\n";
-system(qw{gpg --import}, $keyring);
+# get all known signatures
+if ($recv_keys) {
+       print STDERR "Requesting keys from keyserver\n";
+       system "gpg --recv-keys @keys";
+}
 
 
-print STDERR "Running --list-sigs, this will take a while\n";
-open SIGS, "gpg --fixed-list-mode --with-colons --list-sigs 2>/dev/null |"
+print STDERR "Running --list-sigs, this will take a while ";
+open SIGS, "gpg --fixed-list-mode --with-colons --list-sigs @keys 2>/dev/null |"
        or die "can't get gpg listing";
 
        or die "can't get gpg listing";
 
-my $key;
-my $uid;
+my ($key, $uid, $sigs);
 while (<SIGS>) {
        if ( m/^pub:(?:.*?:){3,3}([0-9A-F]{16,16}):/ ) {
                $key = $1;
 while (<SIGS>) {
        if ( m/^pub:(?:.*?:){3,3}([0-9A-F]{16,16}):/ ) {
                $key = $1;
+               print STDERR ".";
                next;
        }
                next;
        }
-       if ( m/^uid:(?:.*?:){8,8}(.*):/ ) {
-               $uid = $1;
-               $uid = myrecode($uid);
+       if ( m/^uid:(?:.*?:){8,8}(.*):/s ) {
+               $uid = myrecode($1);
                next;
        }
        if ( m/^sig:(?:.*?:){3,3}([0-9A-F]{8})([0-9A-F]{8}):(?:.*?:){3,3}(.*):.*?:/ ) {
                next;
        }
        if ( m/^sig:(?:.*?:){3,3}([0-9A-F]{8})([0-9A-F]{8}):(?:.*?:){3,3}(.*):.*?:/ ) {
@@ -136,6 +187,7 @@ while (<SIGS>) {
        warn "unknown value: '$_', key: ".(defined $key ? $key :'none')."\n";
 }      
 close SIGS;
        warn "unknown value: '$_', key: ".(defined $key ? $key :'none')."\n";
 }      
 close SIGS;
+print STDERR "\n";
 
 for my $k ( keys %{$sigs} ) {
        if ( $k =~ m/^[0-9A-F]{8}([0-9A-F]{8})$/ ) {
 
 for my $k ( keys %{$sigs} ) {
        if ( $k =~ m/^[0-9A-F]{8}([0-9A-F]{8})$/ ) {
@@ -144,6 +196,7 @@ for my $k ( keys %{$sigs} ) {
 }
 
 
 }
 
 
+# read checksums
 open MD, "gpg --print-md md5 $keytxt|" or warn "can't get gpg md5";
 my $MD5 = <MD>;
 close MD;
 open MD, "gpg --print-md md5 $keytxt|" or warn "can't get gpg md5";
 my $MD5 = <MD>;
 close MD;
@@ -157,50 +210,158 @@ my $metatxt = quotemeta($keytxt);
 $MD5 =~ s/^$metatxt:\s*//;
 $SHA1 =~ s/^$metatxt:\s*//;
 
 $MD5 =~ s/^$metatxt:\s*//;
 $SHA1 =~ s/^$metatxt:\s*//;
 
-if (defined $MD5) {
-       warn ("md5 of $keytxt does not begin with $EXPECTED_MD5") unless ($MD5 =~ /^$EXPECTED_MD5/);
-};
+
+# write out result
+sub print_tag
+{
+       my ($key, $uid) = @_;
+       if (! defined $sigs->{$key}->{$uid}) {
+               warn "uid '$uid' not found on key $key";
+               return;
+       }
+       my $r = '(';
+       foreach my $mykey (@mykeys) {
+               $r .= defined $sigs->{$key}->{$uid}->{$mykey} ? "S" : " ";
+       }
+       $r .= ')';
+       return $r;
+}
 
 print STDERR "Annotating $keytxt, writing into $outfile\n";
 open (TXT, $keytxt) or die ("Cannot open $keytxt\n");
 open (WRITE, '>'.$outfile) or die ("Cannot open $outfile for writing\n");
 while (<TXT>) {
 
 print STDERR "Annotating $keytxt, writing into $outfile\n";
 open (TXT, $keytxt) or die ("Cannot open $keytxt\n");
 open (WRITE, '>'.$outfile) or die ("Cannot open $outfile for writing\n");
 while (<TXT>) {
-       if (/^MD5 Checksum:  __ __ __ __ __ __ __ __    __ __ __ __ __ __ __ __/ && defined $MD5) {
-               print WRITE "MD5 Checksum:  $MD5     [ ]\n";
+       $_ = myfromrecode($_);
+       if (/^MD5 Checksum:/ && defined $MD5) {
+               s/_[_ ]+_/$MD5/;
        }
        }
-       elsif (/^SHA1 Checksum: ____ ____ ____ ____ ____    ____ ____ ____ ____ ____/ && defined $SHA1) {
-               print WRITE "SHA1 Checksum: $SHA1   [ ]\n";
-       } else {
-               print WRITE;
-       };
-       if ( m/^([0-9]{3})  \[ \] Fingerprint OK        \[ \] ID OK$/ ) {
-               $_ = <TXT>;
-               if ( m/^pub  ( 768|1024|2048|4096)[DR]\/([0-9A-F]{8}) [0-9]{4}-[0-9]{2}-[0-9]{2} (.*)/ ) {
-                       my $l2 = $_;
-                       my $uid = $3;
-                       my $keyid = $2;
-                       if ( ! defined $sigs->{$keyid}->{$uid} ) {
-                               warn "uid '$uid' not found on key $keyid";
-                       };
-                       print WRITE ( defined $sigs->{$keyid}->{$uid}->{$mykey} ? "(S)" : "( )" );
-                       print WRITE "  $l2";
-                       $_ = <TXT>;
-                       print WRITE $_;
-                       while (<TXT>) {
-                               my $l3 = $_;
-                               if ( m/^uid     (.*)$/ ) {
-                                       print WRITE defined $sigs->{$keyid}->{$1}
-                                               ? ( defined $sigs->{$keyid}->{$1}->{$mykey} ? "(S)" : "( )" )
-                                               : "   ";
-                                       print WRITE "  $l3";
-                               } else {
-                                       print WRITE "$l3";
-                                       last;
-                               }
-                       }
-               } else {
-                       print WRITE "$_";
+       if (/^SHA1 Checksum:/ && defined $SHA1) {
+               s/_[_ ]+_/$SHA1/;
+       }
+       if ( m/^pub  +(?:\d+)[DR]\/([0-9A-F]{8}) [0-9]{4}-[0-9]{2}-[0-9]{2} *(.*)/ ) {
+               $key = $1;
+               $uid = $2;
+               if ($uid) { # in gpg 1.2, the first uid is here
+                       print WRITE print_tag($key, $uid) . " $_";
+                       next;
                }
        }
                }
        }
+       if ( m/^uid +(.*)$/ ) {
+               $uid = $1;
+               print WRITE print_tag($key, $uid) . " $_";
+               next;
+       }
+       print WRITE;
+}
+
+print WRITE "Legend:\n";
+foreach my $i (0 .. @mykeys - 1) {
+       print WRITE '('. ' 'x$i . 'S' . ' 'x(@mykeys-$i-1) . ") signed with $mykeys[$i]\n";
 }
 }
-close TXT
+close TXT;
+
+__END__
+
+=head1 NAME
+
+B<gpgsigs> - annotate list of GnuPG keys with already done signatures
+
+=head1 SYNOPSIS
+
+B<gpgsigs> [-r] [-f I<charset>] [-t I<charset>] I<keyid> F<keytxt> [F<outfile>]
+
+=head1 DESCRIPTION
+
+B<gpgsigs> was written to assist the user in signing keys during a keysigning
+party. It takes as input a file containing keys in C<gpg --list-keys> format
+and prepends every line with a tag indicating if the user has already signed
+that uid. When the file contains C<MD5 Checksum:> or C<SHA1 Checksum:> lines
+and placeholders (C<__ __>), the checksum is inserted.
+
+=head1 OPTIONS
+
+=over
+
+=item -r
+
+Call I<gpg --recv-keys> before creating the output.
+
+=item -f I<charset>
+
+Convert F<keytxt> from I<charset>. The default is ISO-8859-1.
+
+=item -t I<charset>
+
+Convert UIDs to I<charset>. The default is derived from LC_ALL, LC_CTYPE, and
+LANG, and if all these are unset, the default is ISO-8859-1.
+
+=item I<keyid>
+
+Use this keyid (8 or 16 byte) for annotation. Multiple keyids can be separated
+by I<,>.
+
+=item F<keytxt>
+
+Read input from F<keytxt>.
+
+=item F<outfile>
+
+Write output to F<outfile>. Default is stdout.
+
+=back
+
+=head1 EXAMPLES
+
+The following key signing parties are using B<gpgsigs>:
+
+http://www.palfrader.org/ksp-lt2k4.html
+
+http://www.palfrader.org/ksp-lt2k5.html
+
+=head1 BUGS
+
+B<GnuPG> is known to change its output format quite often. This version has
+been tested with gpg 1.2.5 and gpg 1.4.1. YMMV.
+
+=head1 SEE ALSO
+
+gpg(1), caff(1).
+
+http://pgp-tools.alioth.debian.org/
+
+=head1 AUTHORS AND COPYRIGHT
+
+(c) 2004 Uli Martens <uli@youam.net>
+
+(c) 2004 Peter Palfrader <peter@palfrader.org>
+
+(c) 2004, 2005 Christoph Berg <cb@df7cb.de>
+
+=head1 LICENSE
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+3. The name of the author may not be used to endorse or promote products
+derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/gpgsigs/gpgsigs-lt2k5-annotated.txt b/gpgsigs/gpgsigs-lt2k5-annotated.txt
new file mode 100644 (file)
index 0000000..8fac952
--- /dev/null
@@ -0,0 +1,103 @@
+Saturday, June 25th, 2005;  14:00                                   Room R 2.05
+                                          Peter Palfrader <peter@palfrader.org>
+
+
+
+
+                ########  ########     ###    ######## ########
+                ##     ## ##     ##   ## ##   ##          ##
+                ##     ## ##     ##  ##   ##  ##          ##
+                ##     ## ########  ##     ## ######      ##
+                ##     ## ##   ##   ######### ##          ##
+                ##     ## ##    ##  ##     ## ##          ##
+                ########  ##     ## ##     ## ##          ##
+
+
+
+
+
+             L I N U X T A G   K E Y S I G N I N G P A R T Y
+
+                     List of Participants  (v 0.0)
+
+
+Here's what you have to do with this file:
+(1) Print this file to paper.
+(2) Compute this file's MD5 checksum and optionally also its SHA1 checksum.
+   gpg --print-md md5 ksp-lt2k5.txt   (or use md5sum)
+   gpg --print-md sha1 ksp-lt2k5.txt  (or use sha1sum)
+(3) fill in the hash values on the printout.
+(4) Bring the printout, a pen, and proof of identity to the keysigningparty (and be on time!).
+
+MD5 Checksum:  37 90 98 40 22 7D 68 90  1E B1 1C 1B FF 7C 0A 49           [ ]
+
+
+
+SHA1 Checksum: 4A01 4EC9 1043 8C39 7F5F  4CA8 FC51 AC99 16F8 2FE9         [ ]
+
+
+
+
+001  [ ] Fingerprint OK        [ ] ID OK
+pub   1024D/CD15A883 2002-09-28
+      Key fingerprint = 02DF 08F5 FD35 6BF2 7F5F  7B83 8921 B5DC CD15 A883
+(S ) uid   Alexander Schmehl (privat) <alexander@schmehl.info>
+(S ) uid   Alexander Schmehl (private) <tolimar@schmehl.info>
+(  ) uid   Alexander Schmehl (knOEpix) <alexander@knoepix.org>
+(  ) uid   Alexander Schmehl (Skolelinux) <alexander@skolelinux.de>
+(S ) uid   Alexander Schmehl (university) <schmehl@cs.uni-frankfurt.de>
+(S ) uid   Alexander Schmehl (university) <schmehl@informatik.uni-frankfurt.de>
+(S ) uid   Alexander Schmehl (unused, but read) <alexander.schmehl@schlundmail.de>
+
+002  [ ] Fingerprint OK        [ ] ID OK
+pub   1024D/00D8CD16 2002-09-28
+      Key fingerprint = 46CD D292 0692 D5A2 8F81  2E48 0717 74E0 00D8 CD16
+(SS) uid   Alexander Schmehl (university) <schmehl@cs.uni-frankfurt.de>
+(SS) uid   Alexander Schmehl (privat) <alexander@schmehl.info>
+(SS) uid   Alexander Schmehl (university) <schmehl@informatik.uni-frankfurt.de>
+
+003  [ ] Fingerprint OK        [ ] ID OK
+pub   1024R/6D8ABE71 1998-07-25
+      Key fingerprint = 09 9D 09 8F 89 52 24 12  FE C2 31 9D FE F8 5C 03
+(SS) uid   Christoph Berg <cb@df7cb.de>
+(SS) uid   Christoph Berg <cb@cs.uni-sb.de>
+
+004  [ ] Fingerprint OK        [ ] ID OK
+pub   1024D/58510B5A 2004-04-17
+      Key fingerprint = D224 C8B0 7E63 A694 6DA3  2E07 C5AF 774A 5851 0B5A
+(SS) uid   Christoph Berg <cb@df7cb.de>
+
+005  [ ] Fingerprint OK        [ ] ID OK
+pub   1024D/514B3E7C 2003-07-19
+      Key fingerprint = 34F8 7997 8BC1 03F0 9C43  F3D7 B375 3E4D 514B 3E7C
+(SS) uid   Florian Ernst <florian@uni-hd.de>
+(  ) uid   Florian Ernst <florian@debian.org>
+(SS) uid   Florian Ernst <florian_ernst@gmx.net>
+(SS) uid   Florian Ernst <fernst@ix.urz.uni-heidelberg.de>
+
+006  [ ] Fingerprint OK        [ ] ID OK
+pub   1024D/7E7B8AC9 2002-05-11
+      Key fingerprint = DF7D EB2F DB28 FD2B A9FB  FA6D 715E D6A0 7E7B 8AC9
+(SS) uid   Joerg Jaspert <joerg@debian.org>
+(SS) uid   Joerg Jaspert <joerg@ganneff.de>
+(SS) uid   Joerg Jaspert <joerg@german.ath.cx>
+(SS) uid   Joerg Jaspert <joerg@goliathbbs.dnsalias.net>
+
+007  [ ] Fingerprint OK        [ ] ID OK
+pub   1024D/94C09C7F 1999-11-10
+      Key fingerprint = 5B00 C96D 5D54 AEE1 206B  AF84 DE7A AF6E 94C0 9C7F
+(  ) uid   Peter Palfrader
+(SS) uid   Weasel <weasel@netalive.org>
+(SS) uid   Peter Palfrader <weasel@debian.org>
+(SS) uid   Peter Palfrader <peter@palfrader.org>
+(SS) uid   Peter Palfrader <ppalfrad@cosy.sbg.ac.at>
+
+008  [ ] Fingerprint OK        [ ] ID OK
+pub   4096R/C82E0039 2003-03-24
+      Key fingerprint = 25FC 1614 B8F8 7B52 FF2F  99B9 62AF 4031 C82E 0039
+(  ) uid   Peter Palfrader
+(  ) uid   Peter Palfrader <peter@palfrader.org>
+
+Legend:
+(S ) signed with 6D8ABE71
+( S) signed with 58510B5A
diff --git a/gpgsigs/gpgsigs-lt2k5.txt b/gpgsigs/gpgsigs-lt2k5.txt
new file mode 100644 (file)
index 0000000..1bd8906
--- /dev/null
@@ -0,0 +1,100 @@
+Saturday, June 25th, 2005;  14:00                                   Room R 2.05
+                                          Peter Palfrader <peter@palfrader.org>
+
+
+
+
+                ########  ########     ###    ######## ########
+                ##     ## ##     ##   ## ##   ##          ##
+                ##     ## ##     ##  ##   ##  ##          ##
+                ##     ## ########  ##     ## ######      ##
+                ##     ## ##   ##   ######### ##          ##
+                ##     ## ##    ##  ##     ## ##          ##
+                ########  ##     ## ##     ## ##          ##
+
+
+
+
+
+             L I N U X T A G   K E Y S I G N I N G P A R T Y
+
+                     List of Participants  (v 0.0)
+
+
+Here's what you have to do with this file:
+(1) Print this file to paper.
+(2) Compute this file's MD5 checksum and optionally also its SHA1 checksum.
+   gpg --print-md md5 ksp-lt2k5.txt   (or use md5sum)
+   gpg --print-md sha1 ksp-lt2k5.txt  (or use sha1sum)
+(3) fill in the hash values on the printout.
+(4) Bring the printout, a pen, and proof of identity to the keysigningparty (and be on time!).
+
+MD5 Checksum:  __ __ __ __ __ __ __ __    __ __ __ __ __ __ __ __           [ ]
+
+
+
+SHA1 Checksum: ____ ____ ____ ____ ____    ____ ____ ____ ____ ____         [ ]
+
+
+
+
+001  [ ] Fingerprint OK        [ ] ID OK
+pub   1024D/CD15A883 2002-09-28
+      Key fingerprint = 02DF 08F5 FD35 6BF2 7F5F  7B83 8921 B5DC CD15 A883
+uid   Alexander Schmehl (privat) <alexander@schmehl.info>
+uid   Alexander Schmehl (private) <tolimar@schmehl.info>
+uid   Alexander Schmehl (knOEpix) <alexander@knoepix.org>
+uid   Alexander Schmehl (Skolelinux) <alexander@skolelinux.de>
+uid   Alexander Schmehl (university) <schmehl@cs.uni-frankfurt.de>
+uid   Alexander Schmehl (university) <schmehl@informatik.uni-frankfurt.de>
+uid   Alexander Schmehl (unused, but read) <alexander.schmehl@schlundmail.de>
+
+002  [ ] Fingerprint OK        [ ] ID OK
+pub   1024D/00D8CD16 2002-09-28
+      Key fingerprint = 46CD D292 0692 D5A2 8F81  2E48 0717 74E0 00D8 CD16
+uid   Alexander Schmehl (university) <schmehl@cs.uni-frankfurt.de>
+uid   Alexander Schmehl (privat) <alexander@schmehl.info>
+uid   Alexander Schmehl (university) <schmehl@informatik.uni-frankfurt.de>
+
+003  [ ] Fingerprint OK        [ ] ID OK
+pub   1024R/6D8ABE71 1998-07-25
+      Key fingerprint = 09 9D 09 8F 89 52 24 12  FE C2 31 9D FE F8 5C 03
+uid   Christoph Berg <cb@df7cb.de>
+uid   Christoph Berg <cb@cs.uni-sb.de>
+
+004  [ ] Fingerprint OK        [ ] ID OK
+pub   1024D/58510B5A 2004-04-17
+      Key fingerprint = D224 C8B0 7E63 A694 6DA3  2E07 C5AF 774A 5851 0B5A
+uid   Christoph Berg <cb@df7cb.de>
+
+005  [ ] Fingerprint OK        [ ] ID OK
+pub   1024D/514B3E7C 2003-07-19
+      Key fingerprint = 34F8 7997 8BC1 03F0 9C43  F3D7 B375 3E4D 514B 3E7C
+uid   Florian Ernst <florian@uni-hd.de>
+uid   Florian Ernst <florian@debian.org>
+uid   Florian Ernst <florian_ernst@gmx.net>
+uid   Florian Ernst <fernst@ix.urz.uni-heidelberg.de>
+
+006  [ ] Fingerprint OK        [ ] ID OK
+pub   1024D/7E7B8AC9 2002-05-11
+      Key fingerprint = DF7D EB2F DB28 FD2B A9FB  FA6D 715E D6A0 7E7B 8AC9
+uid   Joerg Jaspert <joerg@debian.org>
+uid   Joerg Jaspert <joerg@ganneff.de>
+uid   Joerg Jaspert <joerg@german.ath.cx>
+uid   Joerg Jaspert <joerg@goliathbbs.dnsalias.net>
+
+007  [ ] Fingerprint OK        [ ] ID OK
+pub   1024D/94C09C7F 1999-11-10
+      Key fingerprint = 5B00 C96D 5D54 AEE1 206B  AF84 DE7A AF6E 94C0 9C7F
+uid   Peter Palfrader
+uid   Weasel <weasel@netalive.org>
+uid   Peter Palfrader <weasel@debian.org>
+uid   Peter Palfrader <peter@palfrader.org>
+uid   Peter Palfrader <ppalfrad@cosy.sbg.ac.at>
+
+008  [ ] Fingerprint OK        [ ] ID OK
+pub   4096R/C82E0039 2003-03-24
+      Key fingerprint = 25FC 1614 B8F8 7B52 FF2F  99B9 62AF 4031 C82E 0039
+uid   Peter Palfrader
+uid   Peter Palfrader <peter@palfrader.org>
+