summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/crypto.h
diff options
context:
space:
mode:
authortb <>2023-07-28 10:19:20 +0000
committertb <>2023-07-28 10:19:20 +0000
commit80044b19f0ece8df72ab24e3c1d89b8ca3d14bf7 (patch)
tree2ee287d6ab4c68a054e3379b662b9a6d1a67c316 /src/lib/libcrypto/crypto.h
parent39fd8a543e6f18ed3accea6db537f4a36fdb017d (diff)
downloadopenbsd-80044b19f0ece8df72ab24e3c1d89b8ca3d14bf7.tar.gz
openbsd-80044b19f0ece8df72ab24e3c1d89b8ca3d14bf7.tar.bz2
openbsd-80044b19f0ece8df72ab24e3c1d89b8ca3d14bf7.zip
Make ex_data implementations internal
To state the obvious: library suffers from way too much extensibility. In theory, applications can implement their own ex_data implementation. In practice, none did. A glance at ex_data.c might give an idea as to why. Make this internal so this particular turd can be replaced with something slightly saner. Also sync up the CRYPTO_EX_INDEX_* defines with OpenSSL - at least the parts we support. ok jsing
Diffstat (limited to 'src/lib/libcrypto/crypto.h')
-rw-r--r--src/lib/libcrypto/crypto.h64
1 files changed, 17 insertions, 47 deletions
diff --git a/src/lib/libcrypto/crypto.h b/src/lib/libcrypto/crypto.h
index f91374f496..07a55ec1f6 100644
--- a/src/lib/libcrypto/crypto.h
+++ b/src/lib/libcrypto/crypto.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: crypto.h,v 1.62 2023/07/05 13:06:06 bcook Exp $ */ 1/* $OpenBSD: crypto.h,v 1.63 2023/07/28 10:19:20 tb Exp $ */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved.
4 * 4 *
@@ -244,44 +244,22 @@ struct crypto_ex_data_st {
244}; 244};
245DECLARE_STACK_OF(void) 245DECLARE_STACK_OF(void)
246 246
247/* This stuff is basically class callback functions 247#define CRYPTO_EX_INDEX_SSL 0
248 * The current classes are SSL_CTX, SSL, SSL_SESSION, and a few more */ 248#define CRYPTO_EX_INDEX_SSL_CTX 1
249 249#define CRYPTO_EX_INDEX_SSL_SESSION 2
250typedef struct crypto_ex_data_func_st { 250#define CRYPTO_EX_INDEX_APP 3
251 long argl; /* Arbitrary long */ 251#define CRYPTO_EX_INDEX_BIO 4
252 void *argp; /* Arbitrary void * */ 252#define CRYPTO_EX_INDEX_DH 5
253 CRYPTO_EX_new *new_func; 253#define CRYPTO_EX_INDEX_DSA 6
254 CRYPTO_EX_free *free_func; 254#define CRYPTO_EX_INDEX_EC_KEY 7
255 CRYPTO_EX_dup *dup_func; 255#define CRYPTO_EX_INDEX_ENGINE 8
256} CRYPTO_EX_DATA_FUNCS; 256#define CRYPTO_EX_INDEX_RSA 9
257 257#define CRYPTO_EX_INDEX_UI 10
258DECLARE_STACK_OF(CRYPTO_EX_DATA_FUNCS) 258#define CRYPTO_EX_INDEX_UI_METHOD 11
259 259#define CRYPTO_EX_INDEX_X509 12
260/* Per class, we have a STACK of CRYPTO_EX_DATA_FUNCS for each CRYPTO_EX_DATA 260#define CRYPTO_EX_INDEX_X509_STORE 13
261 * entry. 261#define CRYPTO_EX_INDEX_X509_STORE_CTX 14
262 */ 262#define CRYPTO_EX_INDEX__COUNT 15
263
264#define CRYPTO_EX_INDEX_BIO 0
265#define CRYPTO_EX_INDEX_SSL 1
266#define CRYPTO_EX_INDEX_SSL_CTX 2
267#define CRYPTO_EX_INDEX_SSL_SESSION 3
268#define CRYPTO_EX_INDEX_X509_STORE 4
269#define CRYPTO_EX_INDEX_X509_STORE_CTX 5
270#define CRYPTO_EX_INDEX_RSA 6
271#define CRYPTO_EX_INDEX_DSA 7
272#define CRYPTO_EX_INDEX_DH 8
273#define CRYPTO_EX_INDEX_ENGINE 9
274#define CRYPTO_EX_INDEX_X509 10
275#define CRYPTO_EX_INDEX_UI 11
276#define CRYPTO_EX_INDEX_ECDSA 12
277#define CRYPTO_EX_INDEX_ECDH 13
278#define CRYPTO_EX_INDEX_COMP 14
279#define CRYPTO_EX_INDEX_STORE 15
280#define CRYPTO_EX_INDEX_EC_KEY 16
281
282/* Dynamically assigned indexes start from this value (don't use directly, use
283 * via CRYPTO_ex_data_new_class). */
284#define CRYPTO_EX_INDEX_USER 100
285 263
286#ifndef LIBRESSL_INTERNAL 264#ifndef LIBRESSL_INTERNAL
287#define CRYPTO_malloc_init() (0) 265#define CRYPTO_malloc_init() (0)
@@ -328,14 +306,6 @@ unsigned long OpenSSL_version_num(void);
328const char *SSLeay_version(int type); 306const char *SSLeay_version(int type);
329unsigned long SSLeay(void); 307unsigned long SSLeay(void);
330 308
331/* An opaque type representing an implementation of "ex_data" support */
332typedef struct st_CRYPTO_EX_DATA_IMPL CRYPTO_EX_DATA_IMPL;
333/* Return an opaque pointer to the current "ex_data" implementation */
334const CRYPTO_EX_DATA_IMPL *CRYPTO_get_ex_data_implementation(void);
335/* Sets the "ex_data" implementation to be used (if it's not too late) */
336int CRYPTO_set_ex_data_implementation(const CRYPTO_EX_DATA_IMPL *i);
337/* Get a new "ex_data" class, and return the corresponding "class_index" */
338int CRYPTO_ex_data_new_class(void);
339/* Within a given class, get/register a new index */ 309/* Within a given class, get/register a new index */
340int CRYPTO_get_ex_new_index(int class_index, long argl, void *argp, 310int CRYPTO_get_ex_new_index(int class_index, long argl, void *argp,
341 CRYPTO_EX_new *new_func, CRYPTO_EX_dup *dup_func, 311 CRYPTO_EX_new *new_func, CRYPTO_EX_dup *dup_func,