我正在解析规范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将丢失。
在此背景下对可选组的正确解释是什么?
答案 0 :(得分:1)
看起来您的ASN.1规范无效。你是对的,如果有INITIATOR,RESPONDER必须存在于对象中。在http://asn1-playground.oss.com的免费在线编译器中试用您的规范来确认这一点。