Add primary key fingerprint to VALIDSIG status.

This commit is contained in:
Werner Koch 2003-04-08 08:42:47 +00:00
parent cf6fcc0b4b
commit 26fabc31e3
5 changed files with 43 additions and 9 deletions

2
NEWS
View File

@ -50,6 +50,8 @@ Noteworthy changes in version 1.3.2 (unreleased)
This is a simpler interface to the old method (which still
works) of revoking the user ID self-signature.
* Status VALIDSIG does now also print the primary key's fngerprint.
* Add read-only support for the SHA-256 hash, and optional
read-only support for the SHA-384 and SHA-512 hashes.

View File

@ -12,6 +12,10 @@
* Makefile.am: Allow CVS version to build without faqprog.pl.
2003-04-01 Werner Koch <wk@gnupg.org>
* DETAILS (VALIDSIG): Add primary keys fingerprint.
2003-01-27 David Shaw <dshaw@jabberwocky.com>
* DETAILS: Document trust depth, value, and regexp.

View File

@ -164,7 +164,7 @@ more arguments in future versions.
this signature. sig_class is a 2 byte hex-value.
VALIDSIG <fingerprint in hex> <sig_creation_date> <sig-timestamp>
<expire-timestamp>
<expire-timestamp> <primary-key-fpr>
The signature with the keyid is good. This is the same
as GOODSIG but has the fingerprint as the argument. Both
@ -172,6 +172,9 @@ more arguments in future versions.
sig-timestamp is the signature creation time in seconds after
the epoch. expire-timestamp is the signature expiration time
in seconds after the epoch (zero means "does not expire").
PRIMARY-KEY-FPR is the fingerprint of the primary key or
identical to the first argument. This is useful to get back
to the primary key without running gpg again for this purpose.
SIG_ID <radix64_string> <sig_creation_date> <sig-timestamp>
This is emitted only for signatures of class 0 or 1 which

View File

@ -5,6 +5,11 @@
* sign.c (sign_file, clearsign_file, sign_symencrypt_file): Remove
unused code.
2003-04-01 Werner Koch <wk@gnupg.org>
* mainproc.c (check_sig_and_print): Add primary key fpr to VALIDSIG
status.
2003-03-24 David Shaw <dshaw@jabberwocky.com>
* keydb.h: Err on the side of making an unknown signature a SIG

View File

@ -1,5 +1,5 @@
/* mainproc.c - handle packets
* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
* Copyright (C) 1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc.
*
* This file is part of GnuPG.
*
@ -1452,17 +1452,37 @@ check_sig_and_print( CTX c, KBNODE node )
if( !get_pubkey( pk, sig->keyid ) ) {
byte array[MAX_FINGERPRINT_LEN], *p;
char buf[MAX_FINGERPRINT_LEN*2+72];
char buf[MAX_FINGERPRINT_LEN*4+73], *bufp;
size_t i, n;
bufp = buf;
fingerprint_from_pk( pk, array, &n );
p = array;
for(i=0; i < n ; i++, p++ )
sprintf(buf+2*i, "%02X", *p );
sprintf(buf+strlen(buf), " %s %lu %lu",
strtimestamp( sig->timestamp ),
(ulong)sig->timestamp,
(ulong)sig->expiredate );
for(i=0; i < n ; i++, p++, bufp += 2)
sprintf(bufp, "%02X", *p );
sprintf(bufp, " %s %lu %lu ",
strtimestamp( sig->timestamp ),
(ulong)sig->timestamp,
(ulong)sig->expiredate );
bufp = bufp + strlen (bufp);
if (!pk->is_primary) {
u32 akid[2];
akid[0] = pk->main_keyid[0];
akid[1] = pk->main_keyid[1];
free_public_key (pk);
pk = m_alloc_clear( sizeof *pk );
if (get_pubkey (pk, akid)) {
/* impossible error, we simply return a zeroed out fpr */
n = MAX_FINGERPRINT_LEN < 20? MAX_FINGERPRINT_LEN : 20;
memset (array, 0, n);
}
else
fingerprint_from_pk( pk, array, &n );
}
p = array;
for(i=0; i < n ; i++, p++, bufp += 2)
sprintf(bufp, "%02X", *p );
write_status_text( STATUS_VALIDSIG, buf );
}
free_public_key( pk );