aboutsummaryrefslogtreecommitdiffstats
path: root/g10/getkey.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/getkey.c')
-rw-r--r--g10/getkey.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/g10/getkey.c b/g10/getkey.c
index 298c117ae..3821264c9 100644
--- a/g10/getkey.c
+++ b/g10/getkey.c
@@ -1190,6 +1190,7 @@ merge_selfsigs_main( KBNODE keyblock, int *r_revoked )
u32 keytimestamp = 0;
u32 key_expire = 0;
int key_expire_seen = 0;
+ byte sigversion = 0;
*r_revoked = 0;
if ( keyblock->pkt->pkttype != PKT_PUBLIC_KEY )
@@ -1242,6 +1243,7 @@ merge_selfsigs_main( KBNODE keyblock, int *r_revoked )
else {
sigdate = sig->timestamp;
signode = k;
+ sigversion = sig->version;
}
}
}
@@ -1316,6 +1318,8 @@ merge_selfsigs_main( KBNODE keyblock, int *r_revoked )
else {
sigdate = sig->timestamp;
signode = k;
+ if( sig->version > sigversion )
+ sigversion = sig->version;
}
}
}
@@ -1328,6 +1332,10 @@ merge_selfsigs_main( KBNODE keyblock, int *r_revoked )
if ( sigdate > uiddate )
uiddate = sigdate;
+ /* Record the highest selfsigversion so we know if this is a v3
+ key through and through, or a v3 key with a v4 selfsig, which
+ means we can trust the preferences (if any). */
+ pk->selfsigversion=sigversion;
/* Now that we had a look at all user IDs we can now get some information
* from those user IDs.