1
0
mirror of git://git.gnupg.org/gnupg.git synced 2025-01-22 14:57:02 +01:00

* getkey.c (merge_selfsigs_main): Remove some unused code and make sure

that the pk selfsigversion member accounts for 1F direct sigs.

* keyring.c (keyring_search): skipfnc didn't work properly with non-keyid
searches.  Noted by Stefan Bellon.
This commit is contained in:
David Shaw 2003-01-03 00:40:20 +00:00
parent e538b99549
commit 2d5091e4e3
3 changed files with 22 additions and 9 deletions

View File

@ -1,3 +1,12 @@
2003-01-02 David Shaw <dshaw@jabberwocky.com>
* getkey.c (merge_selfsigs_main): Remove some unused code and make
sure that the pk selfsigversion member accounts for 1F direct
sigs.
* keyring.c (keyring_search): skipfnc didn't work properly with
non-keyid searches. Noted by Stefan Bellon.
2003-01-02 Werner Koch <wk@gnupg.org> 2003-01-02 Werner Koch <wk@gnupg.org>
* keydb.c (keydb_add_resource): Don't assume that try_make_homedir * keydb.c (keydb_add_resource): Don't assume that try_make_homedir

View File

@ -1319,7 +1319,7 @@ merge_selfsigs_main( KBNODE keyblock, int *r_revoked )
PKT_public_key *pk = NULL; PKT_public_key *pk = NULL;
KBNODE k; KBNODE k;
u32 kid[2]; u32 kid[2];
u32 sigdate = 0, uiddate=0, uiddate2; u32 sigdate, uiddate, uiddate2;
KBNODE signode, uidnode, uidnode2; KBNODE signode, uidnode, uidnode2;
u32 curtime = make_timestamp (); u32 curtime = make_timestamp ();
unsigned int key_usage = 0; unsigned int key_usage = 0;
@ -1402,7 +1402,8 @@ merge_selfsigs_main( KBNODE keyblock, int *r_revoked )
else { else {
sigdate = sig->timestamp; sigdate = sig->timestamp;
signode = k; signode = k;
sigversion = sig->version; if( sig->version > sigversion )
sigversion = sig->version;
} }
} }
@ -1500,7 +1501,6 @@ merge_selfsigs_main( KBNODE keyblock, int *r_revoked )
/* second pass: look at the self-signature of all user IDs */ /* second pass: look at the self-signature of all user IDs */
signode = uidnode = NULL; signode = uidnode = NULL;
sigdate = 0; /* helper to find the latest signature in one user ID */ sigdate = 0; /* helper to find the latest signature in one user ID */
uiddate = 0; /* and over of all user IDs */
for(k=keyblock; k && k->pkt->pkttype != PKT_PUBLIC_SUBKEY; k = k->next ) { for(k=keyblock; k && k->pkt->pkttype != PKT_PUBLIC_SUBKEY; k = k->next ) {
if ( k->pkt->pkttype == PKT_USER_ID ) { if ( k->pkt->pkttype == PKT_USER_ID ) {
if ( uidnode && signode ) if ( uidnode && signode )
@ -1510,8 +1510,6 @@ merge_selfsigs_main( KBNODE keyblock, int *r_revoked )
} }
uidnode = k; uidnode = k;
signode = NULL; signode = NULL;
if ( sigdate > uiddate )
uiddate = sigdate;
sigdate = 0; sigdate = 0;
} }
else if ( k->pkt->pkttype == PKT_SIGNATURE && uidnode ) { else if ( k->pkt->pkttype == PKT_SIGNATURE && uidnode ) {
@ -1601,9 +1599,15 @@ merge_selfsigs_main( KBNODE keyblock, int *r_revoked )
} }
} }
/* Record the highest selfsigversion so we know if this is a v3 /* Record the highest selfsig version so we know if this is a v3
key through and through, or a v3 key with a v4 selfsig, which key through and through, or a v3 key with a v4 selfsig
means we can trust the preferences (if any). */ somewhere. This is useful in a few places to know if the key
must be treated as PGP2-style or OpenPGP-style. Note that a
selfsig revocation with a higher version number will also raise
this value. This is okay since such a revocation must be
issued by the user (i.e. it cannot be issued by someone else to
modify the key behavior.) */
pk->selfsigversion=sigversion; pk->selfsigversion=sigversion;
/* Now that we had a look at all user IDs we can now get some information /* Now that we had a look at all user IDs we can now get some information

View File

@ -861,6 +861,7 @@ keyring_search (KEYRING_HANDLE hd, KEYDB_SEARCH_DESC *desc, size_t ndesc)
PKT_user_id *uid = NULL; PKT_user_id *uid = NULL;
PKT_public_key *pk = NULL; PKT_public_key *pk = NULL;
PKT_secret_key *sk = NULL; PKT_secret_key *sk = NULL;
u32 aki[2];
/* figure out what information we need */ /* figure out what information we need */
need_uid = need_words = need_keyid = need_fpr = any_skip = 0; need_uid = need_words = need_keyid = need_fpr = any_skip = 0;
@ -963,7 +964,6 @@ keyring_search (KEYRING_HANDLE hd, KEYDB_SEARCH_DESC *desc, size_t ndesc)
{ {
byte afp[MAX_FINGERPRINT_LEN]; byte afp[MAX_FINGERPRINT_LEN];
size_t an; size_t an;
u32 aki[2];
if (pkt.pkttype == PKT_PUBLIC_KEY || pkt.pkttype == PKT_SECRET_KEY) if (pkt.pkttype == PKT_PUBLIC_KEY || pkt.pkttype == PKT_SECRET_KEY)
{ {