Merge pull request #7284 from douzzer/20240229-mutex-initializer-global-refactor

20240229-mutex-initializer-global-refactor
This commit is contained in:
Eric Blankenhorn
2024-03-01 16:43:10 -06:00
committed by GitHub
18 changed files with 392 additions and 116 deletions

View File

@ -800,6 +800,7 @@
*/
#include <linux/mutex.h>
typedef struct mutex wolfSSL_Mutex;
#define WOLFSSL_MUTEX_INITIALIZER(lockname) __MUTEX_INITIALIZER(lockname)
/* prevent gcc's mm_malloc.h from being included, since it unconditionally
* includes stdlib.h, which is kernel-incompatible.

View File

@ -447,7 +447,6 @@ typedef struct SnifferServer {
struct SnifferServer* next; /* for list */
} SnifferServer;
/* Session Flags */
typedef struct Flags {
byte side; /* which end is current packet headed */
@ -569,13 +568,13 @@ typedef struct SnifferSession {
/* Sniffer Server List and mutex */
static THREAD_LS_T WOLFSSL_GLOBAL SnifferServer* ServerList = NULL;
#ifndef HAVE_C___ATOMIC
static WOLFSSL_GLOBAL wolfSSL_Mutex ServerListMutex;
static WOLFSSL_GLOBAL wolfSSL_Mutex ServerListMutex WOLFSSL_MUTEX_INITIALIZER_CLAUSE(ServerListMutex);
#endif
/* Session Hash Table, mutex, and count */
static THREAD_LS_T WOLFSSL_GLOBAL SnifferSession* SessionTable[HASH_SIZE];
#ifndef HAVE_C___ATOMIC
static WOLFSSL_GLOBAL wolfSSL_Mutex SessionMutex;
static WOLFSSL_GLOBAL wolfSSL_Mutex SessionMutex WOLFSSL_MUTEX_INITIALIZER_CLAUSE(SessionMutex);
#endif
static THREAD_LS_T WOLFSSL_GLOBAL int SessionCount = 0;
@ -584,7 +583,7 @@ static WOLFSSL_GLOBAL int MaxRecoveryMemory = -1;
/* per session max recovery memory */
#ifndef WOLFSSL_SNIFFER_NO_RECOVERY
/* Recovery of missed data switches and stats */
static WOLFSSL_GLOBAL wolfSSL_Mutex RecoveryMutex; /* for stats */
static WOLFSSL_GLOBAL wolfSSL_Mutex RecoveryMutex WOLFSSL_MUTEX_INITIALIZER_CLAUSE(RecoveryMutex); /* for stats */
/* # of sessions with missed data */
static WOLFSSL_GLOBAL word32 MissedDataSessions = 0;
#endif
@ -596,7 +595,7 @@ static WOLFSSL_GLOBAL void* ConnectionCbCtx = NULL;
#ifdef WOLFSSL_SNIFFER_STATS
/* Sessions Statistics */
static WOLFSSL_GLOBAL SSLStats SnifferStats;
static WOLFSSL_GLOBAL wolfSSL_Mutex StatsMutex;
static WOLFSSL_GLOBAL wolfSSL_Mutex StatsMutex WOLFSSL_MUTEX_INITIALIZER_CLAUSE(StatsMutex);
#endif
#ifdef WOLFSSL_SNIFFER_KEY_CALLBACK
@ -683,6 +682,7 @@ static int addKeyLogSnifferServerHelper(const char* address,
void ssl_InitSniffer_ex(int devId)
{
wolfSSL_Init();
#ifndef WOLFSSL_MUTEX_INITIALIZER
#ifndef HAVE_C___ATOMIC
wc_InitMutex(&ServerListMutex);
wc_InitMutex(&SessionMutex);
@ -694,6 +694,11 @@ void ssl_InitSniffer_ex(int devId)
XMEMSET(&SnifferStats, 0, sizeof(SSLStats));
wc_InitMutex(&StatsMutex);
#endif
#endif /* !WOLFSSL_MUTEX_INITIALIZER */
#ifdef WOLFSSL_SNIFFER_STATS
XMEMSET(&SnifferStats, 0, sizeof(SSLStats));
#endif
#if defined(WOLF_CRYPTO_CB) || defined(WOLFSSL_ASYNC_CRYPT)
CryptoDeviceId = devId;
#endif
@ -903,6 +908,7 @@ void ssl_FreeSniffer(void)
#endif /* WOLFSSL_SNIFFER_KEYLOGFILE */
#ifndef WOLFSSL_MUTEX_INITIALIZER
#ifndef WOLFSSL_SNIFFER_NO_RECOVERY
wc_FreeMutex(&RecoveryMutex);
#endif
@ -910,6 +916,7 @@ void ssl_FreeSniffer(void)
wc_FreeMutex(&SessionMutex);
wc_FreeMutex(&ServerListMutex);
#endif
#endif /* !WOLFSSL_MUTEX_INITIALIZER */
#ifdef WOLF_CRYPTO_CB
#ifdef HAVE_INTEL_QA_SYNC
@ -7235,7 +7242,7 @@ static THREAD_LS_T WOLFSSL_GLOBAL
SecretNode*
secretHashTable[WOLFSSL_SNIFFER_KEYLOGFILE_HASH_TABLE_SIZE] = {NULL};
#ifndef HAVE_C___ATOMIC
static WOLFSSL_GLOBAL wolfSSL_Mutex secretListMutex;
static WOLFSSL_GLOBAL wolfSSL_Mutex secretListMutex WOLFSSL_MUTEX_INITIALIZER_CLAUSE(secretListMutex);
#endif
static unsigned int secretHashFunction(unsigned char* clientRandom);

View File

@ -309,8 +309,10 @@ int wc_OBJ_sn2nid(const char *sn)
static WC_RNG globalRNG;
static int initGlobalRNG = 0;
static wolfSSL_Mutex globalRNGMutex;
static WC_MAYBE_UNUSED wolfSSL_Mutex globalRNGMutex WOLFSSL_MUTEX_INITIALIZER_CLAUSE(globalRNGMutex);
#ifndef WOLFSSL_MUTEX_INITIALIZER
static int globalRNGMutex_valid = 0;
#endif
#if defined(OPENSSL_EXTRA) && defined(HAVE_HASHDRBG)
static WOLFSSL_DRBG_CTX* gDrbgDefCtx = NULL;
@ -406,8 +408,10 @@ WC_RNG* wolfssl_make_rng(WC_RNG* rng, int* local)
* OPENSSL_EXTRA where RAND callbacks are not used */
#ifndef WOLFSSL_NO_OPENSSL_RAND_CB
static const WOLFSSL_RAND_METHOD* gRandMethods = NULL;
static wolfSSL_Mutex gRandMethodMutex WOLFSSL_MUTEX_INITIALIZER_CLAUSE(gRandMethodMutex);
#ifndef WOLFSSL_MUTEX_INITIALIZER
static int gRandMethodsInit = 0;
static wolfSSL_Mutex gRandMethodMutex;
#endif
#endif /* !WOLFSSL_NO_OPENSSL_RAND_CB */
#endif /* OPENSSL_EXTRA */
@ -1265,11 +1269,9 @@ int wolfSSL_send_session(WOLFSSL* ssl)
/* prevent multiple mutex initializations */
static volatile WOLFSSL_GLOBAL int initRefCount = 0;
#ifdef WOLFSSL_MUTEX_INITIALIZER
static WOLFSSL_GLOBAL wolfSSL_Mutex count_mutex = WOLFSSL_MUTEX_INITIALIZER;
#else
static WOLFSSL_GLOBAL wolfSSL_Mutex count_mutex; /* init ref count mutex */
static WOLFSSL_GLOBAL int count_mutex_valid = 0;
static WOLFSSL_GLOBAL wolfSSL_Mutex inits_count_mutex WOLFSSL_MUTEX_INITIALIZER_CLAUSE(inits_count_mutex); /* init ref count mutex */
#ifndef WOLFSSL_MUTEX_INITIALIZER
static WOLFSSL_GLOBAL int inits_count_mutex_valid = 0;
#endif
/* Create a new WOLFSSL_CTX struct and return the pointer to created struct.
@ -6164,8 +6166,10 @@ int AddCA(WOLFSSL_CERT_MANAGER* cm, DerBuffer** pDer, int type, int verify)
/* Client Cache */
/* uses session mutex */
static WOLFSSL_GLOBAL wolfSSL_Mutex clisession_mutex; /* ClientCache mutex */
static WOLFSSL_GLOBAL wolfSSL_Mutex clisession_mutex WOLFSSL_MUTEX_INITIALIZER_CLAUSE(clisession_mutex); /* ClientCache mutex */
#ifndef WOLFSSL_MUTEX_INITIALIZER
static WOLFSSL_GLOBAL int clisession_mutex_valid = 0;
#endif
#endif /* !NO_CLIENT_CACHE */
void EvictSessionFromCache(WOLFSSL_SESSION* session)
@ -6223,22 +6227,40 @@ int wolfSSL_Init(void)
WOLFSSL_ENTER("wolfSSL_Init");
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (inits_count_mutex_valid == 0) {
if (wc_InitMutex(&inits_count_mutex) != 0) {
WOLFSSL_MSG("Bad Init Mutex count");
return BAD_MUTEX_E;
}
else {
inits_count_mutex_valid = 1;
}
}
#endif /* !WOLFSSL_MUTEX_INITIALIZER */
if (wc_LockMutex(&inits_count_mutex) != 0) {
WOLFSSL_MSG("Bad Lock Mutex count");
return BAD_MUTEX_E;
}
if ((ret == WOLFSSL_SUCCESS) && (initRefCount == 0)) {
/* Initialize crypto for use with TLS connection */
#if FIPS_VERSION_GE(5,1)
ret = wolfCrypt_SetPrivateKeyReadEnable_fips(1, WC_KEYTYPE_ALL);
if (ret != 0)
return ret;
else
if (ret == 0)
ret = WOLFSSL_SUCCESS;
#endif
if (initRefCount == 0) {
/* Initialize crypto for use with TLS connection */
if (ret == WOLFSSL_SUCCESS) {
if (wolfCrypt_Init() != 0) {
WOLFSSL_MSG("Bad wolfCrypt Init");
ret = WC_INIT_E;
}
}
#ifdef HAVE_GLOBAL_RNG
#if defined(HAVE_GLOBAL_RNG) && !defined(WOLFSSL_MUTEX_INITIALIZER)
if (ret == WOLFSSL_SUCCESS) {
if (wc_InitMutex(&globalRNGMutex) != 0) {
WOLFSSL_MSG("Bad Init Mutex rng");
@ -6293,6 +6315,7 @@ int wolfSSL_Init(void)
}
#endif
#ifndef NO_CLIENT_CACHE
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (ret == WOLFSSL_SUCCESS) {
if (wc_InitMutex(&clisession_mutex) != 0) {
WOLFSSL_MSG("Bad Init Mutex session");
@ -6303,18 +6326,8 @@ int wolfSSL_Init(void)
}
}
#endif
#endif
#endif
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (ret == WOLFSSL_SUCCESS) {
if (wc_InitMutex(&count_mutex) != 0) {
WOLFSSL_MSG("Bad Init Mutex count");
ret = BAD_MUTEX_E;
}
else {
count_mutex_valid = 1;
}
}
#endif /* !WOLFSSL_MUTEX_INITIALIZER */
#if defined(OPENSSL_EXTRA) && defined(HAVE_ATEXIT)
/* OpenSSL registers cleanup using atexit */
if ((ret == WOLFSSL_SUCCESS) && (atexit(AtExitCleanup) != 0)) {
@ -6325,16 +6338,11 @@ int wolfSSL_Init(void)
}
if (ret == WOLFSSL_SUCCESS) {
if (wc_LockMutex(&count_mutex) != 0) {
WOLFSSL_MSG("Bad Lock Mutex count");
ret = BAD_MUTEX_E;
}
else {
initRefCount++;
wc_UnLockMutex(&count_mutex);
}
}
wc_UnLockMutex(&inits_count_mutex);
if (ret != WOLFSSL_SUCCESS) {
initRefCount = 1; /* Force cleanup */
(void)wolfSSL_Cleanup(); /* Ignore any error from cleanup */
@ -13620,9 +13628,9 @@ int wolfSSL_Cleanup(void)
WOLFSSL_ENTER("wolfSSL_Cleanup");
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (count_mutex_valid == 1) {
if (inits_count_mutex_valid == 1) {
#endif
if (wc_LockMutex(&count_mutex) != 0) {
if (wc_LockMutex(&inits_count_mutex) != 0) {
WOLFSSL_MSG("Bad Lock Mutex count");
return BAD_MUTEX_E;
}
@ -13637,9 +13645,9 @@ int wolfSSL_Cleanup(void)
}
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (count_mutex_valid == 1) {
if (inits_count_mutex_valid == 1) {
#endif
wc_UnLockMutex(&count_mutex);
wc_UnLockMutex(&inits_count_mutex);
#ifndef WOLFSSL_MUTEX_INITIALIZER
}
#endif
@ -13683,6 +13691,7 @@ int wolfSSL_Cleanup(void)
}
}
#ifndef NO_CLIENT_CACHE
#ifndef WOLFSSL_MUTEX_INITIALIZER
if ((clisession_mutex_valid == 1) &&
(wc_FreeMutex(&clisession_mutex) != 0)) {
if (ret == WOLFSSL_SUCCESS)
@ -13690,14 +13699,15 @@ int wolfSSL_Cleanup(void)
}
clisession_mutex_valid = 0;
#endif
#endif
#endif /* !NO_SESSION_CACHE */
#ifndef WOLFSSL_MUTEX_INITIALIZER
if ((count_mutex_valid == 1) && (wc_FreeMutex(&count_mutex) != 0)) {
if ((inits_count_mutex_valid == 1) && (wc_FreeMutex(&inits_count_mutex) != 0)) {
if (ret == WOLFSSL_SUCCESS)
ret = BAD_MUTEX_E;
}
count_mutex_valid = 0;
inits_count_mutex_valid = 0;
#endif
#ifdef OPENSSL_EXTRA
@ -13718,11 +13728,13 @@ int wolfSSL_Cleanup(void)
#endif
#ifdef HAVE_GLOBAL_RNG
#ifndef WOLFSSL_MUTEX_INITIALIZER
if ((globalRNGMutex_valid == 1) && (wc_FreeMutex(&globalRNGMutex) != 0)) {
if (ret == WOLFSSL_SUCCESS)
ret = BAD_MUTEX_E;
}
globalRNGMutex_valid = 0;
#endif /* !WOLFSSL_MUTEX_INITIALIZER */
#if defined(OPENSSL_EXTRA) && defined(HAVE_HASHDRBG)
wolfSSL_FIPS_drbg_free(gDrbgDefCtx);
@ -32949,6 +32961,7 @@ void wolfSSL_BUF_MEM_free(WOLFSSL_BUF_MEM* buf)
#if defined(OPENSSL_EXTRA) && !defined(WOLFSSL_NO_OPENSSL_RAND_CB)
static int wolfSSL_RAND_InitMutex(void)
{
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (gRandMethodsInit == 0) {
if (wc_InitMutex(&gRandMethodMutex) != 0) {
WOLFSSL_MSG("Bad Init Mutex rand methods");
@ -32956,6 +32969,7 @@ static int wolfSSL_RAND_InitMutex(void)
}
gRandMethodsInit = 1;
}
#endif
return 0;
}
#endif
@ -33327,8 +33341,10 @@ void wolfSSL_RAND_Cleanup(void)
wc_UnLockMutex(&gRandMethodMutex);
}
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (wc_FreeMutex(&gRandMethodMutex) == 0)
gRandMethodsInit = 0;
#endif
#endif
#ifdef HAVE_GLOBAL_RNG
if (wc_LockMutex(&globalRNGMutex) == 0) {

View File

@ -1488,7 +1488,7 @@ static int xil_mpi_import(mp_int *mpi,
/* cache (mp_int) of the curve parameters */
static ecc_curve_spec* ecc_curve_spec_cache[ECC_SET_COUNT];
#ifndef SINGLE_THREADED
static wolfSSL_Mutex ecc_curve_cache_mutex;
static wolfSSL_Mutex ecc_curve_cache_mutex WOLFSSL_MUTEX_INITIALIZER_CLAUSE(ecc_curve_cache_mutex);
#endif
#define DECLARE_CURVE_SPECS(intcount) ecc_curve_spec* curve = NULL
@ -1758,7 +1758,8 @@ static int wc_ecc_curve_load(const ecc_set_type* dp, ecc_curve_spec** pCurve,
int wc_ecc_curve_cache_init(void)
{
int ret = 0;
#if defined(ECC_CACHE_CURVE) && !defined(SINGLE_THREADED)
#if defined(ECC_CACHE_CURVE) && !defined(SINGLE_THREADED) && \
!defined(WOLFSSL_MUTEX_INITIALIZER)
ret = wc_InitMutex(&ecc_curve_cache_mutex);
#endif
return ret;
@ -1777,7 +1778,8 @@ void wc_ecc_curve_cache_free(void)
}
}
#if defined(ECC_CACHE_CURVE) && !defined(SINGLE_THREADED)
#if defined(ECC_CACHE_CURVE) && !defined(SINGLE_THREADED) && \
!defined(WOLFSSL_MUTEX_INITIALIZER)
wc_FreeMutex(&ecc_curve_cache_mutex);
#endif
}
@ -11598,8 +11600,10 @@ typedef struct {
static THREAD_LS_T fp_cache_t fp_cache[FP_ENTRIES];
#ifndef HAVE_THREAD_LS
static wolfSSL_Mutex ecc_fp_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(ecc_fp_lock);
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initMutex = 0; /* prevent multiple mutex inits */
static wolfSSL_Mutex ecc_fp_lock;
#endif
#endif /* HAVE_THREAD_LS */
/* simple table to help direct the generation of the LUT */
@ -12886,10 +12890,12 @@ int ecc_mul2add(ecc_point* A, mp_int* kA,
}
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initMutex == 0) { /* extra sanity check if wolfCrypt_Init not called */
wc_InitMutex(&ecc_fp_lock);
initMutex = 1;
}
#endif
if (wc_LockMutex(&ecc_fp_lock) != 0) {
#ifdef WOLFSSL_SMALL_STACK
@ -13044,10 +13050,12 @@ int wc_ecc_mulmod_ex(const mp_int* k, ecc_point *G, ecc_point *R, mp_int* a,
}
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initMutex == 0) { /* extra sanity check if wolfCrypt_Init not called */
wc_InitMutex(&ecc_fp_lock);
initMutex = 1;
}
#endif
if (wc_LockMutex(&ecc_fp_lock) != 0) {
err = BAD_MUTEX_E;
@ -13219,10 +13227,12 @@ int wc_ecc_mulmod_ex2(const mp_int* k, ecc_point *G, ecc_point *R, mp_int* a,
}
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initMutex == 0) { /* extra sanity check if wolfCrypt_Init not called */
wc_InitMutex(&ecc_fp_lock);
initMutex = 1;
}
#endif
if (wc_LockMutex(&ecc_fp_lock) != 0) {
err = BAD_MUTEX_E;
@ -13379,12 +13389,14 @@ void wc_ecc_fp_init(void)
{
#ifndef WOLFSSL_SP_MATH
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initMutex == 0) {
wc_InitMutex(&ecc_fp_lock);
initMutex = 1;
}
#endif
#endif
#endif
}
@ -13394,10 +13406,12 @@ void wc_ecc_fp_free(void)
{
#if !defined(WOLFSSL_SP_MATH)
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initMutex == 0) { /* extra sanity check if wolfCrypt_Init not called */
wc_InitMutex(&ecc_fp_lock);
initMutex = 1;
}
#endif
if (wc_LockMutex(&ecc_fp_lock) == 0) {
#endif /* HAVE_THREAD_LS */
@ -13406,8 +13420,10 @@ void wc_ecc_fp_free(void)
#ifndef HAVE_THREAD_LS
wc_UnLockMutex(&ecc_fp_lock);
#ifndef WOLFSSL_MUTEX_INITIALIZER
wc_FreeMutex(&ecc_fp_lock);
initMutex = 0;
#endif
}
#endif /* HAVE_THREAD_LS */
#endif

View File

@ -818,7 +818,7 @@ static struct wc_error_queue* wc_current_node;
static void* wc_error_heap;
/* mutex for list operation protection */
static wolfSSL_Mutex wc_error_mutex;
static wolfSSL_Mutex wc_error_mutex WOLFSSL_MUTEX_INITIALIZER_CLAUSE(wc_error_mutex);
#define ERRQ_MUTEX_INIT() wc_InitMutex(&wc_error_mutex)
#define ERRQ_MUTEX_FREE() wc_FreeMutex(&wc_error_mutex)
#define ERRQ_LOCK() wc_LockMutex(&wc_error_mutex)
@ -827,10 +827,12 @@ static wolfSSL_Mutex wc_error_mutex;
/* Internal function that is called by wolfCrypt_Init() */
int wc_LoggingInit(void)
{
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (ERRQ_MUTEX_INIT() != 0) {
WOLFSSL_MSG("Bad Init Mutex");
return BAD_MUTEX_E;
}
#endif
wc_errors_count = 0;
wc_errors = NULL;
wc_current_node = NULL;
@ -845,10 +847,12 @@ int wc_LoggingCleanup(void)
/* clear logging entries */
wc_ClearErrorNodes();
/* free mutex */
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (ERRQ_MUTEX_FREE() != 0) {
WOLFSSL_MSG("Bad Mutex free");
return BAD_MUTEX_E;
}
#endif
return 0;
}

View File

@ -120,7 +120,7 @@ int wolfSSL_GetAllocators(wolfSSL_Malloc_cb* mf,
}
#ifdef WOLFSSL_MEM_FAIL_COUNT
static wolfSSL_Mutex memFailMutex;
static wolfSSL_Mutex memFailMutex WOLFSSL_MUTEX_INITIALIZER_CLAUSE(memFailMutex);
int mem_fail_allocs = 0;
int mem_fail_frees = 0;
int mem_fail_cnt = 0;
@ -128,7 +128,9 @@ int mem_fail_cnt = 0;
void wc_MemFailCount_Init()
{
char* cnt;
#ifndef WOLFSSL_MUTEX_INITIALIZER
wc_InitMutex(&memFailMutex);
#endif
cnt = getenv("MEM_FAIL_CNT");
if (cnt != NULL) {
fprintf(stderr, "MemFailCount At: %d\n", mem_fail_cnt);
@ -158,7 +160,9 @@ static void wc_MemFailCount_FreeMem(void)
}
void wc_MemFailCount_Free()
{
#ifndef WOLFSSL_MUTEX_INITIALIZER
wc_FreeMutex(&memFailMutex);
#endif
fprintf(stderr, "MemFailCount Total: %d\n", mem_fail_allocs);
fprintf(stderr, "MemFailCount Frees: %d\n", mem_fail_frees);
}
@ -196,7 +200,7 @@ static MemZero memZero[WOLFSSL_MEM_CHECK_ZERO_CACHE_LEN];
*/
static int nextIdx = -1;
/* Mutex to protect modifying list of addresses to check. */
static wolfSSL_Mutex zeroMutex;
static wolfSSL_Mutex zeroMutex WOLFSSL_MUTEX_INITIALIZER_CLAUSE(zeroMutex);
/* Initialize the table of addresses and the mutex.
*/
@ -205,7 +209,9 @@ void wc_MemZero_Init()
/* Clear the table to more easily see what is valid. */
XMEMSET(memZero, 0, sizeof(memZero));
/* Initialize mutex. */
#ifndef WOLFSSL_MUTEX_INITIALIZER
wc_InitMutex(&zeroMutex);
#endif
/* Next index is first entry. */
nextIdx = 0;
}
@ -215,7 +221,9 @@ void wc_MemZero_Init()
void wc_MemZero_Free()
{
/* Free mutex. */
#ifndef WOLFSSL_MUTEX_INITIALIZER
wc_FreeMutex(&zeroMutex);
#endif
/* Make sure we checked all addresses. */
if (nextIdx > 0) {
int i;

View File

@ -92,9 +92,12 @@ This library contains implementation for the random number generator.
#elif defined(HAVE_WNR)
#include <wnr.h>
#include <wolfssl/wolfcrypt/logging.h>
wolfSSL_Mutex wnr_mutex; /* global netRandom mutex */
wolfSSL_Mutex wnr_mutex WOLFSSL_MUTEX_INITIALIZER_CLAUSE(wnr_mutex); /* global netRandom mutex */
int wnr_timeout = 0; /* entropy timeout, milliseconds */
int wnr_mutex_init = 0; /* flag for mutex init */
#ifndef WOLFSSL_MUTEX_INITIALIZER
int wnr_mutex_inited = 0; /* flag for mutex init */
#endif
int wnr_inited = 0; /* flag for whether wc_InitNetRandom() has been called */
wnr_context* wnr_ctx; /* global netRandom context */
#elif defined(FREESCALE_KSDK_2_0_TRNG)
#include "fsl_trng.h"
@ -1376,7 +1379,7 @@ static int Entropy_Condition(byte* output, word32 len, byte* noise,
/* Mutex to prevent multiple callers requesting entropy operations at the
* same time.
*/
static wolfSSL_Mutex entropy_mutex;
static wolfSSL_Mutex entropy_mutex WOLFSSL_MUTEX_INITIALIZER_CLAUSE(entropy_mutex);
/* Get entropy of specified strength.
*
@ -1503,7 +1506,7 @@ int Entropy_Init()
/* Check whether initialization has succeeded before. */
if (!entropy_memuse_initialized) {
#ifndef SINGLE_THREADED
#if !defined(SINGLE_THREADED) && !defined(WOLFSSL_MUTEX_INITIALIZER)
ret = wc_InitMutex(&entropy_mutex);
#endif
if (ret == 0) {
@ -1540,7 +1543,7 @@ void Entropy_Final()
if (entropy_memuse_initialized) {
/* Dispose of the SHA3-356 hash object. */
wc_Sha3_256_Free(&entropyHash);
#ifndef SINGLE_THREADED
#if !defined(SINGLE_THREADED) && !defined(WOLFSSL_MUTEX_INITIALIZER)
wc_FreeMutex(&entropy_mutex);
#endif
/* Clear health test data. */
@ -2277,10 +2280,13 @@ static int wc_RNG_HealthTestLocal(int reseed, void* heap, int devId)
*/
int wc_InitNetRandom(const char* configFile, wnr_hmac_key hmac_cb, int timeout)
{
int ret;
if (configFile == NULL || timeout < 0)
return BAD_FUNC_ARG;
if (wnr_mutex_init > 0) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (wnr_mutex_inited > 0) {
WOLFSSL_MSG("netRandom context already created, skipping");
return 0;
}
@ -2289,7 +2295,14 @@ int wc_InitNetRandom(const char* configFile, wnr_hmac_key hmac_cb, int timeout)
WOLFSSL_MSG("Bad Init Mutex wnr_mutex");
return BAD_MUTEX_E;
}
wnr_mutex_init = 1;
wnr_mutex_inited = 1;
#endif
if (wnr_inited > 0) {
WOLFSSL_MSG("netRandom context already created, skipping");
return 0;
}
if (wc_LockMutex(&wnr_mutex) != 0) {
WOLFSSL_MSG("Bad Lock Mutex wnr_mutex");
@ -2302,7 +2315,8 @@ int wc_InitNetRandom(const char* configFile, wnr_hmac_key hmac_cb, int timeout)
/* create global wnr_context struct */
if (wnr_create(&wnr_ctx) != WNR_ERROR_NONE) {
WOLFSSL_MSG("Error creating global netRandom context");
return RNG_FAILURE_E;
ret = RNG_FAILURE_E;
goto out;
}
/* load config file */
@ -2310,7 +2324,8 @@ int wc_InitNetRandom(const char* configFile, wnr_hmac_key hmac_cb, int timeout)
WOLFSSL_MSG("Error loading config file into netRandom context");
wnr_destroy(wnr_ctx);
wnr_ctx = NULL;
return RNG_FAILURE_E;
ret = RNG_FAILURE_E;
goto out;
}
/* create/init polling mechanism */
@ -2318,7 +2333,8 @@ int wc_InitNetRandom(const char* configFile, wnr_hmac_key hmac_cb, int timeout)
WOLFSSL_MSG("Error initializing netRandom polling mechanism");
wnr_destroy(wnr_ctx);
wnr_ctx = NULL;
return RNG_FAILURE_E;
ret = RNG_FAILURE_E;
goto out;
}
/* validate config, set HMAC callback (optional) */
@ -2327,12 +2343,17 @@ int wc_InitNetRandom(const char* configFile, wnr_hmac_key hmac_cb, int timeout)
wnr_destroy(wnr_ctx);
wnr_ctx = NULL;
wnr_poll_destroy();
return RNG_FAILURE_E;
ret = RNG_FAILURE_E;
goto out;
}
wnr_inited = 1;
out:
wc_UnLockMutex(&wnr_mutex);
return 0;
return ret;
}
/*
@ -2341,7 +2362,7 @@ int wc_InitNetRandom(const char* configFile, wnr_hmac_key hmac_cb, int timeout)
*/
int wc_FreeNetRandom(void)
{
if (wnr_mutex_init > 0) {
if (wnr_inited > 0) {
if (wc_LockMutex(&wnr_mutex) != 0) {
WOLFSSL_MSG("Bad Lock Mutex wnr_mutex");
@ -2356,8 +2377,12 @@ int wc_FreeNetRandom(void)
wc_UnLockMutex(&wnr_mutex);
#ifndef WOLFSSL_MUTEX_INITIALIZER
wc_FreeMutex(&wnr_mutex);
wnr_mutex_init = 0;
wnr_mutex_inited = 0;
#endif
wnr_inited = 0;
}
return 0;

View File

@ -74076,8 +74076,10 @@ static THREAD_LS_T int sp_cache_256_last = -1;
static THREAD_LS_T int sp_cache_256_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_256 = 0;
static wolfSSL_Mutex sp_cache_256_lock;
#endif
static wolfSSL_Mutex sp_cache_256_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_256_lock);
#endif
/* Get the cache entry for the point.
@ -74175,10 +74177,12 @@ static int sp_256_ecc_mulmod_8(sp_point_256* r, const sp_point_256* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_256 == 0) {
wc_InitMutex(&sp_cache_256_lock);
initCacheMutex_256 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_256_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -74496,8 +74500,10 @@ static THREAD_LS_T int sp_cache_256_last = -1;
static THREAD_LS_T int sp_cache_256_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_256 = 0;
static wolfSSL_Mutex sp_cache_256_lock;
#endif
static wolfSSL_Mutex sp_cache_256_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_256_lock);
#endif
/* Get the cache entry for the point.
@ -74595,10 +74601,12 @@ static int sp_256_ecc_mulmod_8(sp_point_256* r, const sp_point_256* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_256 == 0) {
wc_InitMutex(&sp_cache_256_lock);
initCacheMutex_256 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_256_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -91837,8 +91845,10 @@ static THREAD_LS_T int sp_cache_384_last = -1;
static THREAD_LS_T int sp_cache_384_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_384 = 0;
static wolfSSL_Mutex sp_cache_384_lock;
#endif
static wolfSSL_Mutex sp_cache_384_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_384_lock);
#endif
/* Get the cache entry for the point.
@ -91936,10 +91946,12 @@ static int sp_384_ecc_mulmod_12(sp_point_384* r, const sp_point_384* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_384 == 0) {
wc_InitMutex(&sp_cache_384_lock);
initCacheMutex_384 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_384_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -92273,8 +92285,10 @@ static THREAD_LS_T int sp_cache_384_last = -1;
static THREAD_LS_T int sp_cache_384_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_384 = 0;
static wolfSSL_Mutex sp_cache_384_lock;
#endif
static wolfSSL_Mutex sp_cache_384_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_384_lock);
#endif
/* Get the cache entry for the point.
@ -92372,10 +92386,12 @@ static int sp_384_ecc_mulmod_12(sp_point_384* r, const sp_point_384* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_384 == 0) {
wc_InitMutex(&sp_cache_384_lock);
initCacheMutex_384 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_384_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -119032,8 +119048,10 @@ static THREAD_LS_T int sp_cache_521_last = -1;
static THREAD_LS_T int sp_cache_521_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_521 = 0;
static wolfSSL_Mutex sp_cache_521_lock;
#endif
static wolfSSL_Mutex sp_cache_521_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_521_lock);
#endif
/* Get the cache entry for the point.
@ -119131,10 +119149,12 @@ static int sp_521_ecc_mulmod_17(sp_point_521* r, const sp_point_521* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_521 == 0) {
wc_InitMutex(&sp_cache_521_lock);
initCacheMutex_521 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_521_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -119488,8 +119508,10 @@ static THREAD_LS_T int sp_cache_521_last = -1;
static THREAD_LS_T int sp_cache_521_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_521 = 0;
static wolfSSL_Mutex sp_cache_521_lock;
#endif
static wolfSSL_Mutex sp_cache_521_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_521_lock);
#endif
/* Get the cache entry for the point.
@ -119587,10 +119609,12 @@ static int sp_521_ecc_mulmod_17(sp_point_521* r, const sp_point_521* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_521 == 0) {
wc_InitMutex(&sp_cache_521_lock);
initCacheMutex_521 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_521_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -148716,8 +148740,10 @@ static THREAD_LS_T int sp_cache_1024_last = -1;
static THREAD_LS_T int sp_cache_1024_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_1024 = 0;
static wolfSSL_Mutex sp_cache_1024_lock;
#endif
static wolfSSL_Mutex sp_cache_1024_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_1024_lock);
#endif
/* Get the cache entry for the point.
@ -148815,10 +148841,12 @@ static int sp_1024_ecc_mulmod_32(sp_point_1024* r, const sp_point_1024* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_1024 == 0) {
wc_InitMutex(&sp_cache_1024_lock);
initCacheMutex_1024 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_1024_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -149071,8 +149099,10 @@ static THREAD_LS_T int sp_cache_1024_last = -1;
static THREAD_LS_T int sp_cache_1024_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_1024 = 0;
static wolfSSL_Mutex sp_cache_1024_lock;
#endif
static wolfSSL_Mutex sp_cache_1024_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_1024_lock);
#endif
/* Get the cache entry for the point.
@ -149170,10 +149200,12 @@ static int sp_1024_ecc_mulmod_32(sp_point_1024* r, const sp_point_1024* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_1024 == 0) {
wc_InitMutex(&sp_cache_1024_lock);
initCacheMutex_1024 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_1024_lock) != 0) {
err = BAD_MUTEX_E;
}

View File

@ -24939,8 +24939,10 @@ static THREAD_LS_T int sp_cache_256_last = -1;
static THREAD_LS_T int sp_cache_256_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_256 = 0;
static wolfSSL_Mutex sp_cache_256_lock;
#endif
static wolfSSL_Mutex sp_cache_256_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_256_lock);
#endif
/* Get the cache entry for the point.
@ -25038,10 +25040,12 @@ static int sp_256_ecc_mulmod_4(sp_point_256* r, const sp_point_256* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_256 == 0) {
wc_InitMutex(&sp_cache_256_lock);
initCacheMutex_256 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_256_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -25368,8 +25372,10 @@ static THREAD_LS_T int sp_cache_256_last = -1;
static THREAD_LS_T int sp_cache_256_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_256 = 0;
static wolfSSL_Mutex sp_cache_256_lock;
#endif
static wolfSSL_Mutex sp_cache_256_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_256_lock);
#endif
/* Get the cache entry for the point.
@ -25467,10 +25473,12 @@ static int sp_256_ecc_mulmod_4(sp_point_256* r, const sp_point_256* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_256 == 0) {
wc_InitMutex(&sp_cache_256_lock);
initCacheMutex_256 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_256_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -45888,8 +45896,10 @@ static THREAD_LS_T int sp_cache_384_last = -1;
static THREAD_LS_T int sp_cache_384_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_384 = 0;
static wolfSSL_Mutex sp_cache_384_lock;
#endif
static wolfSSL_Mutex sp_cache_384_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_384_lock);
#endif
/* Get the cache entry for the point.
@ -45987,10 +45997,12 @@ static int sp_384_ecc_mulmod_6(sp_point_384* r, const sp_point_384* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_384 == 0) {
wc_InitMutex(&sp_cache_384_lock);
initCacheMutex_384 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_384_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -46317,8 +46329,10 @@ static THREAD_LS_T int sp_cache_384_last = -1;
static THREAD_LS_T int sp_cache_384_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_384 = 0;
static wolfSSL_Mutex sp_cache_384_lock;
#endif
static wolfSSL_Mutex sp_cache_384_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_384_lock);
#endif
/* Get the cache entry for the point.
@ -46416,10 +46430,12 @@ static int sp_384_ecc_mulmod_6(sp_point_384* r, const sp_point_384* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_384 == 0) {
wc_InitMutex(&sp_cache_384_lock);
initCacheMutex_384 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_384_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -74312,8 +74328,10 @@ static THREAD_LS_T int sp_cache_521_last = -1;
static THREAD_LS_T int sp_cache_521_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_521 = 0;
static wolfSSL_Mutex sp_cache_521_lock;
#endif
static wolfSSL_Mutex sp_cache_521_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_521_lock);
#endif
/* Get the cache entry for the point.
@ -74411,10 +74429,12 @@ static int sp_521_ecc_mulmod_9(sp_point_521* r, const sp_point_521* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_521 == 0) {
wc_InitMutex(&sp_cache_521_lock);
initCacheMutex_521 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_521_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -74759,8 +74779,10 @@ static THREAD_LS_T int sp_cache_521_last = -1;
static THREAD_LS_T int sp_cache_521_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_521 = 0;
static wolfSSL_Mutex sp_cache_521_lock;
#endif
static wolfSSL_Mutex sp_cache_521_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_521_lock);
#endif
/* Get the cache entry for the point.
@ -74858,10 +74880,12 @@ static int sp_521_ecc_mulmod_9(sp_point_521* r, const sp_point_521* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_521 == 0) {
wc_InitMutex(&sp_cache_521_lock);
initCacheMutex_521 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_521_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -118234,8 +118258,10 @@ static THREAD_LS_T int sp_cache_1024_last = -1;
static THREAD_LS_T int sp_cache_1024_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_1024 = 0;
static wolfSSL_Mutex sp_cache_1024_lock;
#endif
static wolfSSL_Mutex sp_cache_1024_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_1024_lock);
#endif
/* Get the cache entry for the point.
@ -118333,10 +118359,12 @@ static int sp_1024_ecc_mulmod_16(sp_point_1024* r, const sp_point_1024* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_1024 == 0) {
wc_InitMutex(&sp_cache_1024_lock);
initCacheMutex_1024 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_1024_lock) != 0) {
err = BAD_MUTEX_E;
}

View File

@ -101578,8 +101578,10 @@ static THREAD_LS_T int sp_cache_256_last = -1;
static THREAD_LS_T int sp_cache_256_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_256 = 0;
static wolfSSL_Mutex sp_cache_256_lock;
#endif
static wolfSSL_Mutex sp_cache_256_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_256_lock);
#endif
/* Get the cache entry for the point.
@ -101677,10 +101679,12 @@ static int sp_256_ecc_mulmod_8(sp_point_256* r, const sp_point_256* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_256 == 0) {
wc_InitMutex(&sp_cache_256_lock);
initCacheMutex_256 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_256_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -101998,8 +102002,10 @@ static THREAD_LS_T int sp_cache_256_last = -1;
static THREAD_LS_T int sp_cache_256_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_256 = 0;
static wolfSSL_Mutex sp_cache_256_lock;
#endif
static wolfSSL_Mutex sp_cache_256_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_256_lock);
#endif
/* Get the cache entry for the point.
@ -102097,10 +102103,12 @@ static int sp_256_ecc_mulmod_8(sp_point_256* r, const sp_point_256* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_256 == 0) {
wc_InitMutex(&sp_cache_256_lock);
initCacheMutex_256 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_256_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -112446,8 +112454,10 @@ static THREAD_LS_T int sp_cache_384_last = -1;
static THREAD_LS_T int sp_cache_384_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_384 = 0;
static wolfSSL_Mutex sp_cache_384_lock;
#endif
static wolfSSL_Mutex sp_cache_384_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_384_lock);
#endif
/* Get the cache entry for the point.
@ -112545,10 +112555,12 @@ static int sp_384_ecc_mulmod_12(sp_point_384* r, const sp_point_384* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_384 == 0) {
wc_InitMutex(&sp_cache_384_lock);
initCacheMutex_384 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_384_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -112882,8 +112894,10 @@ static THREAD_LS_T int sp_cache_384_last = -1;
static THREAD_LS_T int sp_cache_384_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_384 = 0;
static wolfSSL_Mutex sp_cache_384_lock;
#endif
static wolfSSL_Mutex sp_cache_384_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_384_lock);
#endif
/* Get the cache entry for the point.
@ -112981,10 +112995,12 @@ static int sp_384_ecc_mulmod_12(sp_point_384* r, const sp_point_384* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_384 == 0) {
wc_InitMutex(&sp_cache_384_lock);
initCacheMutex_384 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_384_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -126089,8 +126105,10 @@ static THREAD_LS_T int sp_cache_521_last = -1;
static THREAD_LS_T int sp_cache_521_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_521 = 0;
static wolfSSL_Mutex sp_cache_521_lock;
#endif
static wolfSSL_Mutex sp_cache_521_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_521_lock);
#endif
/* Get the cache entry for the point.
@ -126188,10 +126206,12 @@ static int sp_521_ecc_mulmod_17(sp_point_521* r, const sp_point_521* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_521 == 0) {
wc_InitMutex(&sp_cache_521_lock);
initCacheMutex_521 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_521_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -126545,8 +126565,10 @@ static THREAD_LS_T int sp_cache_521_last = -1;
static THREAD_LS_T int sp_cache_521_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_521 = 0;
static wolfSSL_Mutex sp_cache_521_lock;
#endif
static wolfSSL_Mutex sp_cache_521_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_521_lock);
#endif
/* Get the cache entry for the point.
@ -126644,10 +126666,12 @@ static int sp_521_ecc_mulmod_17(sp_point_521* r, const sp_point_521* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_521 == 0) {
wc_InitMutex(&sp_cache_521_lock);
initCacheMutex_521 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_521_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -210707,8 +210731,10 @@ static THREAD_LS_T int sp_cache_1024_last = -1;
static THREAD_LS_T int sp_cache_1024_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_1024 = 0;
static wolfSSL_Mutex sp_cache_1024_lock;
#endif
static wolfSSL_Mutex sp_cache_1024_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_1024_lock);
#endif
/* Get the cache entry for the point.
@ -210806,10 +210832,12 @@ static int sp_1024_ecc_mulmod_32(sp_point_1024* r, const sp_point_1024* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_1024 == 0) {
wc_InitMutex(&sp_cache_1024_lock);
initCacheMutex_1024 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_1024_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -211062,8 +211090,10 @@ static THREAD_LS_T int sp_cache_1024_last = -1;
static THREAD_LS_T int sp_cache_1024_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_1024 = 0;
static wolfSSL_Mutex sp_cache_1024_lock;
#endif
static wolfSSL_Mutex sp_cache_1024_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_1024_lock);
#endif
/* Get the cache entry for the point.
@ -211161,10 +211191,12 @@ static int sp_1024_ecc_mulmod_32(sp_point_1024* r, const sp_point_1024* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_1024 == 0) {
wc_InitMutex(&sp_cache_1024_lock);
initCacheMutex_1024 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_1024_lock) != 0) {
err = BAD_MUTEX_E;
}

View File

@ -23120,8 +23120,10 @@ static THREAD_LS_T int sp_cache_256_last = -1;
static THREAD_LS_T int sp_cache_256_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_256 = 0;
static wolfSSL_Mutex sp_cache_256_lock;
#endif
static wolfSSL_Mutex sp_cache_256_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_256_lock);
#endif
/* Get the cache entry for the point.
@ -23219,10 +23221,12 @@ static int sp_256_ecc_mulmod_9(sp_point_256* r, const sp_point_256* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_256 == 0) {
wc_InitMutex(&sp_cache_256_lock);
initCacheMutex_256 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_256_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -30674,8 +30678,10 @@ static THREAD_LS_T int sp_cache_384_last = -1;
static THREAD_LS_T int sp_cache_384_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_384 = 0;
static wolfSSL_Mutex sp_cache_384_lock;
#endif
static wolfSSL_Mutex sp_cache_384_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_384_lock);
#endif
/* Get the cache entry for the point.
@ -30773,10 +30779,12 @@ static int sp_384_ecc_mulmod_15(sp_point_384* r, const sp_point_384* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_384 == 0) {
wc_InitMutex(&sp_cache_384_lock);
initCacheMutex_384 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_384_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -38277,8 +38285,10 @@ static THREAD_LS_T int sp_cache_521_last = -1;
static THREAD_LS_T int sp_cache_521_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_521 = 0;
static wolfSSL_Mutex sp_cache_521_lock;
#endif
static wolfSSL_Mutex sp_cache_521_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_521_lock);
#endif
/* Get the cache entry for the point.
@ -38376,10 +38386,12 @@ static int sp_521_ecc_mulmod_21(sp_point_521* r, const sp_point_521* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_521 == 0) {
wc_InitMutex(&sp_cache_521_lock);
initCacheMutex_521 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_521_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -46862,8 +46874,10 @@ static THREAD_LS_T int sp_cache_1024_last = -1;
static THREAD_LS_T int sp_cache_1024_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_1024 = 0;
static wolfSSL_Mutex sp_cache_1024_lock;
#endif
static wolfSSL_Mutex sp_cache_1024_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_1024_lock);
#endif
/* Get the cache entry for the point.
@ -46961,10 +46975,12 @@ static int sp_1024_ecc_mulmod_42(sp_point_1024* r, const sp_point_1024* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_1024 == 0) {
wc_InitMutex(&sp_cache_1024_lock);
initCacheMutex_1024 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_1024_lock) != 0) {
err = BAD_MUTEX_E;
}

View File

@ -24027,8 +24027,10 @@ static THREAD_LS_T int sp_cache_256_last = -1;
static THREAD_LS_T int sp_cache_256_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_256 = 0;
static wolfSSL_Mutex sp_cache_256_lock;
#endif
static wolfSSL_Mutex sp_cache_256_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_256_lock);
#endif
/* Get the cache entry for the point.
@ -24126,10 +24128,12 @@ static int sp_256_ecc_mulmod_5(sp_point_256* r, const sp_point_256* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_256 == 0) {
wc_InitMutex(&sp_cache_256_lock);
initCacheMutex_256 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_256_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -31008,8 +31012,10 @@ static THREAD_LS_T int sp_cache_384_last = -1;
static THREAD_LS_T int sp_cache_384_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_384 = 0;
static wolfSSL_Mutex sp_cache_384_lock;
#endif
static wolfSSL_Mutex sp_cache_384_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_384_lock);
#endif
/* Get the cache entry for the point.
@ -31107,10 +31113,12 @@ static int sp_384_ecc_mulmod_7(sp_point_384* r, const sp_point_384* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_384 == 0) {
wc_InitMutex(&sp_cache_384_lock);
initCacheMutex_384 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_384_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -38449,8 +38457,10 @@ static THREAD_LS_T int sp_cache_521_last = -1;
static THREAD_LS_T int sp_cache_521_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_521 = 0;
static wolfSSL_Mutex sp_cache_521_lock;
#endif
static wolfSSL_Mutex sp_cache_521_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_521_lock);
#endif
/* Get the cache entry for the point.
@ -38548,10 +38558,12 @@ static int sp_521_ecc_mulmod_9(sp_point_521* r, const sp_point_521* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_521 == 0) {
wc_InitMutex(&sp_cache_521_lock);
initCacheMutex_521 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_521_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -46216,8 +46228,10 @@ static THREAD_LS_T int sp_cache_1024_last = -1;
static THREAD_LS_T int sp_cache_1024_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_1024 = 0;
static wolfSSL_Mutex sp_cache_1024_lock;
#endif
static wolfSSL_Mutex sp_cache_1024_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_1024_lock);
#endif
/* Get the cache entry for the point.
@ -46315,10 +46329,12 @@ static int sp_1024_ecc_mulmod_18(sp_point_1024* r, const sp_point_1024* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_1024 == 0) {
wc_InitMutex(&sp_cache_1024_lock);
initCacheMutex_1024 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_1024_lock) != 0) {
err = BAD_MUTEX_E;
}

View File

@ -36403,8 +36403,10 @@ static THREAD_LS_T int sp_cache_256_last = -1;
static THREAD_LS_T int sp_cache_256_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_256 = 0;
static wolfSSL_Mutex sp_cache_256_lock;
#endif
static wolfSSL_Mutex sp_cache_256_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_256_lock);
#endif
/* Get the cache entry for the point.
@ -36502,10 +36504,12 @@ static int sp_256_ecc_mulmod_8(sp_point_256* r, const sp_point_256* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_256 == 0) {
wc_InitMutex(&sp_cache_256_lock);
initCacheMutex_256 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_256_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -36823,8 +36827,10 @@ static THREAD_LS_T int sp_cache_256_last = -1;
static THREAD_LS_T int sp_cache_256_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_256 = 0;
static wolfSSL_Mutex sp_cache_256_lock;
#endif
static wolfSSL_Mutex sp_cache_256_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_256_lock);
#endif
/* Get the cache entry for the point.
@ -36922,10 +36928,12 @@ static int sp_256_ecc_mulmod_8(sp_point_256* r, const sp_point_256* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_256 == 0) {
wc_InitMutex(&sp_cache_256_lock);
initCacheMutex_256 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_256_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -46272,8 +46280,10 @@ static THREAD_LS_T int sp_cache_384_last = -1;
static THREAD_LS_T int sp_cache_384_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_384 = 0;
static wolfSSL_Mutex sp_cache_384_lock;
#endif
static wolfSSL_Mutex sp_cache_384_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_384_lock);
#endif
/* Get the cache entry for the point.
@ -46371,10 +46381,12 @@ static int sp_384_ecc_mulmod_12(sp_point_384* r, const sp_point_384* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_384 == 0) {
wc_InitMutex(&sp_cache_384_lock);
initCacheMutex_384 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_384_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -46708,8 +46720,10 @@ static THREAD_LS_T int sp_cache_384_last = -1;
static THREAD_LS_T int sp_cache_384_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_384 = 0;
static wolfSSL_Mutex sp_cache_384_lock;
#endif
static wolfSSL_Mutex sp_cache_384_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_384_lock);
#endif
/* Get the cache entry for the point.
@ -46807,10 +46821,12 @@ static int sp_384_ecc_mulmod_12(sp_point_384* r, const sp_point_384* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_384 == 0) {
wc_InitMutex(&sp_cache_384_lock);
initCacheMutex_384 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_384_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -58262,8 +58278,10 @@ static THREAD_LS_T int sp_cache_521_last = -1;
static THREAD_LS_T int sp_cache_521_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_521 = 0;
static wolfSSL_Mutex sp_cache_521_lock;
#endif
static wolfSSL_Mutex sp_cache_521_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_521_lock);
#endif
/* Get the cache entry for the point.
@ -58361,10 +58379,12 @@ static int sp_521_ecc_mulmod_17(sp_point_521* r, const sp_point_521* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_521 == 0) {
wc_InitMutex(&sp_cache_521_lock);
initCacheMutex_521 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_521_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -58718,8 +58738,10 @@ static THREAD_LS_T int sp_cache_521_last = -1;
static THREAD_LS_T int sp_cache_521_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_521 = 0;
static wolfSSL_Mutex sp_cache_521_lock;
#endif
static wolfSSL_Mutex sp_cache_521_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_521_lock);
#endif
/* Get the cache entry for the point.
@ -58817,10 +58839,12 @@ static int sp_521_ecc_mulmod_17(sp_point_521* r, const sp_point_521* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_521 == 0) {
wc_InitMutex(&sp_cache_521_lock);
initCacheMutex_521 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_521_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -72587,8 +72611,10 @@ static THREAD_LS_T int sp_cache_1024_last = -1;
static THREAD_LS_T int sp_cache_1024_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_1024 = 0;
static wolfSSL_Mutex sp_cache_1024_lock;
#endif
static wolfSSL_Mutex sp_cache_1024_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_1024_lock);
#endif
/* Get the cache entry for the point.
@ -72686,10 +72712,12 @@ static int sp_1024_ecc_mulmod_32(sp_point_1024* r, const sp_point_1024* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_1024 == 0) {
wc_InitMutex(&sp_cache_1024_lock);
initCacheMutex_1024 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_1024_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -72942,8 +72970,10 @@ static THREAD_LS_T int sp_cache_1024_last = -1;
static THREAD_LS_T int sp_cache_1024_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_1024 = 0;
static wolfSSL_Mutex sp_cache_1024_lock;
#endif
static wolfSSL_Mutex sp_cache_1024_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_1024_lock);
#endif
/* Get the cache entry for the point.
@ -73041,10 +73071,12 @@ static int sp_1024_ecc_mulmod_32(sp_point_1024* r, const sp_point_1024* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_1024 == 0) {
wc_InitMutex(&sp_cache_1024_lock);
initCacheMutex_1024 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_1024_lock) != 0) {
err = BAD_MUTEX_E;
}

View File

@ -2620,8 +2620,10 @@ static THREAD_LS_T int sp_cache_last = -1;
static THREAD_LS_T int sp_cache_inited = 0;
#ifndef HAVE_THREAD_LS
static wolfSSL_Mutex sp_cache_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_lock);
#ifdef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex = 0;
static wolfSSL_Mutex sp_cache_lock;
#endif
#endif
static void sp_ecc_get_cache(const sp_point* g, sp_cache_t** cache)
@ -2701,10 +2703,12 @@ static int sp_256_ecc_mulmod_10(sp_point* r, const sp_point* g, const sp_digit*
int err = MP_OKAY;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex == 0) {
wc_InitMutex(&sp_cache_lock);
initCacheMutex = 1;
}
#endif
if (wc_LockMutex(&sp_cache_lock) != 0)
err = BAD_MUTEX_E;
#endif /* HAVE_THREAD_LS */

View File

@ -10979,8 +10979,10 @@ static THREAD_LS_T int sp_cache_256_last = -1;
static THREAD_LS_T int sp_cache_256_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_256 = 0;
static wolfSSL_Mutex sp_cache_256_lock;
#endif
static wolfSSL_Mutex sp_cache_256_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_256_lock);
#endif
/* Get the cache entry for the point.
@ -11078,10 +11080,12 @@ static int sp_256_ecc_mulmod_4(sp_point_256* r, const sp_point_256* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_256 == 0) {
wc_InitMutex(&sp_cache_256_lock);
initCacheMutex_256 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_256_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -11459,10 +11463,12 @@ static int sp_256_ecc_mulmod_avx2_4(sp_point_256* r, const sp_point_256* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_256 == 0) {
wc_InitMutex(&sp_cache_256_lock);
initCacheMutex_256 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_256_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -30167,8 +30173,10 @@ static THREAD_LS_T int sp_cache_384_last = -1;
static THREAD_LS_T int sp_cache_384_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_384 = 0;
static wolfSSL_Mutex sp_cache_384_lock;
#endif
static wolfSSL_Mutex sp_cache_384_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_384_lock);
#endif
/* Get the cache entry for the point.
@ -30266,10 +30274,12 @@ static int sp_384_ecc_mulmod_6(sp_point_384* r, const sp_point_384* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_384 == 0) {
wc_InitMutex(&sp_cache_384_lock);
initCacheMutex_384 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_384_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -30650,10 +30660,12 @@ static int sp_384_ecc_mulmod_avx2_6(sp_point_384* r, const sp_point_384* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_384 == 0) {
wc_InitMutex(&sp_cache_384_lock);
initCacheMutex_384 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_384_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -55045,8 +55057,10 @@ static THREAD_LS_T int sp_cache_521_last = -1;
static THREAD_LS_T int sp_cache_521_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_521 = 0;
static wolfSSL_Mutex sp_cache_521_lock;
#endif
static wolfSSL_Mutex sp_cache_521_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_521_lock);
#endif
/* Get the cache entry for the point.
@ -55144,10 +55158,12 @@ static int sp_521_ecc_mulmod_9(sp_point_521* r, const sp_point_521* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_521 == 0) {
wc_InitMutex(&sp_cache_521_lock);
initCacheMutex_521 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_521_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -55528,10 +55544,12 @@ static int sp_521_ecc_mulmod_avx2_9(sp_point_521* r, const sp_point_521* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_521 == 0) {
wc_InitMutex(&sp_cache_521_lock);
initCacheMutex_521 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_521_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -96245,8 +96263,10 @@ static THREAD_LS_T int sp_cache_1024_last = -1;
static THREAD_LS_T int sp_cache_1024_inited = 0;
#ifndef HAVE_THREAD_LS
#ifndef WOLFSSL_MUTEX_INITIALIZER
static volatile int initCacheMutex_1024 = 0;
static wolfSSL_Mutex sp_cache_1024_lock;
#endif
static wolfSSL_Mutex sp_cache_1024_lock WOLFSSL_MUTEX_INITIALIZER_CLAUSE(sp_cache_1024_lock);
#endif
/* Get the cache entry for the point.
@ -96344,10 +96364,12 @@ static int sp_1024_ecc_mulmod_16(sp_point_1024* r, const sp_point_1024* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_1024 == 0) {
wc_InitMutex(&sp_cache_1024_lock);
initCacheMutex_1024 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_1024_lock) != 0) {
err = BAD_MUTEX_E;
}
@ -96711,10 +96733,12 @@ static int sp_1024_ecc_mulmod_avx2_16(sp_point_1024* r, const sp_point_1024* g,
#endif
#ifndef HAVE_THREAD_LS
if (err == MP_OKAY) {
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (initCacheMutex_1024 == 0) {
wc_InitMutex(&sp_cache_1024_lock);
initCacheMutex_1024 = 1;
}
#endif
if (wc_LockMutex(&sp_cache_1024_lock) != 0) {
err = BAD_MUTEX_E;
}

View File

@ -38,7 +38,7 @@
#include "rpcmem.h"
static wolfSSL_DSP_Handle_cb handle_function = NULL;
static remote_handle64 defaultHandle;
static wolfSSL_Mutex handle_mutex; /* mutex for access to single default handle */
static wolfSSL_Mutex handle_mutex WOLFSSL_MUTEX_INITIALIZER_CLAUSE(handle_mutex); /* mutex for access to single default handle */
#define WOLFSSL_HANDLE_DONE 1
#define WOLFSSL_HANDLE_GET 0
@ -95,11 +95,13 @@ int wolfSSL_InitHandle()
return -1;
}
wolfSSL_SetHandleCb(default_handle_cb);
#ifndef WOLFSSL_MUTEX_INITIALIZER
ret = wc_InitMutex(&handle_mutex);
if (ret != 0) {
WOLFSSL_MSG("Unable to init handle mutex");
return -1;
}
#endif
return 0;
}
@ -108,7 +110,9 @@ int wolfSSL_InitHandle()
void wolfSSL_CleanupHandle()
{
wolfSSL_close(defaultHandle);
#ifndef WOLFSSL_MUTEX_INITIALIZER
wc_FreeMutex(&handle_mutex);
#endif
}
#if defined(WOLFSSL_HAVE_SP_ECC)

View File

@ -1283,18 +1283,22 @@ void wolfSSL_RefDec(wolfSSL_Ref* ref, int* isZero, int* err)
#if WOLFSSL_CRYPT_HW_MUTEX
/* Mutex for protection of cryptography hardware */
static wolfSSL_Mutex wcCryptHwMutex;
static wolfSSL_Mutex wcCryptHwMutex WOLFSSL_MUTEX_INITIALIZER_CLAUSE(wcCryptHwMutex);
#ifndef WOLFSSL_MUTEX_INITIALIZER
static int wcCryptHwMutexInit = 0;
#endif
int wolfSSL_CryptHwMutexInit(void)
{
int ret = 0;
#ifndef WOLFSSL_MUTEX_INITIALIZER
if (wcCryptHwMutexInit == 0) {
ret = wc_InitMutex(&wcCryptHwMutex);
if (ret == 0) {
wcCryptHwMutexInit = 1;
}
}
#endif
return ret;
}
int wolfSSL_CryptHwMutexLock(void)

View File

@ -244,7 +244,7 @@
typedef pthread_rwlock_t wolfSSL_RwLock;
#endif
typedef pthread_mutex_t wolfSSL_Mutex;
#define WOLFSSL_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER
#define WOLFSSL_MUTEX_INITIALIZER(lockname) PTHREAD_MUTEX_INITIALIZER
#elif defined(THREADX)
typedef TX_MUTEX wolfSSL_Mutex;
#elif defined(WOLFSSL_DEOS)
@ -306,6 +306,13 @@
#endif /* USE_WINDOWS_API */
#endif /* SINGLE_THREADED */
#ifdef WOLFSSL_MUTEX_INITIALIZER
#define WOLFSSL_MUTEX_INITIALIZER_CLAUSE(lockname) = WOLFSSL_MUTEX_INITIALIZER(lockname)
#else
#define WOLFSSL_MUTEX_INITIALIZER_CLAUSE(lockname) /* null expansion */
#endif
#if !defined(WOLFSSL_USE_RWLOCK) || defined(SINGLE_THREADED)
typedef wolfSSL_Mutex wolfSSL_RwLock;
#endif