Steven Legg wrote:

Hi John,


John Birrell wrote:

Hi,

I'm having difficulty resolving some ASN1. I'm inclined to think that it is
invalid and I'd welcome another opinion that might give me a hint about
what I don't understand.


X519 "IDMProtocolSpecification {joint-iso-itu-t ds(5) module (1) iDMProtocolSpecification (30) 4}"
defines:


IDM-PDU {IDM-PROTOCOL:protocol} ::= CHOICE {
bind [0] Bind{ {protocol} }, bindResult [1] BindResult{ {protocol} },
bindError [2] BindError{ {protocol} }, request [3] Request{ {protocol.&Operations} },
result [4] Result{ {protocol.&Operations} },
error [5] Error{ {protocol.&Operations} }, reject [6] Reject, unbind [7] Unbind, abort [8] Abort }


I parse this as a ParameterizedObjectClass called IDM-PDU with a ParameterList
containing a DummyReference protocol and Governor IDM-PROTOCOL.


IDM-PDU is a parameterized type, not an object class. Type reference names
may also use all uppercase letters.


And then in "DirectoryIDMProtocols {joint-iso-itu-t ds(5) module(1) directoryIDMProtocols(31) 4}"
X519 goes on to define:


DAP-IDM-PDUs ::= IDM-PDU (dap-ip)
dap-ip IDM-PROTOCOL ::= {
BIND-OPERATION directoryBind
OPERATIONS { read | compare | abandon | list | search | addEntry | removeEntry | modifyEntry | modifyDN }
ID id-idm-dap }


The thing I don't understand is how IDM-PDU can be used here with a Constraint,
but without the parameter that it's definition requires. To me Constraints
affect the values the Type takes, but aren't used to define the Type itself
like the IDM-PDU defined above.


My understanding of X682 is that adding a Constraint to a Type creates a unique
subtype, but requires that the Type be resolved first and if a ReferencedType
is defined with a ParameterList, a consistent set of parameters must be
passed.


Either I have a bug in my parser (due to my misunderstanding) or the definition
should read:


DAP-IDM-PDUs ::= IDM-PDU {dap-ip}


The problem is an endemic syntax error in the ASN.1 from X.519. It should
read as the line above (all references to IDM-PDU use () but should
have used {} ). Your understanding and your parser are correct.

BTW corrected modules for X.519 (and a lot of other ITU-T Recommendations) are freely available in the module database of the ITU-T ASN.1 Project at:
http://www.itu.int/itu-t/asn1/database/
--
Olivier DUBUISSON
france telecom R&D


DTL/TAL - 22307 Lannion Cedex - France
t: +33 2 96 05 38 50 - f: +33 2 96 05 39 45 - http://asn1.elibel.tm.fr/




Reply via email to