C 指向不完整类型的OpenSSL取消引用指针
我正在使用OpenSSL库。我正在尝试访问struct engine st的rsa_meth属性。执行此操作的代码如下: ctx->客户端证书引擎->rsa方法 其中,ctx的类型为SSL_ctx* 我试图包括所有必要的头文件,但它仍然给我:C 指向不完整类型的OpenSSL取消引用指针,c,ssl,struct,openssl,C,Ssl,Struct,Openssl,我正在使用OpenSSL库。我正在尝试访问struct engine st的rsa_meth属性。执行此操作的代码如下: ctx->客户端证书引擎->rsa方法 其中,ctx的类型为SSL_ctx* 我试图包括所有必要的头文件,但它仍然给我: 取消引用指向不完整类型的指针。 尽管如此,如果我删除rsa\u meth,它就可以正常工作。这意味着rsa\u meth结构没有定义。您需要在openssl/rsa.h中包含它的定义 请包括openssl/rsa.h或 加 #包括 您正在取消引用ctx-
取消引用指向不完整类型的指针。
尽管如此,如果我删除rsa\u meth,它就可以正常工作。这意味着rsa\u meth结构没有定义。您需要在openssl/rsa.h中包含它的定义 请包括openssl/rsa.h或 加
#包括
您正在取消引用ctx->client\u cert\u engine,它是一个引擎*(指向结构引擎的指针) 尝试包括
引擎(即客户端证书引擎)是一个内部结构定义(在crypto/engine/eng\u int.h中),不在公共标头中公开。这(可能)是为了防止结构发生更改时出现二进制兼容性问题。使用engine.h标头中定义的getter,而不是尝试取消引用:
const char *ENGINE_get_id(const ENGINE *e);
const char *ENGINE_get_name(const ENGINE *e);
const RSA_METHOD *ENGINE_get_RSA(const ENGINE *e);
const DSA_METHOD *ENGINE_get_DSA(const ENGINE *e);
const ECDH_METHOD *ENGINE_get_ECDH(const ENGINE *e);
const ECDSA_METHOD *ENGINE_get_ECDSA(const ENGINE *e);
const DH_METHOD *ENGINE_get_DH(const ENGINE *e);
const RAND_METHOD *ENGINE_get_RAND(const ENGINE *e);
const STORE_METHOD *ENGINE_get_STORE(const ENGINE *e);
还有一件事,我发现问题不仅仅在于RSA_METH,我无法从client_cert_引擎结构访问任何元素。因此,我假设代码无法找到引擎结构的定义。
const char *ENGINE_get_id(const ENGINE *e);
const char *ENGINE_get_name(const ENGINE *e);
const RSA_METHOD *ENGINE_get_RSA(const ENGINE *e);
const DSA_METHOD *ENGINE_get_DSA(const ENGINE *e);
const ECDH_METHOD *ENGINE_get_ECDH(const ENGINE *e);
const ECDSA_METHOD *ENGINE_get_ECDSA(const ENGINE *e);
const DH_METHOD *ENGINE_get_DH(const ENGINE *e);
const RAND_METHOD *ENGINE_get_RAND(const ENGINE *e);
const STORE_METHOD *ENGINE_get_STORE(const ENGINE *e);