我在OpenSSL库中有一个关于ECDH的问题。
在159行的文件“ecdhtest.c”中,我们可以确定私钥的值如下:
BN_print(out, a->priv_key);
但是,当我使用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。
我想确认一下私钥的价值。
如果你有什么主意,请帮帮我。
发布于 2016-02-22 18:35:39
根据意图,struct ec_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 */;但从一个版本到另一个版本,它可能并不稳定。
但是,您可以使用访问器函数获得私钥。
const BIGNUM *EC_KEY_get0_private_key(const EC_KEY *key);这将是一种干净的方法。
https://stackoverflow.com/questions/35559715
复制相似问题