【发布时间】:2016-06-21 00:06:36
【问题描述】:
我想在 ASN.1 中描述一个现有数据结构,这样我就可以使用合适的库来解码/编码/验证交易,而无需从头开始编写所有内容。
还有:
- 我无法更改任何数据结构;
- 所有字段均为 ASCII 字符;
- 在大多数数组 (SEQUENCES) 的定义中,发送的元素数量由前面的 counter 字段定义。
考虑以下简化示例:
World-Schema DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
Test ::= SEQUENCE {
id IA5String (SIZE(5)),
nbData IA5String (SIZE(2)),
dataList ListOfData
}
ListOfData ::= SEQUENCE(SIZE(0..99)) OF DataPoint
DataPoint ::= SEQUENCE {
x IA5String (SIZE(2)),
y IA5String (SIZE(2))
}
END
nbData 字段指示传输数据流中存在的dataPoint 元素的数量。
除了nbData 实际上是一个编码为字符串的整数之外,这一定是一种非常常见的压缩传输数据的方式。尽管如此,我仍然在努力寻找一种方法来定义这种结构。
如何在 ASN.1 中表达这个约束?
【问题讨论】:
-
不清楚你想要实现什么。你想定义像
dataList ListOfData (SIZE(nbData))这样的东西吗? -
是的,这就是我想要的。但是编译器抱怨('nbData'被引用,但未定义)所以我认为在 SIZE 约束中只允许常量值
标签: asn.1