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);