aboutsummaryrefslogtreecommitdiffstats
path: root/dirmngr/server.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2022-12-05 15:42:08 +0000
committerWerner Koch <[email protected]>2022-12-05 15:42:08 +0000
commitb6abaed2b5f6a6e52069f370c61006abdc81cdf5 (patch)
tree3aaca56d2678d54c1bc60b67c85602b44b5daf28 /dirmngr/server.c
parentgpgsm: Silence the "non-critical certificate policy not allowed". (diff)
downloadgnupg-b6abaed2b5f6a6e52069f370c61006abdc81cdf5.tar.gz
gnupg-b6abaed2b5f6a6e52069f370c61006abdc81cdf5.zip
gpgsm: Print revocation date and reason in cert listings.
* dirmngr/ocsp.c (ocsp_isvalid): Add args r_revoked_at and r_revocation_reason. * dirmngr/server.c (cmd_isvalid): Emit a new REVOCATIONINFO status. (cmd_checkocsp): Ditto. * sm/call-dirmngr.c (struct isvalid_status_parm_s): Add new fields. (isvalid_status_cb): Parse REVOCATIONINFO. (gpgsm_dirmngr_isvalid): Add args r_revoked_at and r_revocation_reason. * sm/gpgsm.h (struct server_control_s): Add fields revoked_art and revocation_reason. * sm/keylist.c (list_cert_raw): Print revocation date. (list_cert_std): Ditto. -- Note that for now we do this only for OCSP because it is an important piece of information when using the chain model. For a sample key see commit 7fa1d3cc821dca1ea8e1c80a0bdd527177c185ee.
Diffstat (limited to 'dirmngr/server.c')
-rw-r--r--dirmngr/server.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/dirmngr/server.c b/dirmngr/server.c
index 98f354300..fba2233d4 100644
--- a/dirmngr/server.c
+++ b/dirmngr/server.c
@@ -1310,6 +1310,9 @@ cmd_isvalid (assuan_context_t ctx, char *line)
again:
if (ocsp_mode)
{
+ gnupg_isotime_t revoked_at;
+ const char *reason;
+
/* Note, that we currently ignore the supplied fingerprint FPR;
* instead ocsp_isvalid does an inquire to ask for the cert.
* The fingerprint may eventually be used to lookup the
@@ -1317,7 +1320,12 @@ cmd_isvalid (assuan_context_t ctx, char *line)
if (!opt.allow_ocsp)
err = gpg_error (GPG_ERR_NOT_SUPPORTED);
else
- err = ocsp_isvalid (ctrl, NULL, NULL, force_default_responder);
+ err = ocsp_isvalid (ctrl, NULL, NULL, force_default_responder,
+ revoked_at, &reason);
+
+ if (gpg_err_code (err) == GPG_ERR_CERT_REVOKED)
+ dirmngr_status_printf (ctrl, "REVOCATIONINFO", "%s %s",
+ revoked_at, reason);
if (gpg_err_code (err) == GPG_ERR_CONFIGURATION
&& gpg_err_source (err) == GPG_ERR_SOURCE_DIRMNGR)
@@ -1512,6 +1520,8 @@ cmd_checkocsp (assuan_context_t ctx, char *line)
unsigned char fprbuffer[20], *fpr;
ksba_cert_t cert;
int force_default_responder;
+ gnupg_isotime_t revoked_at;
+ const char *reason;
force_default_responder = has_option (line, "--force-default-responder");
line = skip_options (line);
@@ -1547,12 +1557,18 @@ cmd_checkocsp (assuan_context_t ctx, char *line)
goto leave;
}
- assert (cert);
+ log_assert (cert);
if (!opt.allow_ocsp)
err = gpg_error (GPG_ERR_NOT_SUPPORTED);
else
- err = ocsp_isvalid (ctrl, cert, NULL, force_default_responder);
+ err = ocsp_isvalid (ctrl, cert, NULL, force_default_responder,
+ revoked_at, &reason);
+
+ if (gpg_err_code (err) == GPG_ERR_CERT_REVOKED)
+ dirmngr_status_printf (ctrl, "REVOCATIONINFO", "%s %s",
+ revoked_at, reason);
+
leave:
ksba_cert_release (cert);