Обновление OpenSSL до более новой версии: альтернатива устаревшему `OPENSSL_config` - PullRequest
0 голосов
/ 06 февраля 2019

В моем C-проекте я обновил библиотеку OpenSSl 1.0.2g до более новой (версии 1.1.x), пока я компилировал свой код, у меня было выдано следующее предупреждение:

main.c:40: 3: предупреждение: «OPENSSL_config» устарела [-Wdeprecated-декларации] OPENSSL_config (NULL);

Код, выбрасывающий эту ошибку:

#include <stdio.h>

// Openssl
#include <openssl/conf.h>
#include <openssl/evp.h>
#include <openssl/err.h>

int main(int argc, char *argv[]) {
  /* Load the human readable error strings for libcrypto */
  ERR_load_crypto_strings();
  /* Load all digest and cipher algorithms */
  OpenSSL_add_all_algorithms();
  /* Load config file, and other important initialisation */
  OPENSSL_config(NULL);

  //Come code here

  EVP_cleanup();
  CRYPTO_cleanup_all_ex_data();
  ERR_free_strings();
  return 0;
}

Так каклучшие практики диктуют, что я должен избегать и использовать альтернативные подходы к устаревшим функциям в моем случае, какой из них я должен использовать?

1 Ответ

0 голосов
/ 06 февраля 2019

OPENSSL_config говорит само за себя:

Эта функция устарела, и ее использования следует избегать.Приложения должны вместо этого вызывать CONF_modules_load () во время инициализации (то есть до запуска любых потоков).

Также SSL_load_error_strings и OpenSSL_add_all_algorithms также не рекомендуется.

Для openssl> = 1.1 вы можете удалить весь приведенный выше код запуска и очистки, так как он больше не нужен.Теперь все это делается автоматически для вас.

...