aboutsummaryrefslogtreecommitdiffstats
path: root/g10/getkey.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/getkey.c')
-rw-r--r--g10/getkey.c14
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;
}