summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libcrypto/x509/x509_verify.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/lib/libcrypto/x509/x509_verify.c b/src/lib/libcrypto/x509/x509_verify.c
index 051a04c1be..51108bbe72 100644
--- a/src/lib/libcrypto/x509/x509_verify.c
+++ b/src/lib/libcrypto/x509/x509_verify.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x509_verify.c,v 1.45 2021/08/29 17:13:15 beck Exp $ */ 1/* $OpenBSD: x509_verify.c,v 1.46 2021/08/30 06:51:36 beck Exp $ */
2/* 2/*
3 * Copyright (c) 2020-2021 Bob Beck <beck@openbsd.org> 3 * Copyright (c) 2020-2021 Bob Beck <beck@openbsd.org>
4 * 4 *
@@ -132,8 +132,11 @@ x509_verify_chain_append(struct x509_verify_chain *chain, X509 *cert,
132 * We've just added the issuer for the previous certificate, 132 * We've just added the issuer for the previous certificate,
133 * clear its error if appropriate. 133 * clear its error if appropriate.
134 */ 134 */
135 if (idx > 1 && chain->cert_errors[idx - 1] == 135 if (idx > 1 &&
136 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY) 136 (chain->cert_errors[idx - 1] ==
137 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY ||
138 chain->cert_errors[idx - 1] ==
139 X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE))
137 chain->cert_errors[idx - 1] = X509_V_OK; 140 chain->cert_errors[idx - 1] = X509_V_OK;
138 141
139 return 1; 142 return 1;
@@ -406,7 +409,9 @@ x509_verify_ctx_add_chain(struct x509_verify_ctx *ctx,
406 409
407 /* Clear a get issuer failure for a root certificate. */ 410 /* Clear a get issuer failure for a root certificate. */
408 if (chain->cert_errors[depth] == 411 if (chain->cert_errors[depth] ==
409 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY) 412 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY ||
413 chain->cert_errors[depth] ==
414 X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE)
410 chain->cert_errors[depth] = X509_V_OK; 415 chain->cert_errors[depth] = X509_V_OK;
411 416
412 if (!x509_verify_ctx_validate_legacy_chain(ctx, chain, depth)) 417 if (!x509_verify_ctx_validate_legacy_chain(ctx, chain, depth))
@@ -596,7 +601,8 @@ x509_verify_build_chains(struct x509_verify_ctx *ctx, X509 *cert,
596 return; 601 return;
597 602
598 count = ctx->chains_count; 603 count = ctx->chains_count;
599 ctx->error = X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY; 604 ctx->error = depth == 0 ? X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE :
605 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY;
600 ctx->error_depth = depth; 606 ctx->error_depth = depth;
601 if (ctx->xsc != NULL) { 607 if (ctx->xsc != NULL) {
602 /* 608 /*