约束 ASN.1 中 SEQUENCE OF 类型的索引

Constrain the indexes for SEQUENCE OF types in ASN.1

是否可以在 ASN.1 中为 SEQUENCE OF 类型的可用索引添加约束? 类似于此

MyArray ::= SEQUENCE (1..10) OF INTEGER -- MyArray has 10 elments indexed from 1-10
Array2  ::= SEQUENCE (-5..5) OF INTEGER -- Array2 has 11 elments indexed from -5-5

我试图从 Dubuisson 的 ASN.1 书中找到它,但我不确定我是否正确理解了语法描述。

我目前的理解是,可以对 SEQUENCE OF 的大小创建约束,但不会对索引行为产生任何影响。我假设这留给实现语言来定义?

这是正确的吗?

在 ASN.1 中,对于 SEQUENCE OF 没有 "index" 的概念。您的上述分配均无效。

您可以对 SEQUENCE OF 的元素数量指定限制。例如,如果您写

A1 ::= 整数序列(大小(10))

您将元素的数量限制为 10。此 SEQUENCE-OF 类型的任何值都必须恰好包含 10 个元素。

如果你写

A2 ::= 整数序列(大小(1..10))

此 SEQUENCE-OF 类型的任何值都必须至少有 1 个元素,最多有 10 个元素。在这种情况下,元素的数量被限制在一定范围内,而不是固定大小。

您还可以编写更复杂的约束,如下所示:

A3 ::= 整数序列(大小(1 | 4 | 6..MAX))

在这种情况下,此 SEQUENCE-OF 类型的任何值都必须具有 1、4 或 6 个或更多元素。例如,值 {2} 和 {-5, 5, 1, -3} 是有效值,而 {1, 2} 不是。

您不能在大小约束中使用负整数,因为您使用的整数指定了元素的数量,而不是索引值。