ASN.1用可选字段编码
ASN.1 Encoding with Optional fields
假设以下对象是在.asn文件中定义的。
TestObject := IMPLICIT [APPLICATION 7] SEQUENCE {
version UTF8String,
a GeneralizedTime OPTIONAL,
b [APPLICATION C0] IMPLICIT SEQUENCE OF [PRIVATE P0] IMPLICIT ad OPTIONAL,
c [APPLICATION C1] IMPLICIT SEQUENCE OF ab OPTIONAL,
d [APPLICATION C2] IMPLICIT ac OPTIONAL,
e [APPLICATION C3] IMPLICIT ad OPTIONAL,
f [APPLICATION C4] IMPLICIT al OPTIONAL,
g [APPLICATION C6] IMPLICIT SEQUENCE OF an OPTIONAL,
h ASNSyncPayload OPTIONAL,
signature NULLOCTETSTRING,
}
有多个可选字段,我不确定它们将如何编码。
有人可以解释我可以使用libtasn1将以下内容编码为二进制文件的方式吗?
请注意,您的标签[应用程序C0]通过[应用程序C6]不是有效的ASN.1标签。[私人P0]也是如此。删除" C和p",以便您通过应用程序6]和[private 0]具有[应用程序0],然后您的标签就可以了。另外,ASN.1类型名称必须以大写字母开头,因此" AD"," AB"," AC"," AL"answers" AN"不是有效的类型名称。
ASN.1有几个编码规则,这些规则以不同的方式处理可选字段。ber,der和cer在编码中使用ASN.1标签的存在或不存在,以确定组件的存在或不存在。这意味着,如果编码具有版本字段的标签,长度和值,则没有标签长度和签名字段的值,则所有中间可选字段均不存在。
每个序列中的前面都使用一个位掩码,每个可选字段都有一点,以表示其存在或不存在。
您可以在免费的在线ASN.1编译器中尝试ASN。
相关文章:
- 将结构字段的类型展开为可变模板参数
- 将位字段导出到数组
- 为了方便起见,我应该避免公开私有字段变量吗
- 当字段可以为null时,如何使用C++接口在Avro中写入数据
- 在java中读取c++字节的位字段
- 链接器找不到在虚拟类 c++ 中访问的静态字段的符号
- 私有字段对象与私有继承?
- 声明没有默认构造函数的字段
- C++内存模型和位字段的最大序列
- 声明为无效的变量或字段'...' Ardunio 编译器上的错误
- 如何在QByteArray中放置和检索位字段而不会感到痛苦?
- C++ win32 如何使密码字段可选并启用复制和粘贴?
- 如何通过UDP接收QByteArray并将其解析为位字段结构?
- 仅匹配集合中的某些字段
- 结构字段名称与 GDB 中的 STL 数组冲突
- 如何使用位字段将数据从二进制文件复制到结构中?
- 协议缓冲区字符串字段的文本编码
- 确定输入"conscalc: calc"的类型时出错。不能联合编码器。具有不同字段集的结构类型
- ASN.1用可选字段编码
- cURL post字段是用特殊字符编码的