ASN.1尺寸约束规范

时间:2014-06-16 06:28:27

标签: asn.1

在ASN.1中,写入

是有效的
(SIZE(10))

这相当于(SIZE(10..10))(SIZE(0..10))还是(SIZE(1..10))?或者是其他东西?标准中指定的是哪里?

似乎所有解析器都将其解释为(SIZE(10..10))。但是,我无法找到任何规范。

1 个答案:

答案 0 :(得分:3)

简而言之:SIZE(10)将类型的大小限制为10(并且只有10)。


参考标准的详细解释:

尺寸约束在X.680的第47.5节中定义

特别是

SizeConstraint ::= SIZE Constraint

Constraint在第45.6条中定义:

Constraint ::= "(" ConstraintSpec ExceptionSpec ")"
ConstraintSpec ::=
    SubtypeConstraint
    | GeneralConstraint

GeneralConstraint在X.682中定义(表示更复杂的约束),而SubtypeConstraint在45.7中定义

SubtypeConstraint ::= ElementSetSpecs
46.1中的

(这里很难......我会尝试只扩展我们需要的路径)

ElementSetSpecs ::=
      RootElementSetSpec
    | RootElementSetSpec "," "..."
    | RootElementSetSpec "," "..." "," AdditionalElementSetSpec

RootElementSetSpec ::= ElementSetSpec

ElementSetSpec ::= Unions
    | ALL Exclusions

Unions ::= Intersections
    | UElems UnionMark Intersections

Intersections ::= IntersectionElements
    | IElems IntersectionMark IntersectionElements

IntersectionElements ::= Elements | Elems Exclusions

in 46.5

Elements ::=
    SubtypeElements
  | ObjectSetElements
  | "(" ElementSetSpec ")"

在47.1

SubtypeElements ::=
      SingleValue
    | ContainedSubtype
    | ValueRange
    | PermittedAlphabet
    | SizeConstraint
    | TypeConstraint
    | InnerTypeConstraints
    | PatternConstraint

单值在47.2.1中定义

SingleValue ::= Value

值范围在47.4.1

中定义
ValueRange ::= LowerEndpoint ".." UpperEndpoint

所以...我们正在限制类型的大小(类型为INTEGER的约束),定义有效值的集合(ElementSetSpecs)。使用包含可选联合和Elements的可选交叉的表达式语言指定此集合。 Elements可以是多种内容(取决于目标类型),包括SingleValue(表示单个值)或ValueRange(表示关闭或开放范围)