openssl:错误:' EC_PRIVATEKEY_it'这里未声明(不在函数中)

时间:2015-07-31 18:52:50

标签: openssl asn.1

我在Linux上使用openssl 1.0.2c,而我正在尝试修改当前使用包含RSAPrivateKey对象的用户定义ASN1序列的程序。

ASN1_NDEF_SEQUENCE(MY_DATA) =
{
    ASN1_SIMPLE(MY_DATA, version, ASN1_INTEGER),
    ASN1_SIMPLE(MY_DATA, key_block_hdr, ASN1_IA5STRING),
    ASN1_SIMPLE(MY_DATA, priv_key, RSAPrivateKey),
    ASN1_SIMPLE(MY_DATA, cert, X509),
    ASN1_OPT(MY_DATA, sign_time, ASN1_UTCTIME)

} ASN1_NDEF_SEQUENCE_END(MY_DATA)

IMPLEMENT_ASN1_FUNCTIONS(MY_DATA)

它工作正常,但我现在必须传递EC密钥,所以我将第三个对象更改为EC_PRIVATEKEY(当然还有其他更改)

ASN1_SIMPLE(MY_DATA, priv_key, EC_PRIVATEKEY),

这会导致以下编译错误。

error: 'EC_PRIVATEKEY_it' undeclared here (not in a function)

我花了相当多的时间来查看openssl来源(rsa_asn1.c / ec_asn1.c)并且我不明白为什么RSAPrivateKey_it得到解决而不是EC_PRIVATEKEY_it }。

我已经解决了'编译问题(盲目地)添加以下行

`DECLARE_ASN1_ITEM(EC_PRIVATEKEY)`

但显然这不是正确的事情,因为我现在在填充结构的d2i_ECPrivateKey_bio()调用中遇到了段错误。

我现在想知道EC键是否有限制。 换句话说,我是在尝试做一些不可行/不支持的事情,还是我不是以正确的方式做事? 后者很可能,所以任何指向正确方向的指针都是受欢迎的。

谢谢。

0 个答案:

没有答案