summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorjsing <>2020-09-16 05:47:01 +0000
committerjsing <>2020-09-16 05:47:01 +0000
commitd53cd9028836afb4efd88e5cb84a24bebc22d18b (patch)
tree89c3831955073126a3ad2a4852d26c5d7815f439 /src/lib
parentcc9053e092fa983c47bf3b0efe4cb53ae951fd4d (diff)
downloadopenbsd-d53cd9028836afb4efd88e5cb84a24bebc22d18b.tar.gz
openbsd-d53cd9028836afb4efd88e5cb84a24bebc22d18b.tar.bz2
openbsd-d53cd9028836afb4efd88e5cb84a24bebc22d18b.zip
Dedup code in x509_verify_ctx_new_from_xsc().
Rather than duplicating code, have x509_verify_ctx_new_from_xsc() call x509_verify_ctx_new(), then handle the xsc specific parts. ok beck@
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libcrypto/x509/x509_verify.c21
1 files changed, 7 insertions, 14 deletions
diff --git a/src/lib/libcrypto/x509/x509_verify.c b/src/lib/libcrypto/x509/x509_verify.c
index 8b12f18bfb..967952ead0 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.8 2020/09/15 13:34:56 beck Exp $ */ 1/* $OpenBSD: x509_verify.c,v 1.9 2020/09/16 05:47:01 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2020 Bob Beck <beck@openbsd.org> 3 * Copyright (c) 2020 Bob Beck <beck@openbsd.org>
4 * 4 *
@@ -688,31 +688,24 @@ struct x509_verify_ctx *
688x509_verify_ctx_new_from_xsc(X509_STORE_CTX *xsc, STACK_OF(X509) *roots) 688x509_verify_ctx_new_from_xsc(X509_STORE_CTX *xsc, STACK_OF(X509) *roots)
689{ 689{
690 struct x509_verify_ctx *ctx; 690 struct x509_verify_ctx *ctx;
691 size_t max_depth;
691 692
692 if (xsc == NULL) 693 if (xsc == NULL)
693 return NULL; 694 return NULL;
694 695
695 if ((ctx = calloc(1, sizeof(struct x509_verify_ctx))) == NULL) 696 if ((ctx = x509_verify_ctx_new(roots)) == NULL)
696 return NULL; 697 return NULL;
697 698
698 ctx->xsc = xsc; 699 ctx->xsc = xsc;
699 700
700 if ((ctx->roots = X509_chain_up_ref(roots)) == NULL)
701 goto err;
702
703 if (xsc->untrusted && 701 if (xsc->untrusted &&
704 (ctx->intermediates = X509_chain_up_ref(xsc->untrusted)) == NULL) 702 (ctx->intermediates = X509_chain_up_ref(xsc->untrusted)) == NULL)
705 goto err; 703 goto err;
706 704
707 ctx->max_depth = xsc->param->depth; 705 max_depth = X509_VERIFY_MAX_CHAIN_CERTS;
708 if (ctx->max_depth == 0 || ctx->max_depth > X509_VERIFY_MAX_CHAIN_CERTS) 706 if (xsc->param->depth > 0 && xsc->param->depth < X509_VERIFY_MAX_CHAIN_CERTS)
709 ctx->max_depth = X509_VERIFY_MAX_CHAIN_CERTS; 707 max_depth = xsc->param->depth;
710 708 if (!x509_verify_ctx_set_max_depth(ctx, max_depth))
711 ctx->max_chains = X509_VERIFY_MAX_CHAINS;
712 ctx->max_sigs = X509_VERIFY_MAX_SIGCHECKS;
713
714 if ((ctx->chains = calloc(X509_VERIFY_MAX_CHAINS, sizeof(*ctx->chains))) ==
715 NULL)
716 goto err; 709 goto err;
717 710
718 return ctx; 711 return ctx;