diff -pur gpgmailsign-original/GnuPG/Wrapper.pm gpgmailsign-patched/GnuPG/Wrapper.pm
--- gpgmailsign-original/GnuPG/Wrapper.pm	2004-07-06 01:03:33.000000000 +0200
+++ gpgmailsign-patched/GnuPG/Wrapper.pm	2005-06-27 15:31:06.000000000 +0200
@@ -29,7 +29,7 @@ sub normalize_keyid {
 		next if /^tru:/; # TODO: what's that? trust?
 		next if /^sub:/;
 		#pub:q:1024:17:0596CD7FCA9EADCF:1062764361:::-:::scESC:
-		if(/^pub:[-qmfu]:\d{3,}:\d+:([0-9A-F]+):\d+:\d*::[-qmfu]:::[escESC]+:$/) {
+		if(/^pub:[-qmfu]:\d{3,}:\d+:([0-9A-F]+):\d+:\d*::[-qmfu]:::[escaESCA]+:$/) {
 			$self->{keyid} = $1;
 			last;
 		}
@@ -79,12 +79,12 @@ sub get_uid_list {
 		next if /^tru:/; # TODO: what's that? trust?
 		next if /^sub:/;
 		#pub:q:1024:17:0596CD7FCA9EADCF:1062764361:::-:::scESC:
-		if(/^pub:[-qmfu]:\d{3,}:\d+:([0-9A-F]+):\d+:\d*::[-qmfu]:::[escESC]+:$/) {
+		if(/^pub:[-qmfu]:\d{3,}:\d+:([0-9A-F]+):\d+:\d*::[-qmfu]:::[escaESCA]+:$/) {
 			$self->{keyid} = $1;
-		} elsif(/^uid:[-qmfu]::::::::(.+):$/) {
+		} elsif(/^uid:[-qmfu]::::[0-9]*?::[0-9A-F]*?::(.+):$/) {
 			print "$1\n" if $self->{verbose};
 			$self->{uid_list}[++$uid_count] = $1;
-		} elsif(/^uid:[r]::::::::(.+):$/) {
+		} elsif(/^uid:[r]::::::[0-9A-F]*?::(.+):$/) {
 			$self->{uid_list}[++$uid_count] = undef; # uid is revoked
 		} elsif(/^uat:[-qmfu]::::::::(.+):$/) {
 			$self->{uid_list}[++$uid_count] = undef; # subkey (to be removed)
@@ -206,7 +206,7 @@ sub right_uid_selected {
 		if(/^uat:/) {
 			die "subkey left over";
 		}
-		if(/^uid:[-qmfu]::::::::(.+):$/) {
+		if(/^uid:[-qmfu]::::[0-9]*?::[0-9A-F]*?::(.+):$/) {
 			die "wrong uid ($1) cut out, expected $self->{uid}" if $1 ne $self->{uid};
 			$right = 1;
 		} else {
diff -pur gpgmailsign-original/purgesigs gpgmailsign-patched/purgesigs
--- gpgmailsign-original/purgesigs	2004-07-06 01:03:33.000000000 +0200
+++ gpgmailsign-patched/purgesigs	2005-06-27 15:30:22.000000000 +0200
@@ -47,12 +47,12 @@ while (<G>) {
 	next if /^tru:/; # TODO: what's that? trust?
 	next if /^sub:/;
 	#pub:q:1024:17:0596CD7FCA9EADCF:1062764361:::-:::scESC:
-	if(/^pub:[-qmfu]:\d{3,}:\d+:[0-9A-F]+:\d+:\d*::[-qmfu]:::[escESC]+:$/) {
+	if(/^pub:[-qmfu]:\d{3,}:\d+:[0-9A-F]+:\d+:\d*::[-qmfu]:::[escaESCA]+:$/) {
 		$found = 1;
-	} elsif(/^uid:[-qmfu]::::::::(.+):$/) {
+	} elsif(/^uid:[-qmfu]::::[0-9]*?::[0-9A-F]*?::(.+):$/) {
 		$uid_count++;
 		$uid_string = $1 if $uid_count == $uid_nr;
-	} elsif(/^(uid|uat):[-qmfur]::::::::(.+):$/) {
+	} elsif(/^(uid|uat):[-qmfur]::::[0-9]*?::[0-9A-F]*?::(.+):$/) {
 		$uid_count++;
 	} else {
 		die "unknown line format: $_";
@@ -79,13 +79,13 @@ while (<G>) {
 	next if /^tru:/; # TODO: what's that? trust?
 	next if /^sub:/;
 	#pub:q:1024:17:0596CD7FCA9EADCF:1062764361:::-:::scESC:
-	if(/^pub:[-qmfu]:\d{3,}:\d+:[0-9A-F]+:\d+:\d*::[-qmfu]:::[escESC]+:$/) {
+	if(/^pub:[-qmfu]:\d{3,}:\d+:[0-9A-F]+:\d+:\d*::[-qmfu]:::[escaESCA]+:$/) {
 		$found = 1;
-	} elsif(/^uid:[-qmfu]::::::::(.+):$/) {
+	} elsif(/^uid:[-qmfu]::::[0-9]*?::[0-9A-F]*?::(.+):$/) {
 		$uid_count++;
 		die "purgesigs failed: more than one uid left in $keyring" if $uid_count > 1;
 		die "wrong uid ($1) cut out, expected $uid_string" if $1 ne $uid_string;
-	} elsif(/^(uid|uat):[-qmfu]::::::::(.+):$/) {
+	} elsif(/^(uid|uat):[-qmfu]::::[0-9]*?::[0-9][A-F]*?::(.+):$/) {
 		$uid_count++;
 	} else {
 		die "unknown line format: $_";
