web-dev-qa-db-ja.com

EVP_MD_CTX「エラー:「ctx」のストレージサイズが不明です」

私のシステムはUbuntu16.04 LTSです。 OpenSSLを使用する場合EVP_MD_CTX、このエラーが発生しました。誰か助けてもらえますか?


[〜#〜]コード[〜#〜]

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

[〜#〜]エラー[〜#〜]

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;
8
tianmt

この構造(および他の多く)を不透明にしたOpenSSL 1.1.0を使用しています。つまり、スタック割り当てができません。代わりにこれを行います:

EVP_MD_CTX *md_ctx;

md_ctx = EVP_MD_CTX_new();
if (md_ctx == NULL)
    ...
...
EVP_MD_CTX_free(md_ctx);
11
Matt Caswell