[英]ASN.1: Can the SIZE constraint be used to constrain SEQUENCE (not SEQUENCE OF)
以下类型定义是否有效 ASN.1 语法?
MyType ::= SEQUENCE SIZE(2) {
theID OBJECT IDENTIFIER,
someNumber INTEGER OPTIONAL,
someString PrintableString OPTIONAL
}
我想正式约束序列,以便对于每个实例化,必须存在两个可选属性中的一个。
PS:由于SEQUENCE
和SEQUENCE OF
的编码方式完全相同,我略微希望这种语法是有效的。
此语法无效。 SEQUENCE
就像一个带有字段的结构体类型,其中每个字段可以是不同的类型。 SEQUENCE OF
就像一个数组,其中所有嵌套的类型都是相同的类型。 因此,在SEQUENCE OF
您可以将约束设置为数组大小。 相同的规则适用于SET
和SET OF
,只是无序。
我会以这种方式解决您的问题:创建所有可选字段的CHOICE
(不带OPTIONAL
修饰符)并将此 CHOICE 添加到您的主要类型中:
MyChoice ::= CHOICE {
someNumber INTEGER,
someString PrintableString
}
MyType ::= SEQUENCE {
theID OBJECT IDENTIFIER,
myChoice < MyChoice
}
在这种情况下, theID
字段是强制性的,并且正好需要MyChoice
元素之一。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.