已合并
eal_init bug fix #583
XuZhengYi创建于 2025年9月11日
eal_init bug fix #583
已合并
XuZhengYi创建于 2025年9月11日
共 3 个文件变更+10-7
@@ -58,7 +58,7 @@ static int32_t ProviderModuleInit(uint64_t initOpt, int32_t alg)
58 58 
59static void ProviderModuleFree(uint64_t initOpt)59static void ProviderModuleFree(uint64_t initOpt)
60{60{
61- if (!(initOpt & CRYPT_EAL_INIT_PROVIDER) || (g_ealInitOpts & CRYPT_EAL_INIT_PROVIDER) == 0) {61+ if (!(initOpt & CRYPT_EAL_INIT_PROVIDER)) {
62 return;62 return;
63 }63 }
64 CRYPT_EAL_FreePreDefinedProviders();64 CRYPT_EAL_FreePreDefinedProviders();
@@ -93,7 +93,7 @@ static int32_t BslModuleInit(uint64_t initOpt)
93 93 
94static void BslModuleFree(uint64_t initOpt)94static void BslModuleFree(uint64_t initOpt)
95{95{
96- if (!(initOpt & CRYPT_EAL_INIT_BSL) || (g_ealInitOpts & CRYPT_EAL_INIT_BSL) == 0) {96+ if (!(initOpt & CRYPT_EAL_INIT_BSL)) {
97 return;97 return;
98 }98 }
99 BSL_GLOBAL_DeInit();99 BSL_GLOBAL_DeInit();
@@ -115,7 +115,7 @@ static void BslModuleFree(uint64_t initOpt)
115#if defined(HITLS_CRYPTO_DRBG)115#if defined(HITLS_CRYPTO_DRBG)
116static void RandModuleFree(uint64_t initOpt)116static void RandModuleFree(uint64_t initOpt)
117{117{
118- if (!(initOpt & CRYPT_EAL_INIT_RAND) || (g_ealInitOpts & CRYPT_EAL_INIT_RAND) == 0) {118+ if (!(initOpt & CRYPT_EAL_INIT_RAND)) {
119 return;119 return;
120 }120 }
121 CRYPT_EAL_RandDeinit();121 CRYPT_EAL_RandDeinit();
@@ -165,7 +165,7 @@ static int32_t GlobalLockInit(uint64_t initOpt, int32_t alg)
165 165 
166static void GlobalLockFree(uint64_t initOpt)166static void GlobalLockFree(uint64_t initOpt)
167{167{
168- if ((initOpt & CRYPT_EAL_INIT_LOCK) == 0 || (g_ealInitOpts & CRYPT_EAL_INIT_LOCK) == 0) {168+ if ((initOpt & CRYPT_EAL_INIT_LOCK) == 0) {
169 return;169 return;
170 }170 }
171#ifdef HITLS_CRYPTO_ENTROPY171#ifdef HITLS_CRYPTO_ENTROPY
@@ -247,7 +247,7 @@ void CRYPT_EAL_Cleanup(uint64_t opts)
247 RandModuleFree(initOpt);247 RandModuleFree(initOpt);
248 BslModuleFree(initOpt);248 BslModuleFree(initOpt);
249 GlobalLockFree(initOpt);249 GlobalLockFree(initOpt);
250- g_ealInitOpts = 0;250+ g_ealInitOpts &= (~opts);
251}251}
252 252 
253#ifdef HITLS_CRYPTO_ASM_CHECK253#ifdef HITLS_CRYPTO_ASM_CHECK
@@ -35,6 +35,9 @@ extern "C" {
35#define CRYPT_EAL_INIT_LOCK 0x1035#define CRYPT_EAL_INIT_LOCK 0x10
36#define CRYPT_EAL_INIT_PROVIDER_RAND 0x2036#define CRYPT_EAL_INIT_PROVIDER_RAND 0x20
37 37 
38+#define CRYPT_EAL_INIT_ALL (CRYPT_EAL_INIT_CPU | CRYPT_EAL_INIT_BSL | CRYPT_EAL_INIT_RAND | \
39+ CRYPT_EAL_INIT_PROVIDER | CRYPT_EAL_INIT_PROVIDER_RAND | CRYPT_EAL_INIT_LOCK)
40+ 
38/**41/**
39 * @ingroup crypt_method42 * @ingroup crypt_method
40 * @brief CRYPTO initialization43 * @brief CRYPTO initialization
@@ -234,7 +234,7 @@ void SDV_CRYPTO_PROVIDER_LOAD_TC003(char *path, int cmd, char *test1, char *attr
234 ASSERT_EQ(CRYPT_EAL_ProviderSetLoadPath(NULL, path), CRYPT_SUCCESS);234 ASSERT_EQ(CRYPT_EAL_ProviderSetLoadPath(NULL, path), CRYPT_SUCCESS);
235 ASSERT_EQ(CRYPT_EAL_ProviderLoad(NULL, cmd, test1, NULL, NULL), CRYPT_SUCCESS);235 ASSERT_EQ(CRYPT_EAL_ProviderLoad(NULL, cmd, test1, NULL, NULL), CRYPT_SUCCESS);
236 ASSERT_EQ(CRYPT_EAL_ProviderUnload(NULL, cmd, test1), CRYPT_SUCCESS);236 ASSERT_EQ(CRYPT_EAL_ProviderUnload(NULL, cmd, test1), CRYPT_SUCCESS);
237- CRYPT_EAL_Cleanup(1);237+ CRYPT_EAL_Cleanup(CRYPT_EAL_INIT_ALL);
238 ASSERT_EQ(CRYPT_EAL_ProviderLoad(NULL, cmd, test1, NULL, NULL), CRYPT_PROVIDER_INVALID_LIB_CTX);238 ASSERT_EQ(CRYPT_EAL_ProviderLoad(NULL, cmd, test1, NULL, NULL), CRYPT_PROVIDER_INVALID_LIB_CTX);
239 ASSERT_EQ(CRYPT_EAL_Init(CRYPT_EAL_INIT_CPU|CRYPT_EAL_INIT_PROVIDER|CRYPT_EAL_INIT_PROVIDER_RAND), CRYPT_SUCCESS);239 ASSERT_EQ(CRYPT_EAL_Init(CRYPT_EAL_INIT_CPU|CRYPT_EAL_INIT_PROVIDER|CRYPT_EAL_INIT_PROVIDER_RAND), CRYPT_SUCCESS);
240 ASSERT_EQ(CRYPT_EAL_ProviderSetLoadPath(NULL, path), CRYPT_SUCCESS);240 ASSERT_EQ(CRYPT_EAL_ProviderSetLoadPath(NULL, path), CRYPT_SUCCESS);
@@ -250,7 +250,7 @@ void SDV_CRYPTO_PROVIDER_LOAD_TC003(char *path, int cmd, char *test1, char *attr
250 250 
251EXIT:251EXIT:
252 CRYPT_EAL_MdFreeCtx(mdCtx);252 CRYPT_EAL_MdFreeCtx(mdCtx);
253- CRYPT_EAL_Cleanup(1);253+ CRYPT_EAL_Cleanup(CRYPT_EAL_INIT_ALL);
254 ASSERT_EQ(CRYPT_EAL_Init(CRYPT_EAL_INIT_CPU|CRYPT_EAL_INIT_PROVIDER|CRYPT_EAL_INIT_PROVIDER_RAND), CRYPT_SUCCESS);254 ASSERT_EQ(CRYPT_EAL_Init(CRYPT_EAL_INIT_CPU|CRYPT_EAL_INIT_PROVIDER|CRYPT_EAL_INIT_PROVIDER_RAND), CRYPT_SUCCESS);
255#endif255#endif
256}256}