Как лучше всего использовать openssl и libcurl? - PullRequest
0 голосов
/ 05 ноября 2018

В моем приложении два модуля используют openssl, libcurl и еще один. Функция OpenSSL_add_all_algorithms будет запускать все алгоритмы openssl. Но если использовать curl_global_cleanup из libcurl, он очистит все алгоритмы 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;
 }
...