Question

I'm parsing spec ETSI TS 129 002 (3GPP TS 29.002) which contains a class definition for application context:

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 }

In the same spec there are instantiations of this class like

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)} }

To my understanding the class has two optional groups (OPERATIONS and INITIATOR...RESPONDER) and a required one (ID). A optional group itself consists of required tokens. Seeing it that way the instantiation of the class would be invalid as the RESPONDER part is missing. Both of the snippets are taken from the same spec so I assume they are not supposed to be invalid.

An additional statement in X.680 states that the appearance of the first token of an optional group makes the group present. In this case the token INITIATOR would mark that group present. But then the required token RESPONDER would be missing.

What is the proper interpretation of the optional group in this context?

Was it helpful?

Solution

It looks like you have an invalid ASN.1 specification. You are correct that RESPONDER must be present in the object if INITIATOR is present. Try your specification in the free online compiler at http://asn1-playground.oss.com to confirm this.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top