首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“EVP_MD_CTX”错误:“ctx”的存储大小未知“

“EVP_MD_CTX”错误:“ctx”的存储大小未知“
EN

Stack Overflow用户
提问于 2017-03-08 03:57:12
回答 2查看 21.5K关注 0票数 12

我的系统是Ubuntu16.04LTS。当我使用OpenSSL EVP_MD_CTX时,出现了这个错误。有谁可以帮我?

代码语言:javascript
复制
#include <stdio.h>
#include <openssl/evp.h>
#include <openssl/rsa.h>
int main()
{
    int ret,inlen,outlen=0;
    unsigned long e=RSA_3;
    char data[100],out[500];
    EVP_MD_CTX md_ctx, md_ctx2;
    ...
}

误差

代码语言:javascript
复制
root@ubuntu:/work/test# gcc evp_openssl_test.c -I/usr/local/include -L/usr/local/lib -lssl -lcrypto -o
evptestevp_openssl_test.c: In function ‘main’:
evp_openssl_test.c:13:19: error: storage size of ‘md_ctx’ isn’t known
    EVP_MD_CTX md_ctx,md_ctx2;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-08 09:03:03

您使用的是OpenSSL 1.1.0,它使这个结构(和许多其他结构)变得不透明--这意味着您不能堆栈分配它。相反,请这样做:

代码语言:javascript
复制
EVP_MD_CTX *md_ctx;

md_ctx = EVP_MD_CTX_new();
if (md_ctx == NULL)
    ...
...
EVP_MD_CTX_free(md_ctx);
票数 24
EN

Stack Overflow用户

发布于 2020-05-29 19:22:36

我也犯了一个类似的错误,但是在EVP_CIPHER_CTX上

代码语言:javascript
复制
error: storage size of ‘ctx’ isn’t known
       EVP_CIPHER_CTX ctx;

我解决了这个问题:

代码语言:javascript
复制
EVP_CIPHER_CTX *ctx;
ctx = EVP_CIPHER_CTX_new();

我希望这能帮助有同样问题的人。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42662733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档