GnuTLS не может вызывать хэширующие функции

После компиляции и тестирования некоторых функций, доступных в библиотеке gnuTLS, у меня возникли проблемы с использованием библиотеки crypto. Когда я пытаюсь сгенерировать хеш, используя

gnutls_hash_hd_t *dig;
gnutls_hash_init (dig, GNUTLS_DIG_SHA1);

затем вычислить хеш, используя

 gnutls_hash (dig, const void * ptext, size_t ptext_len);

моя проблема появляется, когда

gnutls_hash_init (dig, GNUTLS_DIG_SHA1);

вызывает gnutls_malloc() внутри crypto-api.c, давая мне ошибку. Я не знаю, что и делать не так, и API gnuTLS не очень дружелюбен для новичков, приветствуются любые предложения и советы

0 ответов

Функция gnutls_hash_init не выделяет память для gnutls_hash_hd_t. Скорее, он ожидает указателя на существующее выделение.

Таким образом, правильное использование будет, например,

  gnutls_hash_hd_t dig = {0}; // zero-initialize
  gnutls_hash_init(&dig, GNUTLS_DIG_SHA1);
Другие вопросы по тегам