调用'EVP_DigestFinal'没有匹配函数 - 在C++中使用 openssl lib

No matching function for call to 'EVP_DigestFinal' - Using openssl lib in C++

本文关键字:C++ openssl lib DigestFinal EVP 调用 函数      更新时间:2023-10-16

我已经成功地将openssl开发库集成到main.cpp文件中。目前包括openssl/evp.h

我可以成功使用EVP_DigestInit, EVP_DigestUpdate功能,没有任何错误。但是如果我尝试调用EVP_DigestFinal,它会给出以下错误:

No matching function for call to 'EVP_DigestFinal'

然而,函数是在同一个头文件evp.h中定义的。我该怎么做才能使用这个函数呢?谢谢你的帮助。

相关代码:

EVP_MD_CTX ctx;
char ch[128];
int val = 128;
EVP_DigestFinal(&ctx, ch, val);

从我在OpenSSL.org上找到的,签名是

int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md, int *s);

要匹配,第二个参数需要unsigned char,第三个参数需要地址,类似于

EVP_MD_CTX ctx;
unsigned char ch[128];
_______^
int val = 128;
EVP_DigestFinal(&ctx, ch, &val);
__________________________^