繁体   English   中英

ASN.1:是否可以使用 SIZE 约束来约束 SEQUENCE(而不是 SEQUENCE OF)

[英]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:由于SEQUENCESEQUENCE OF的编码方式完全相同,我略微希望这种语法是有效的。

此语法无效。 SEQUENCE就像一个带有字段的结构体类型,其中每个字段可以是不同的类型。 SEQUENCE OF就像一个数组,其中所有嵌套的类型都是相同的类型。 因此,在SEQUENCE OF您可以将约束设置为数组大小。 相同的规则适用于SETSET 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM