Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

EVP_MD_CTX "error: storage size of ‘ctx’ isn’t known"

Tags:

c

openssl

My system is Ubuntu16.04 LTS. when I use the OpenSSL EVP_MD_CTX, this error appeared. Can anyone help me?


CODE:

#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;
    ...
}

ERROR:

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;
like image 597
tianmt Avatar asked Mar 08 '17 03:03

tianmt


2 Answers

I had a similar error but with EVP_CIPHER_CTX

error: storage size of ‘ctx’ isn’t known
       EVP_CIPHER_CTX ctx;

I solved with this:

EVP_CIPHER_CTX *ctx;
ctx = EVP_CIPHER_CTX_new();

I hope this helps somebody with the same problem I had.

like image 162
rodolk Avatar answered Oct 20 '22 05:10

rodolk


You are using OpenSSL 1.1.0 which made this structure (and many others) opaque - which means you cannot stack allocate it. Instead do this:

EVP_MD_CTX *md_ctx;

md_ctx = EVP_MD_CTX_new();
if (md_ctx == NULL)
    ...
...
EVP_MD_CTX_free(md_ctx);
like image 24
Matt Caswell Avatar answered Oct 20 '22 07:10

Matt Caswell