diff options
author | Werner Koch <[email protected]> | 2020-03-27 20:11:25 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2020-03-27 20:16:07 +0000 |
commit | 0b583a555e75fbb9140310390a267febd3329a12 (patch) | |
tree | ff1ac042ea3b436a44d945b5e1ea8cde4330b7f5 /sm/certchain.c | |
parent | scd:openpgp: Allow PKSIGN with keygrip also for OPENPGP.3. (diff) | |
download | gnupg-0b583a555e75fbb9140310390a267febd3329a12.tar.gz gnupg-0b583a555e75fbb9140310390a267febd3329a12.zip |
sm: Consider certificates w/o CRL DP as valid.
* sm/certchain.c (is_cert_still_valid): Shortcut if tehre is no DP.
* common/audit.c (proc_type_verify): Print "n/a" if a cert has no
distribution point.
* sm/gpgsm.h (opt): Add field enable_issuer_based_crl_check.
* sm/gpgsm.c (oEnableIssuerBasedCRLCheck): New.
(opts): Add option --enable-issuer-based-crl-check.
(main): Set option.
--
If the issuer does not provide a DP and the user wants such an issuer,
we expect that a certificate does not need revocation checks. The new
option --enable-issuer-based-crl-check can be used to revert to the
old behaviour which requires that a suitable LDAP server has been
configured to lookup a CRL by issuer.
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'sm/certchain.c')
-rw-r--r-- | sm/certchain.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/sm/certchain.c b/sm/certchain.c index 77e91f003..c30be324e 100644 --- a/sm/certchain.c +++ b/sm/certchain.c @@ -1055,6 +1055,24 @@ is_cert_still_valid (ctrl_t ctrl, int force_ocsp, int lm, estream_t fp, return 0; } + + if (!(force_ocsp || ctrl->use_ocsp) + && !opt.enable_issuer_based_crl_check) + { + err = ksba_cert_get_crl_dist_point (subject_cert, 0, NULL, NULL, NULL); + if (gpg_err_code (err) == GPG_ERR_EOF) + { + /* No DP specified in the certificate. Thus the CA does not + * consider a CRL useful and the user of the certificate + * also does not consider this to be a critical thing. In + * this case we can conclude that the certificate shall not + * be revocable. Note that we reach this point here only if + * no OCSP responder shall be used. */ + audit_log_ok (ctrl->audit, AUDIT_CRL_CHECK, gpg_error (GPG_ERR_TRUE)); + return 0; + } + } + err = gpgsm_dirmngr_isvalid (ctrl, subject_cert, issuer_cert, force_ocsp? 2 : !!ctrl->use_ocsp); |