我在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键是否有限制。 换句话说,我是在尝试做一些不可行/不支持的事情,还是我不是以正确的方式做事? 后者很可能,所以任何指向正确方向的指针都是受欢迎的。
谢谢。