Ethereal-dev: Re: [Ethereal-dev] Question for packet-ber.c gurus

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: "Ronnie Sahlberg" <ronnie_sahlberg@xxxxxxxxxxxxxx>
Date: Mon, 3 May 2004 20:18:10 +1000
Great stuff.

Any news about the updated h235 machinegenerated dissector?

If not, I can hack up a temporary fix to dissect those missing constructs in
the current handwritten one
so that Michael Oliveras can run his captures through ethereal.

----- Original Message ----- 
From: "Tomas Kukosa"
Sent: Monday, May 03, 2004 6:25 PM
Subject: Re: [Ethereal-dev] Question for packet-ber.c gurus


> The EXPLICIT tags do not need any special handling as it is 'default'
behaviour for the
> BER dissector (the BER dissector was created for Kerberos and it contains
all values
> tagged explicitly). But values tagged implicitly and without tag need
special handling.
>
> See below or into attached files for recommended structures.
> (Attached files are only uncompileable code fragments from ASN2ETH
compiler but it could
> help you.)
>
>    Regards,
>      Tom
>
> static ber_sequence Certificate_sequence[] = {
>    { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG,
> dissect_hf_rfc3280_tbsCertificate },
>    { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG,
> dissect_hf_rfc3280_signatureAlgorithm },
>    { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG,
> dissect_hf_rfc3280_signatureValue },
>    { 0, 0, 0, NULL }
> };
>
> static ber_sequence TBSCertificate_sequence[] = {
>    { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_hf_rfc3280_version },
>    { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG,
> dissect_hf_rfc3280_serialNumber },
>    { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG,
dissect_hf_rfc3280_signature },
>    { -1           , -1, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG,
dissect_hf_rfc3280_issuer },
>    { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG,
dissect_hf_rfc3280_validity },
>    { -1           , -1, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG,
dissect_hf_rfc3280_subject },
>    { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG,
> dissect_hf_rfc3280_subjectPublicKeyInfo },
>    { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG,
> dissect_hf_rfc3280_issuerUniqueID_impl },
>    { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG,
> dissect_hf_rfc3280_subjectUniqueID_impl },
>    { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL,
dissect_hf_rfc3280_extensions },
>    { 0, 0, 0, NULL }
> };
>
>
> Yaniv Kaul wrote:
> > I'm trying to add support for dissecting X.509 certificates to Ethereal
> > (which can then be used in IKE, SSL, anything else that uses them).
> > (I know it's DER, not BER, but still).
> > I'm having a bit of a trouble with it, I suspect it's due to EXPLICIT
tags.
> >  From RFC 3280:
> > Certificate  ::=  SEQUENCE  {
> >        tbsCertificate       TBSCertificate,
> >        signatureAlgorithm   AlgorithmIdentifier,
> >        signatureValue       BIT STRING  }
> >
> >   TBSCertificate  ::=  SEQUENCE  {
> >        version         [0]  EXPLICIT Version DEFAULT v1,
> >        serialNumber         CertificateSerialNumber,
> >
> >
> > I tried creating and dissecting it through the following structures:
> > static ber_sequence Certificate_sequence[] = {
> >    { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, 0, dissect_tbsCertificate },
> >    { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, 0,
> > dissect_TBSCertificate_serialNumber },
> > ...
> >
> > and
> > static ber_sequence TBSCertificate_sequence[1] = {
> >    { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG,
> > dissect_TBSCertificate_version }
> > };
> >
> > and it seems to work - up to the point that it does not dissect the
> > serial number - it hops over it.
> > Any ideas?
> >
> > Do we have anything special for dissecting EXPLICIT tags?
> >
> > Attached is my effort thus far.
> >
> > TIA,
> > Y.
> >
> >
>


----------------------------------------------------------------------------
----


> _______________________________________________
> Ethereal-dev mailing list
> Ethereal-dev@xxxxxxxxxxxx
> http://www.ethereal.com/mailman/listinfo/ethereal-dev
>