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