/* Used to initialize state for wolfcrypt return 0 on success */ int wolfCrypt_Init() { int ret = 0; if (initRefCount == 0) { #if WOLFSSL_CRYPT_HW_MUTEX /* If crypto hardware mutex protection is enabled, then initialize it */ wolfSSL_CryptHwMutexInit(); #endif /* if defined have fast RSA then initialize Intel IPP */ #ifdef HAVE_FAST_RSA WOLFSSL_MSG("Attempting to use optimized IPP Library"); if ((ret = ippInit()) != ippStsNoErr) { /* possible to get a CPU feature support status on optimized IPP library but still use default library and see competitive speeds */ WOLFSSL_MSG("Warning when trying to set up optimization"); WOLFSSL_MSG(ippGetStatusString(ret)); WOLFSSL_MSG("Using default fast IPP library"); ret = 0; } #endif #ifdef WOLFSSL_ARMASM WOLFSSL_MSG("Using ARM hardware acceleration"); #endif initRefCount = 1; } return ret; }
int wolfSSL_CryptHwMutexLock(void) { int ret = BAD_MUTEX_E; /* Make sure HW Mutex has been initialized */ wolfSSL_CryptHwMutexInit(); if(wcCryptHwMutexInit) { ret = LockMutex(&wcCryptHwMutex); } return ret; }
/* Used to initialize state for wolfcrypt return 0 on success */ int wolfCrypt_Init(void) { int ret = 0; if (initRefCount == 0) { WOLFSSL_ENTER("wolfCrypt_Init"); #ifdef WOLFSSL_ASYNC_CRYPT ret = wolfAsync_HardwareStart(); if (ret != 0) { WOLFSSL_MSG("Async hardware start failed"); /* don't return failure, allow operation to continue */ } #endif #if defined(WOLFSSL_TRACK_MEMORY) && !defined(WOLFSSL_STATIC_MEMORY) ret = InitMemoryTracker(); if (ret != 0) { WOLFSSL_MSG("InitMemoryTracker failed"); return ret; } #endif #if WOLFSSL_CRYPT_HW_MUTEX /* If crypto hardware mutex protection is enabled, then initialize it */ ret = wolfSSL_CryptHwMutexInit(); if (ret != 0) { WOLFSSL_MSG("Hw crypt mutex init failed"); return ret; } #endif /* if defined have fast RSA then initialize Intel IPP */ #ifdef HAVE_FAST_RSA WOLFSSL_MSG("Attempting to use optimized IPP Library"); if ((ret = ippInit()) != ippStsNoErr) { /* possible to get a CPU feature support status on optimized IPP library but still use default library and see competitive speeds */ WOLFSSL_MSG("Warning when trying to set up optimization"); WOLFSSL_MSG(ippGetStatusString(ret)); WOLFSSL_MSG("Using default fast IPP library"); ret = 0; (void)ret; /* suppress not read warning */ } #endif #if defined(FREESCALE_LTC_TFM) || defined(FREESCALE_LTC_ECC) ret = ksdk_port_init(); if (ret != 0) { WOLFSSL_MSG("KSDK port init failed"); return ret; } #endif #ifdef WOLFSSL_ATMEL atmel_init(); #endif #ifdef WOLFSSL_ARMASM WOLFSSL_MSG("Using ARM hardware acceleration"); #endif #if !defined(WOLFCRYPT_ONLY) && \ ( defined(OPENSSL_EXTRA) || defined(HAVE_WEBSERVER) ) wolfSSL_EVP_init(); #endif #if defined(OPENSSL_EXTRA) || defined(DEBUG_WOLFSSL_VERBOSE) if ((ret = wc_LoggingInit()) != 0) { WOLFSSL_MSG("Error creating logging mutex"); return ret; } #endif #ifdef HAVE_ECC #ifdef ECC_CACHE_CURVE if ((ret = wc_ecc_curve_cache_init()) != 0) { WOLFSSL_MSG("Error creating curve cache"); return ret; } #endif #endif initRefCount = 1; } return ret; }