diff options
Diffstat (limited to 'g10/getkey.c')
-rw-r--r-- | g10/getkey.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/g10/getkey.c b/g10/getkey.c index 14a459df6..e479ed6ea 100644 --- a/g10/getkey.c +++ b/g10/getkey.c @@ -1360,7 +1360,7 @@ fixup_uidnode ( KBNODE uidnode, KBNODE signode, u32 keycreated ) } static void -merge_selfsigs_main( KBNODE keyblock, int *r_revoked ) +merge_selfsigs_main( KBNODE keyblock, int *r_revoked, u32 *r_revokedate ) { PKT_public_key *pk = NULL; KBNODE k; @@ -1375,6 +1375,7 @@ merge_selfsigs_main( KBNODE keyblock, int *r_revoked ) byte sigversion = 0; *r_revoked = 0; + *r_revokedate = 0; if ( keyblock->pkt->pkttype != PKT_PUBLIC_KEY ) BUG (); pk = keyblock->pkt->pkt.public_key; @@ -1420,6 +1421,7 @@ merge_selfsigs_main( KBNODE keyblock, int *r_revoked ) * that key. */ *r_revoked = 1; + *r_revokedate = sig->timestamp; } else if ( IS_KEY_SIG (sig) ) { /* Add any revocation keys onto the pk. This is @@ -1537,6 +1539,7 @@ merge_selfsigs_main( KBNODE keyblock, int *r_revoked ) if(rc==0) { *r_revoked=2; + *r_revokedate=sig->timestamp; /* don't continue checking since we can't be any more revoked than this */ break; @@ -1875,6 +1878,7 @@ merge_selfsigs_subkey( KBNODE keyblock, KBNODE subnode ) problem is in the distribution. Plus, PGP (7) does this the same way. */ subpk->is_revoked = 1; + subpk->revokedate = sig->timestamp; /* although we could stop now, we continue to * figure out other information like the old expiration * time */ @@ -1946,6 +1950,7 @@ merge_selfsigs( KBNODE keyblock ) { KBNODE k; int revoked; + u32 revokedate; PKT_public_key *main_pk; prefitem_t *prefs; int mdc_feature; @@ -1962,7 +1967,7 @@ merge_selfsigs( KBNODE keyblock ) BUG (); } - merge_selfsigs_main ( keyblock, &revoked ); + merge_selfsigs_main ( keyblock, &revoked, &revokedate ); /* now merge in the data from each of the subkeys */ for(k=keyblock; k; k = k->next ) { @@ -1983,7 +1988,10 @@ merge_selfsigs( KBNODE keyblock ) if(!main_pk->is_valid) pk->is_valid = 0; if(revoked && !pk->is_revoked) - pk->is_revoked = revoked; + { + pk->is_revoked = revoked; + pk->revokedate = revokedate; + } if(main_pk->has_expired) pk->has_expired = main_pk->has_expired; } |