我在openssl的页面上找不到关于如何使用ASN1_ENUMERATED的文档。
使用BERViewer可视化结构:

所以我使用了:
ASN1_SEQUENCE_ANY *asn1SequenceAny = sk_ASN1_TYPE_new_null();
asn1SequenceAny = d2i_ASN1_SEQUENCE_ANY(&asn1SequenceAny, (const unsigned char**)&data,len);
ASN1_TYPE *asn1Type = NULL;
asn1Type = sk_ASN1_TYPE_pop(asn1SequenceAny);
if(asn1Type->type == V_ASN1_ENUMERATED)
{
asn1Type->value.enumerated->data; // How to get sequence inside [0] ?
}磁盘"asn1Type->value.enumerated-> data“中的枚举数据如下:

如何从获取ASN1_SEQUENCE_ANY
SEQUENCE
|__SEQUENCE
|__SEQUENCE我尝试过: ASN1_ENUMERATED_get,返回-1。为什么不是零呢?
文章非常受欢迎。
发布于 2012-06-12 23:37:41
OpenSSL提供了许多函数来解码这些消息。您必须知道对其进行编码的对应函数是什么,因为解码例程还会解析输出,以确保解码后的消息与您调用的decode方法所隐含的预期类型相匹配。你似乎想要:
d2i_ASN1_OBJECT (3ssl) - ASN1 OBJECT IDENTIFIER functions但是,如果这不正确,您可以在OpenSSL文档中搜索d2i,您会发现有许多函数可以尝试。
如果您下载了OpenSSL source code,在将其解压后,请查看apps子目录,并读取asn1pars.c文件。或者,你可以关注this link在线查看它。希望这能有所帮助!
https://stackoverflow.com/questions/10998884
复制相似问题