OpenSSL中的ECDH
我对OpenSSL库中的ECDH有一个问题 在159行的文件“ecdhtest.c”中,我们可以确认私钥的值,如下所示:OpenSSL中的ECDH,c,openssl,C,Openssl,我对OpenSSL库中的ECDH有一个问题 在159行的文件“ecdhtest.c”中,我们可以确认私钥的值,如下所示: BN_打印(输出,a->priv_键) 但是,错误发生在我使用Makefile构建时 ecdsatest.c:221:22: error: incomplete definition of type 'struct ec_key_st' BN_print(out, key->priv_key); ~~~^ ../include
BN_打印(输出,a->priv_键)代码>
但是,错误发生在我使用Makefile构建时
ecdsatest.c:221:22: error: incomplete definition of type 'struct ec_key_st'
BN_print(out, key->priv_key);
~~~^
../include/openssl/evp.h:147:16: note: forward declaration of 'struct ec_key_st'
struct ec_key_st *ec; /* ECC */
^
1 error generated.
我认为key->priv_key
的类型是BIGNUM
我想确认私钥的值
如果你有什么想法,请帮帮我。由于意图,struct ec\u key st
的定义是不透明的。它在openssl发行版的ec_lcl.h
中定义,该发行版不是公共接口的一部分。在版本1.0.1k中,它看起来如下所示:
struct ec_key_st {
int version;
EC_GROUP *group;
EC_POINT *pub_key;
BIGNUM *priv_key;
unsigned int enc_flag;
point_conversion_form_t conv_form;
int references;
int flags;
EC_EXTRA_DATA *method_data;
} /* EC_KEY */;
但不同版本之间可能并不稳定
但是,您可以使用accessor函数获取私钥
const BIGNUM *EC_KEY_get0_private_key(const EC_KEY *key);
这将是一个干净的方法。将ec_key\u st
完整定义从现在的任何位置移动到头文件中,这样每个人都可以看到这些字段。别忘了事后恢复您的更改…谢谢您回答我的问题。我使用“EC_key_get0_private_key”确认私钥。