首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C++中取消使用openssl从ASN1_ENUMERATED中获取值

如何在C++中取消使用openssl从ASN1_ENUMERATED中获取值
EN

Stack Overflow用户
提问于 2012-06-12 22:35:12
回答 1查看 641关注 0票数 0

我在openssl的页面上找不到关于如何使用ASN1_ENUMERATED的文档。

使用BERViewer可视化结构:

所以我使用了:

代码语言:javascript
复制
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

代码语言:javascript
复制
SEQUENCE
     |__SEQUENCE
     |__SEQUENCE

我尝试过: ASN1_ENUMERATED_get,返回-1。为什么不是零呢?

文章非常受欢迎。

EN

回答 1

Stack Overflow用户

发布于 2012-06-12 23:37:41

OpenSSL提供了许多函数来解码这些消息。您必须知道对其进行编码的对应函数是什么,因为解码例程还会解析输出,以确保解码后的消息与您调用的decode方法所隐含的预期类型相匹配。你似乎想要:

代码语言:javascript
复制
d2i_ASN1_OBJECT (3ssl) - ASN1 OBJECT IDENTIFIER functions

但是,如果这不正确,您可以在OpenSSL文档中搜索d2i,您会发现有许多函数可以尝试。

如果您下载了OpenSSL source code,在将其解压后,请查看apps子目录,并读取asn1pars.c文件。或者,你可以关注this link在线查看它。希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10998884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档