summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortb <>2022-12-01 05:16:08 +0000
committertb <>2022-12-01 05:16:08 +0000
commit28ef9c3d0b11cd813f139ffe30994a5008042bf8 (patch)
treeb0ff60335c6fcd3f996c1795a3f7a071108f7e85 /src
parent6b167b264a00d811a6f14daa45c93de7e0679e9d (diff)
downloadopenbsd-28ef9c3d0b11cd813f139ffe30994a5008042bf8.tar.gz
openbsd-28ef9c3d0b11cd813f139ffe30994a5008042bf8.tar.bz2
openbsd-28ef9c3d0b11cd813f139ffe30994a5008042bf8.zip
Getters and setters for the check_issued() callback
Open62541 uses X509_STORE_CTX_get_check_issued(), so provide it along with X509_STORE_{get,set}_check_issued(). As you would expect, they all return or take an X509_STORE_CTX_check_issued_fn. The getters aren't const in OpenSSL 1.1, but they now are in OpenSSL 3... These will be made available in the next minor bump and will ship in the stable release of LibreSSL 3.7 Part of OpenSSL commit 1060a50b See also https://github.com/libressl-portable/portable/issues/748 ok beck jsing
Diffstat (limited to 'src')
-rw-r--r--src/lib/libcrypto/hidden/openssl/x509_vfy.h5
-rw-r--r--src/lib/libcrypto/x509/x509_vfy.c24
-rw-r--r--src/lib/libcrypto/x509/x509_vfy.h13
3 files changed, 39 insertions, 3 deletions
diff --git a/src/lib/libcrypto/hidden/openssl/x509_vfy.h b/src/lib/libcrypto/hidden/openssl/x509_vfy.h
index 3a52206b45..a8e172ad2d 100644
--- a/src/lib/libcrypto/hidden/openssl/x509_vfy.h
+++ b/src/lib/libcrypto/hidden/openssl/x509_vfy.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: x509_vfy.h,v 1.1 2022/11/14 17:48:49 beck Exp $ */ 1/* $OpenBSD: x509_vfy.h,v 1.2 2022/12/01 05:16:08 tb Exp $ */
2/* 2/*
3 * Copyright (c) 2022 Bob Beck <beck@openbsd.org> 3 * Copyright (c) 2022 Bob Beck <beck@openbsd.org>
4 * 4 *
@@ -47,6 +47,9 @@ LCRYPTO_USED(X509_STORE_set1_param);
47LCRYPTO_USED(X509_STORE_get0_param); 47LCRYPTO_USED(X509_STORE_get0_param);
48LCRYPTO_USED(X509_STORE_get_verify_cb); 48LCRYPTO_USED(X509_STORE_get_verify_cb);
49LCRYPTO_USED(X509_STORE_set_verify_cb); 49LCRYPTO_USED(X509_STORE_set_verify_cb);
50LCRYPTO_USED(X509_STORE_get_check_issued);
51LCRYPTO_USED(X509_STORE_set_check_issued);
52LCRYPTO_USED(X509_STORE_CTX_get_check_issued);
50LCRYPTO_USED(X509_STORE_CTX_new); 53LCRYPTO_USED(X509_STORE_CTX_new);
51LCRYPTO_USED(X509_STORE_CTX_get1_issuer); 54LCRYPTO_USED(X509_STORE_CTX_get1_issuer);
52LCRYPTO_USED(X509_STORE_CTX_free); 55LCRYPTO_USED(X509_STORE_CTX_free);
diff --git a/src/lib/libcrypto/x509/x509_vfy.c b/src/lib/libcrypto/x509/x509_vfy.c
index 9b7f371cea..675aba4322 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.107 2022/11/26 16:08:55 tb Exp $ */ 1/* $OpenBSD: x509_vfy.c,v 1.108 2022/12/01 05:16:08 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 *
@@ -2587,6 +2587,28 @@ X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, int (*verify)(X509_STORE_CTX *))
2587} 2587}
2588LCRYPTO_ALIAS(X509_STORE_CTX_set_verify) 2588LCRYPTO_ALIAS(X509_STORE_CTX_set_verify)
2589 2589
2590X509_STORE_CTX_check_issued_fn
2591X509_STORE_get_check_issued(X509_STORE *store)
2592{
2593 return store->check_issued;
2594}
2595LCRYPTO_ALIAS(X509_STORE_get_check_issued)
2596
2597void
2598X509_STORE_set_check_issued(X509_STORE *store,
2599 X509_STORE_CTX_check_issued_fn check_issued)
2600{
2601 store->check_issued = check_issued;
2602}
2603LCRYPTO_ALIAS(X509_STORE_set_check_issued)
2604
2605X509_STORE_CTX_check_issued_fn
2606X509_STORE_CTX_get_check_issued(X509_STORE_CTX *ctx)
2607{
2608 return ctx->check_issued;
2609}
2610LCRYPTO_ALIAS(X509_STORE_CTX_get_check_issued)
2611
2590X509 * 2612X509 *
2591X509_STORE_CTX_get0_cert(X509_STORE_CTX *ctx) 2613X509_STORE_CTX_get0_cert(X509_STORE_CTX *ctx)
2592{ 2614{
diff --git a/src/lib/libcrypto/x509/x509_vfy.h b/src/lib/libcrypto/x509/x509_vfy.h
index 98b1cf5e92..e00db3a7af 100644
--- a/src/lib/libcrypto/x509/x509_vfy.h
+++ b/src/lib/libcrypto/x509/x509_vfy.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: x509_vfy.h,v 1.54 2022/07/07 13:01:28 tb Exp $ */ 1/* $OpenBSD: x509_vfy.h,v 1.55 2022/12/01 05:16:08 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 *
@@ -310,6 +310,17 @@ void X509_STORE_set_verify_cb(X509_STORE *ctx,
310#define X509_STORE_set_verify_cb_func(ctx, func) \ 310#define X509_STORE_set_verify_cb_func(ctx, func) \
311 X509_STORE_set_verify_cb((ctx), (func)) 311 X509_STORE_set_verify_cb((ctx), (func))
312 312
313#if defined(LIBRESSL_INTERNAL) || defined(LIBRESSL_NEXT_API)
314typedef int (*X509_STORE_CTX_check_issued_fn)(X509_STORE_CTX *ctx,
315 X509 *subject, X509 *issuer);
316
317X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(X509_STORE *store);
318void X509_STORE_set_check_issued(X509_STORE *store,
319 X509_STORE_CTX_check_issued_fn check_issued);
320X509_STORE_CTX_check_issued_fn
321 X509_STORE_CTX_get_check_issued(X509_STORE_CTX *ctx);
322#endif
323
313X509_STORE_CTX *X509_STORE_CTX_new(void); 324X509_STORE_CTX *X509_STORE_CTX_new(void);
314 325
315int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); 326int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x);