OpenSSL 中的 ECDH
ECDH in OpenSSL
我对 OpenSSL 库中的 ECDH 有疑问。
在文件'ecdhtest.c'第159行,我们可以确认私钥的值如下:
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
。
我想确认私钥的价值。
如果你有什么想法,请帮助我。
struct ec_key_st
的定义故意不透明。它是在 openssl 发行版的 ec_lcl.h
中定义的,它不是 public 接口的一部分。在 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);
这是最干净的方法。
我对 OpenSSL 库中的 ECDH 有疑问。
在文件'ecdhtest.c'第159行,我们可以确认私钥的值如下:
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
。
我想确认私钥的价值。
如果你有什么想法,请帮助我。
struct ec_key_st
的定义故意不透明。它是在 openssl 发行版的 ec_lcl.h
中定义的,它不是 public 接口的一部分。在 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);
这是最干净的方法。