1 /*
2  * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved.
3  *
4  * Licensed under the Apache License 2.0 (the "License").  You may not use
5  * this file except in compliance with the License.  You can obtain a copy
6  * in the file LICENSE in the source distribution or at
7  * https://www.openssl.org/source/license.html
8  */
9 
10 #ifndef _CRYPTO_THREADS_COMMON_H_
11 # define _CRYPTO_THREADS_COMMON_H_
12 
13 typedef enum {
14     CRYPTO_THREAD_LOCAL_RCU_KEY = 0,
15     CRYPTO_THREAD_LOCAL_DRBG_PRIV_KEY,
16     CRYPTO_THREAD_LOCAL_DRBG_PUB_KEY,
17     CRYPTO_THREAD_LOCAL_ERR_KEY,
18     CRYPTO_THREAD_LOCAL_ASYNC_CTX_KEY,
19     CRYPTO_THREAD_LOCAL_ASYNC_POOL_KEY,
20     CRYPTO_THREAD_LOCAL_TEVENT_KEY,
21     CRYPTO_THREAD_LOCAL_KEY_MAX
22 } CRYPTO_THREAD_LOCAL_KEY_ID;
23 
24 #define CRYPTO_THREAD_NO_CONTEXT (void *)1
25 
26 void *CRYPTO_THREAD_get_local_ex(CRYPTO_THREAD_LOCAL_KEY_ID id,
27                                  OSSL_LIB_CTX *ctx);
28 int CRYPTO_THREAD_set_local_ex(CRYPTO_THREAD_LOCAL_KEY_ID id,
29                                OSSL_LIB_CTX *ctx, void *data);
30 
31 # ifdef FIPS_MODULE
32 void CRYPTO_THREAD_clean_local_for_fips(void);
33 # endif
34 
35 #endif
36