1

在编译和测试 gnuTLS 库中可用的一些函数后,我在使用加密库时遇到了问题。当我尝试使用生成哈希时

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

在 crypto-api.c 中调用 gnutls_malloc() 给我一个段错误。我不知道什么和做错了,gnuTLS API 对初学者不太友好,欢迎提出任何建议和意见

4

1 回答 1

0

该函数gnutls_hash_init不为gnutls_hash_hd_t. 相反,它需要一个指向现有分配的指针。

所以正确的用法是例如

  gnutls_hash_hd_t dig = {0}; // zero-initialize
  gnutls_hash_init(&dig, GNUTLS_DIG_SHA1);
于 2019-10-07T17:43:11.850 回答