Hello Lev: Does the ASN.1 specification explicitly say that the "closest" [00 00] should be used to terminate an indefinite TLV ? I search (but not with a very fine tooth comb) the specs, and didn't find such a thing mentioned.
Thanks for your clarification. regards, Banibrata. > -----Original Message----- > From: Lev Walkin [mailto:[EMAIL PROTECTED] > Sent: Sunday, February 27, 2005 9:01 AM > To: Banibrata Dutta > Cc: [email protected] > Subject: Re: [ASN1] question about indefinite encoding in BER > > Banibrata Dutta wrote: > > > Hi, > > > > My question is about indefinite form of encoding in BER. > > > > I believe the TLV = (0x00 0x00) form a regular acceptable > TLV, and can > > also serve as a termination-indicator in case of indefinite > encoding. > > Consider the example:- > > > > ( T1 L1 (T2 L2 V2) (T3 L3 V3) (00 00) (00 00) ) (T4 L4 V4) > > > > ^ > > ( T1 L1 (T2 L2 V2) (T3 L3 V3) (00 00) ) (00 00) (T4 L4 V4) > > > > > ^ where L1 = 0x80. > > > > Which one of the above two cases is legal ? > > If neither L2 nor L3 have indefinite length form (and they > both have definite form, judging from your way of putting > braces around the TLV tuples), then the second case is legal. > > The indefinite form basically pushes the expectation of > end-of-content octets to the decoding stack. Every time the > next TLV at the T1 level is found, it is checked whether it > is end-of-content sequence. The first end-of-content bytes at > the T1 level will serve as a terminator for the T1 sequence. > Please note that if T2 or T3 have indefinite length forms, > they would "eat" the end-of-content octets closest to them: > > T1 iL1 ; indefinite form > T2 iL2 ; indefinite form > ... > 00 00 ; terminates T2! > T3 L3 ; definite form > V3 > 00 00 ; terminates T1! > > > > -- > Lev Walkin > [EMAIL PROTECTED] > > _______________________________________________ ASN1 mailing list [email protected] http://lists.asn1.org/mailman/listinfo/asn1
