关于COMPONENT OF约束对可扩展性影响的技术验证问询
ASN.1子类型约束对SEQUENCE OF可扩展性的影响验证
我们认为ConstrainedContentSequence不可扩展,最多允许包含8个Content值,且该类型采用PER编码时无扩展位。同事对此感到意外——新增约束针对的是SEQUENCE OF的组件类型而非其本身,但SEQUENCE OF的可扩展性却被移除。我们的判断是:该新增约束本质是对SEQUENCE OF的约束,只是作用于组件值层面,现需验证此观点是否正确。
原始ASN.1定义
Content ::= INTEGER(1..16) ContentSequence ::= SEQUENCE (SIZE(1..8, ...)) OF Content ConstrainedContentSequence ::= ContentSequence (WITH COMPONENT (1..7))
我们的结论
ConstrainedContentSequence等价于:
SEQUENCE (SIZE(1..8)) OF INTEGER(1..7)
而非:
SEQUENCE (SIZE(1..8, ...)) OF INTEGER(1..7)
依据:X.680第50.11条款
若子类型约束被串行应用于通过可扩展约束实现可扩展的父类型,约束内使用的值标记不得引用父类型扩展根之外的值。第二次(串行应用的)约束的结果定义为等同于将约束应用于不带扩展标记及可能的扩展附加项的父类型。
技术解释
父类型ContentSequence是带扩展标记...的可扩展SEQUENCE OF类型。当对其串行应用WITH COMPONENT (1..7)约束时,触发了X.680第50.11条款:
- 条款要求,串行约束的结果等价于将该组件约束应用到移除了扩展标记和扩展附加项的父类型上
- 父类型原本的
SIZE(1..8, ...)会被剥离扩展标记,变为SIZE(1..8) - 同时组件类型
Content被约束为INTEGER(1..7)
因此,ConstrainedContentSequence的可扩展性被完全移除,我们的观点是正确的,未遗漏核心要点。
内容的提问来源于stack exchange,提问作者Kevin
相关产品推荐
相关产品推荐

