aboutsummaryrefslogtreecommitdiffstats
path: root/dirmngr/server.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2023-03-09 17:28:39 +0000
committerWerner Koch <[email protected]>2023-03-09 17:28:39 +0000
commitb52a0e244ae18aec4b9c93f90432a551fac95a40 (patch)
treedb5677d70b5d85de0def204d88d43b4f15a597a0 /dirmngr/server.c
parentkeyboxd: Allow import of v0 certificates. (diff)
downloadgnupg-b52a0e244ae18aec4b9c93f90432a551fac95a40.tar.gz
gnupg-b52a0e244ae18aec4b9c93f90432a551fac95a40.zip
dirmngr: Distinguish between "no crl" and "crl not trusted".
* dirmngr/crlcache.h (CRL_CACHE_NOTTRUSTED): New. * dirmngr/crlcache.c (cache_isvalid): Set this status. (crl_cache_cert_isvalid): Map it to GPG_ERR_NOT_TRUSTED. (crl_cache_reload_crl): Move diagnostic to ... * dirmngr/crlfetch.c (crl_fetch): here. * dirmngr/server.c (cmd_isvalid): Map it to GPG_ERR_NOT_TRUSTED. * dirmngr/validate.c (check_revocations): Handle new status. Improve diagnostics. * common/status.c (get_inv_recpsgnr_code): Map INV_CRL_OBJ. * common/audit.c (proc_type_verify): Ditto. -- This avoids repeated loading of CRLs in case of untrusted root certificates.
Diffstat (limited to 'dirmngr/server.c')
-rw-r--r--dirmngr/server.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/dirmngr/server.c b/dirmngr/server.c
index fba2233d4..da7e707f9 100644
--- a/dirmngr/server.c
+++ b/dirmngr/server.c
@@ -1360,8 +1360,11 @@ cmd_isvalid (assuan_context_t ctx, char *line)
goto again;
}
break;
+ case CRL_CACHE_NOTTRUSTED:
+ err = gpg_error (GPG_ERR_NOT_TRUSTED);
+ break;
case CRL_CACHE_CANTUSE:
- err = gpg_error (GPG_ERR_NO_CRL_KNOWN);
+ err = gpg_error (GPG_ERR_INV_CRL_OBJ);
break;
default:
log_fatal ("crl_cache_isvalid returned invalid code\n");
@@ -1469,7 +1472,7 @@ cmd_checkcrl (assuan_context_t ctx, char *line)
goto leave;
}
- assert (cert);
+ log_assert (cert);
err = crl_cache_cert_isvalid (ctrl, cert, ctrl->force_crl_refresh);
if (gpg_err_code (err) == GPG_ERR_NO_CRL_KNOWN)