summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authortb <>2023-12-22 13:31:35 +0000
committertb <>2023-12-22 13:31:35 +0000
commitc12667858f367f66314e662114468f3ec7d5a28a (patch)
treef7a54bf018b0dd3299c3fe392afde29514d4768c /src/lib
parentceaa3ee99a03ab6937cc307a1b6bb2a60d08c2fa (diff)
downloadopenbsd-c12667858f367f66314e662114468f3ec7d5a28a.tar.gz
openbsd-c12667858f367f66314e662114468f3ec7d5a28a.tar.bz2
openbsd-c12667858f367f66314e662114468f3ec7d5a28a.zip
Remove a bunch of function pointers from X509_STORE_CTX
These are only ever set to one particular function which is either local to this file or part of the public API and we never added the public API to set them to something else. Prefix the local functions touched in this commit with x509_vfy_. More cleanup to follow. ok joshua jsing
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libcrypto/x509/x509_local.h8
-rw-r--r--src/lib/libcrypto/x509/x509_vfy.c52
2 files changed, 18 insertions, 42 deletions
diff --git a/src/lib/libcrypto/x509/x509_local.h b/src/lib/libcrypto/x509/x509_local.h
index 81efb690df..0312e6cac7 100644
--- a/src/lib/libcrypto/x509/x509_local.h
+++ b/src/lib/libcrypto/x509/x509_local.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: x509_local.h,v 1.13 2023/12/22 09:40:14 tb Exp $ */ 1/* $OpenBSD: x509_local.h,v 1.14 2023/12/22 13:31:35 tb Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 2013. 3 * project 2013.
4 */ 4 */
@@ -336,12 +336,6 @@ struct x509_store_ctx_st {
336 int (*verify_cb)(int ok,X509_STORE_CTX *ctx); /* error callback */ 336 int (*verify_cb)(int ok,X509_STORE_CTX *ctx); /* error callback */
337 int (*get_issuer)(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); /* get issuers cert from ctx */ 337 int (*get_issuer)(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); /* get issuers cert from ctx */
338 int (*check_issued)(X509_STORE_CTX *ctx, X509 *x, X509 *issuer); /* check issued */ 338 int (*check_issued)(X509_STORE_CTX *ctx, X509 *x, X509 *issuer); /* check issued */
339 int (*check_revocation)(X509_STORE_CTX *ctx); /* Check revocation status of chain */
340 int (*check_crl)(X509_STORE_CTX *ctx, X509_CRL *crl); /* Check CRL validity */
341 int (*cert_crl)(X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x); /* Check certificate against CRL */
342 int (*check_policy)(X509_STORE_CTX *ctx);
343 STACK_OF(X509) * (*lookup_certs)(X509_STORE_CTX *ctx, X509_NAME *nm);
344 STACK_OF(X509_CRL) * (*lookup_crls)(X509_STORE_CTX *ctx, X509_NAME *nm);
345 339
346 /* The following is built up */ 340 /* The following is built up */
347 int valid; /* if 0, rebuild chain */ 341 int valid; /* if 0, rebuild chain */
diff --git a/src/lib/libcrypto/x509/x509_vfy.c b/src/lib/libcrypto/x509/x509_vfy.c
index 93fa2c2800..fb6c4167c1 100644
--- a/src/lib/libcrypto/x509/x509_vfy.c
+++ b/src/lib/libcrypto/x509/x509_vfy.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x509_vfy.c,v 1.129 2023/12/22 09:40:14 tb Exp $ */ 1/* $OpenBSD: x509_vfy.c,v 1.130 2023/12/22 13:31:35 tb Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -116,6 +116,9 @@
116 116
117#define CRL_SCORE_TIME_DELTA 0x002 117#define CRL_SCORE_TIME_DELTA 0x002
118 118
119static int x509_vfy_check_crl(X509_STORE_CTX *ctx, X509_CRL *crl);
120static int x509_vfy_cert_crl(X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x);
121
119static int null_callback(int ok, X509_STORE_CTX *e); 122static int null_callback(int ok, X509_STORE_CTX *e);
120static int check_issued(X509_STORE_CTX *ctx, X509 *subject, X509 *issuer); 123static int check_issued(X509_STORE_CTX *ctx, X509 *subject, X509 *issuer);
121static X509 *find_issuer(X509_STORE_CTX *ctx, STACK_OF(X509) *sk, X509 *x, 124static X509 *find_issuer(X509_STORE_CTX *ctx, STACK_OF(X509) *sk, X509 *x,
@@ -123,9 +126,7 @@ static X509 *find_issuer(X509_STORE_CTX *ctx, STACK_OF(X509) *sk, X509 *x,
123static int check_chain_extensions(X509_STORE_CTX *ctx); 126static int check_chain_extensions(X509_STORE_CTX *ctx);
124static int check_name_constraints(X509_STORE_CTX *ctx); 127static int check_name_constraints(X509_STORE_CTX *ctx);
125static int check_trust(X509_STORE_CTX *ctx); 128static int check_trust(X509_STORE_CTX *ctx);
126static int check_revocation(X509_STORE_CTX *ctx);
127static int check_cert(X509_STORE_CTX *ctx, STACK_OF(X509) *chain, int depth); 129static int check_cert(X509_STORE_CTX *ctx, STACK_OF(X509) *chain, int depth);
128static int check_policy(X509_STORE_CTX *ctx);
129 130
130static int get_crl_score(X509_STORE_CTX *ctx, X509 **pissuer, 131static int get_crl_score(X509_STORE_CTX *ctx, X509 **pissuer,
131 unsigned int *preasons, X509_CRL *crl, X509 *x); 132 unsigned int *preasons, X509_CRL *crl, X509 *x);
@@ -564,7 +565,7 @@ X509_verify_cert_legacy(X509_STORE_CTX *ctx)
564 * Check revocation status: we do this after copying parameters because 565 * Check revocation status: we do this after copying parameters because
565 * they may be needed for CRL signature verification. 566 * they may be needed for CRL signature verification.
566 */ 567 */
567 ok = ctx->check_revocation(ctx); 568 ok = x509_vfy_check_revocation(ctx);
568 if (!ok) 569 if (!ok)
569 goto end; 570 goto end;
570 571
@@ -578,7 +579,7 @@ X509_verify_cert_legacy(X509_STORE_CTX *ctx)
578 579
579 /* If we get this far evaluate policies */ 580 /* If we get this far evaluate policies */
580 if (!bad_chain) 581 if (!bad_chain)
581 ok = ctx->check_policy(ctx); 582 ok = x509_vfy_check_policy(ctx);
582 583
583 end: 584 end:
584 /* Safety net, error returns must set ctx->error */ 585 /* Safety net, error returns must set ctx->error */
@@ -840,7 +841,7 @@ lookup_cert_match(X509_STORE_CTX *ctx, X509 *x)
840 size_t i; 841 size_t i;
841 842
842 /* Lookup all certs with matching subject name */ 843 /* Lookup all certs with matching subject name */
843 certs = ctx->lookup_certs(ctx, X509_get_subject_name(x)); 844 certs = X509_STORE_CTX_get1_certs(ctx, X509_get_subject_name(x));
844 if (certs == NULL) 845 if (certs == NULL)
845 return NULL; 846 return NULL;
846 847
@@ -863,8 +864,7 @@ lookup_cert_match(X509_STORE_CTX *ctx, X509 *x)
863X509 * 864X509 *
864x509_vfy_lookup_cert_match(X509_STORE_CTX *ctx, X509 *x) 865x509_vfy_lookup_cert_match(X509_STORE_CTX *ctx, X509 *x)
865{ 866{
866 if (ctx->lookup_certs == NULL || ctx->store == NULL || 867 if (ctx->store == NULL || ctx->store->objs == NULL)
867 ctx->store->objs == NULL)
868 return NULL; 868 return NULL;
869 return lookup_cert_match(ctx, x); 869 return lookup_cert_match(ctx, x);
870} 870}
@@ -930,8 +930,8 @@ x509_vfy_check_trust(X509_STORE_CTX *ctx)
930 return check_trust(ctx); 930 return check_trust(ctx);
931} 931}
932 932
933static int 933int
934check_revocation(X509_STORE_CTX *ctx) 934x509_vfy_check_revocation(X509_STORE_CTX *ctx)
935{ 935{
936 int i, last, ok; 936 int i, last, ok;
937 937
@@ -953,12 +953,6 @@ check_revocation(X509_STORE_CTX *ctx)
953 return 1; 953 return 1;
954} 954}
955 955
956int
957x509_vfy_check_revocation(X509_STORE_CTX *ctx)
958{
959 return check_revocation(ctx);
960}
961
962static int 956static int
963check_cert(X509_STORE_CTX *ctx, STACK_OF(X509) *chain, int depth) 957check_cert(X509_STORE_CTX *ctx, STACK_OF(X509) *chain, int depth)
964{ 958{
@@ -983,15 +977,15 @@ check_cert(X509_STORE_CTX *ctx, STACK_OF(X509) *chain, int depth)
983 goto err; 977 goto err;
984 } 978 }
985 ctx->current_crl = crl; 979 ctx->current_crl = crl;
986 ok = ctx->check_crl(ctx, crl); 980 ok = x509_vfy_check_crl(ctx, crl);
987 if (!ok) 981 if (!ok)
988 goto err; 982 goto err;
989 983
990 if (dcrl) { 984 if (dcrl) {
991 ok = ctx->check_crl(ctx, dcrl); 985 ok = x509_vfy_check_crl(ctx, dcrl);
992 if (!ok) 986 if (!ok)
993 goto err; 987 goto err;
994 ok = ctx->cert_crl(ctx, dcrl, x); 988 ok = x509_vfy_cert_crl(ctx, dcrl, x);
995 if (!ok) 989 if (!ok)
996 goto err; 990 goto err;
997 } else 991 } else
@@ -999,7 +993,7 @@ check_cert(X509_STORE_CTX *ctx, STACK_OF(X509) *chain, int depth)
999 993
1000 /* Don't look in full CRL if delta reason is removefromCRL */ 994 /* Don't look in full CRL if delta reason is removefromCRL */
1001 if (ok != 2) { 995 if (ok != 2) {
1002 ok = ctx->cert_crl(ctx, crl, x); 996 ok = x509_vfy_cert_crl(ctx, crl, x);
1003 if (!ok) 997 if (!ok)
1004 goto err; 998 goto err;
1005 } 999 }
@@ -1553,7 +1547,7 @@ get_crl_delta(X509_STORE_CTX *ctx, X509_CRL **pcrl, X509_CRL **pdcrl, X509 *x)
1553 goto done; 1547 goto done;
1554 1548
1555 /* Lookup CRLs from store */ 1549 /* Lookup CRLs from store */
1556 skcrl = ctx->lookup_crls(ctx, nm); 1550 skcrl = X509_STORE_CTX_get1_crls(ctx, nm);
1557 1551
1558 /* If no CRLs found and a near match from get_crl_sk use that */ 1552 /* If no CRLs found and a near match from get_crl_sk use that */
1559 if (!skcrl && crl) 1553 if (!skcrl && crl)
@@ -1580,7 +1574,7 @@ done:
1580 1574
1581/* Check CRL validity */ 1575/* Check CRL validity */
1582static int 1576static int
1583check_crl(X509_STORE_CTX *ctx, X509_CRL *crl) 1577x509_vfy_check_crl(X509_STORE_CTX *ctx, X509_CRL *crl)
1584{ 1578{
1585 X509 *issuer = NULL; 1579 X509 *issuer = NULL;
1586 EVP_PKEY *ikey = NULL; 1580 EVP_PKEY *ikey = NULL;
@@ -1683,7 +1677,7 @@ err:
1683 1677
1684/* Check certificate against CRL */ 1678/* Check certificate against CRL */
1685static int 1679static int
1686cert_crl(X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x) 1680x509_vfy_cert_crl(X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x)
1687{ 1681{
1688 int ok; 1682 int ok;
1689 X509_REVOKED *rev; 1683 X509_REVOKED *rev;
@@ -1750,12 +1744,6 @@ x509_vfy_check_policy(X509_STORE_CTX *ctx)
1750 return 1; 1744 return 1;
1751} 1745}
1752 1746
1753static int
1754check_policy(X509_STORE_CTX *ctx)
1755{
1756 return x509_vfy_check_policy(ctx);
1757}
1758
1759/* 1747/*
1760 * Inform the verify callback of an error. 1748 * Inform the verify callback of an error.
1761 * 1749 *
@@ -2334,12 +2322,6 @@ X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store, X509 *leaf,
2334 2322
2335 ctx->get_issuer = X509_STORE_CTX_get1_issuer; 2323 ctx->get_issuer = X509_STORE_CTX_get1_issuer;
2336 ctx->check_issued = check_issued; 2324 ctx->check_issued = check_issued;
2337 ctx->check_revocation = check_revocation;
2338 ctx->check_crl = check_crl;
2339 ctx->cert_crl = cert_crl;
2340 ctx->check_policy = check_policy;
2341 ctx->lookup_certs = X509_STORE_CTX_get1_certs;
2342 ctx->lookup_crls = X509_STORE_CTX_get1_crls;
2343 2325
2344 ctx->param = X509_VERIFY_PARAM_new(); 2326 ctx->param = X509_VERIFY_PARAM_new();
2345 if (!ctx->param) { 2327 if (!ctx->param) {