私のシステムは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;
この構造(および他の多く)を不透明にした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);