c - 如何将 asn1_create_element 用于嵌套方案?
问题描述
libtasn1 库提供了用于创建编码数据的函数。特别是 asn1_create_element() 函数用于在编码之前创建结构。嵌套定义失败。
Libtasn1 库提供了测试示例,我感兴趣的与编码有关。 Test_encoding.asn
TEST_TREE { }
DEFINITIONS IMPLICIT TAGS ::=
BEGIN
Koko ::= SEQUENCE {
seqint SEQUENCE OF INTEGER,
int INTEGER,
a [1] OCTET STRING,
b [10] OCTET STRING,
c [100] OCTET STRING,
exp [3] EXPLICIT OCTET STRING OPTIONAL,
str OCTET STRING
}
这是一个简单的方案,具有直接的数据类型。
Test_encoding.c使用以下方法进一步填充这些结构:
result = asn1_create_element (definitions, "TEST_TREE.Koko", &asn1_element);
...
result = asn1_write_value (asn1_element, "seqint", "NEW", 1);
...
result = asn1_write_value (asn1_element, "int", "\x0f\xff\x01", 3);
我的方案是嵌套的:
MYP7B { }
DEFINITIONS IMPLICIT TAGS ::=
BEGIN
Encoder ::= SEQUENCE {
signedData1 OBJECT IDENTIFIER,
object1 XmlInfo
}
XmlInfo ::= SEQUENCE {
serialno INTEGER,
checksum1 INTEGER,
digest1 OCTET STRING,
data1 OCTET STRING
}
我的 main.c 有这样的:
result = asn1_create_element (definitions, "MYP7B.Encoder", &asn1_element);
...
result = asn1_create_element (definitions, "MYP7B.Encoder.XmlInfo", &asn1_element);
我收到以下错误:
asn1_create_element(): LIBTASN1 ERROR: ELEMENT_NOT_FOUND
解决方案
将第二个参数“MYP7B.Encoder.XmlInfo”替换为“MYP7B.XmlInfo”,因为从 ASN1 定义的角度来看,它没有嵌套。
推荐阅读
- xampp - 我无法通过我的 IP 地址 xampp 下载文件 zip
- php - 为什么我安装inoerp时会出现这样的错误?
- laravel - laravel 中 map() 的 excat 功能是什么?
- sql - Bigquery 基于时间范围的分组消息
- firebase - 例外:NoSuchMethodError:在 null 上调用了 getter 'uid'。接收方:null 尝试调用:uid
- php - 过滤器仅在第一页有效,当我单击第二页时显示的数据根本没有过滤器
- python - Python中有向图的链接预测
- yii2 - yii\base\ErrorException 使用未定义的常量标志 - 假定为“标志”(这将在 PHP 的未来版本中引发错误)
- flutter - 我在我的颤振应用程序中将 Paytm 全部用于一个 sdk。它抛出 PlatformException 错误
- python - 如何按自定义顺序对给定的字符串列表进行排序?