在definedSyntax中解释ASN.1 optionalGroup

时间:2013-03-21 22:12:22

标签: asn.1

我正在解析规范ETSI TS 129 002(3GPP TS 29.002),其中包含应用程序上下文的类定义:

APPLICATION-CONTEXT ::= CLASS {
   &Symmetric OPERATION-PACKAGE OPTIONAL,
   &InitiatorConsumerOf OPERATION-PACKAGE OPTIONAL,
   &ResponderConsumerOf OPERATION-PACKAGE OPTIONAL,
   &code OBJECT IDENTIFIER }
WITH SYNTAX {
   [ OPERATIONS OF &Symmetric ]
   [ INITIATOR CONSUMER OF &InitiatorConsumerOf
     RESPONDER CONSUMER OF &ResponderConsumerOf ]
     ID &code }

在同一规范中,这个类的实例化如

resetContext-v3 APPLICATION-CONTEXT ::= {
    -- Responder is VLR or SGSN if Initiator is HLR or CSS 
    INITIATOR CONSUMER OF {
    resetPackage-v3}
 ID {map-ac reset(10) version3(3)} }

据我了解,该课程有两个可选组(OPERATIONS和INITIATOR ... RESPONDER)和一个必需组(ID)。可选组本身由必需的令牌组成。通过这种方式看,类的实例化将无效,因为RESPONDER部分缺失。两个片段都来自相同的规范,所以我认为它们不应该是无效的。

X.680中的附加声明指出,可选组的第一个标记的出现使该组出现。在这种情况下,令牌INITIATOR会标记该组存在。但是,所需的令牌RESPONDER将丢失。

在此背景下对可选组的正确解释是什么?

1 个答案:

答案 0 :(得分:1)

看起来您的ASN.1规范无效。你是对的,如果有INITIATOR,RESPONDER必须存在于对象中。在http://asn1-playground.oss.com的免费在线编译器中试用您的规范来确认这一点。