在我的应用程序中,两个模块正在使用openssl,libcurl和另一个模块。函数OpenSSL_add_all_algorithms将初始化所有openssl算法。但是,如果使用libcurl的curl_global_cleanup,它将清除所有ssl算法。那么如何处理那些冲突呢?
int main() {
OpenSSL_add_all_algorithms();
curl_global_init(CURL_GLOBAL_ALL);
curl_global_cleanup(); // will call EVP_cleanup
const char* hash_type = "md5";
const EVP_MD* md_;
EVP_MD_CTX mdctx_;
md_ = EVP_get_digestbyname(hash_type);
if (md_ == NULL) {
fprintf(stdout, "Do get digest by name error\n");
fflush(stdout);
} else {
fprintf(stdout, "Do get digest by name succ\n");
fflush(stdout);
}
EVP_MD_CTX_init(&mdctx_);
if (EVP_DigestInit_ex(&mdctx_, md_, NULL) <= 0) {
fprintf(stdout, "Do digest init error\n");
fflush(stdout);
} else {
fprintf(stdout, "Do digest init succ\n");
fflush(stdout);
}
return 0;
}