From f102c2015121c6c5f0eefadf63d15555f5ea589e Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Mon, 22 Nov 2004 03:36:26 +0000 Subject: [PATCH] New protocol: RFC2634 ExtendedSecurityServices updates to cms to accomodate the new protocol add author to some files svn path=/trunk/; revision=12573 --- asn1/cms/Makefile | 5 + asn1/cms/cms-exp.cnf | 30 + asn1/cms/cms.cnf | 12 +- asn1/cms/cms_exp.cnf | 19 - asn1/cms/packet-cms-template.c | 1 + asn1/cms/packet-cms-template.h | 1 + asn1/ess/ExtendedSecurityServices.asn | 248 +++++ asn1/ess/Makefile | 5 + asn1/ess/ess.cnf | 43 + asn1/ess/packet-ess-template.c | 89 ++ asn1/ess/packet-ess-template.h | 32 + .../packet-ns_cert_exts-template.c | 1 + .../packet-ns_cert_exts-template.h | 1 + asn1/pkcs1/packet-pkcs1-template.c | 1 + asn1/pkcs1/packet-pkcs1-template.h | 1 + asn1/pkinit/packet-pkinit-template.c | 1 + asn1/pkinit/packet-pkinit-template.h | 1 + asn1/pkinit/pkinit.cnf | 2 +- .../packet-pkixqualified-template.h | 1 + asn1/x509af/packet-x509af-template.c | 1 + asn1/x509af/packet-x509af-template.h | 1 + asn1/x509ce/packet-x509ce-template.c | 1 + asn1/x509ce/packet-x509ce-template.h | 1 + asn1/x509if/packet-x509if-template.c | 3 +- asn1/x509if/packet-x509if-template.h | 1 + asn1/x509sat/packet-x509sat-template.c | 1 + asn1/x509sat/packet-x509sat-template.h | 1 + epan/dissectors/Makefile.common | 2 + epan/dissectors/packet-cms.c | 25 +- epan/dissectors/packet-cms.h | 14 +- epan/dissectors/packet-ess.c | 950 ++++++++++++++++++ epan/dissectors/packet-ess.h | 39 + epan/dissectors/packet-pkinit.c | 23 +- epan/dissectors/packet-pkinit.h | 1 + 34 files changed, 1508 insertions(+), 50 deletions(-) create mode 100755 asn1/cms/Makefile create mode 100644 asn1/cms/cms-exp.cnf delete mode 100644 asn1/cms/cms_exp.cnf create mode 100644 asn1/ess/ExtendedSecurityServices.asn create mode 100755 asn1/ess/Makefile create mode 100644 asn1/ess/ess.cnf create mode 100644 asn1/ess/packet-ess-template.c create mode 100644 asn1/ess/packet-ess-template.h create mode 100644 epan/dissectors/packet-ess.c create mode 100644 epan/dissectors/packet-ess.h diff --git a/asn1/cms/Makefile b/asn1/cms/Makefile new file mode 100755 index 0000000000..3124abcd03 --- /dev/null +++ b/asn1/cms/Makefile @@ -0,0 +1,5 @@ + +../../epan/dissectors/packet-cms.c : ../../tools/asn2eth.py CryptographicMessageSyntax.asn packet-cms-template.c packet-cms-template.h cms.cnf + python ../../tools/asn2eth.py -X -b -k -e -p cms -c cms.cnf -s packet-cms-template CryptographicMessageSyntax.asn + cp packet-cms.* ../../epan/dissectors + diff --git a/asn1/cms/cms-exp.cnf b/asn1/cms/cms-exp.cnf new file mode 100644 index 0000000000..9fbeb1ab7c --- /dev/null +++ b/asn1/cms/cms-exp.cnf @@ -0,0 +1,30 @@ +#.IMPORT_TAG +ContentInfo BER_CLASS_UNI BER_UNI_TAG_SEQUENCE +ContentType BER_CLASS_UNI BER_UNI_TAG_OID +SignedData BER_CLASS_UNI BER_UNI_TAG_SEQUENCE +DigestAlgorithmIdentifiers BER_CLASS_UNI BER_UNI_TAG_SET +SignerInfos BER_CLASS_UNI BER_UNI_TAG_SET +EncapsulatedContentInfo BER_CLASS_UNI BER_UNI_TAG_SEQUENCE +SignerInfo BER_CLASS_UNI BER_UNI_TAG_SEQUENCE +SignerIdentifier -1/*choice*/ -1/*choice*/ +SignedAttributes BER_CLASS_UNI BER_UNI_TAG_SET +UnsignedAttributes BER_CLASS_UNI BER_UNI_TAG_SET +SignatureValue BER_CLASS_UNI BER_UNI_TAG_OCTETSTRING +IssuerAndSerialNumber BER_CLASS_UNI BER_UNI_TAG_SEQUENCE +#.END + +#.TYPE_ATTR +ContentInfo TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0 +ContentType TYPE = FT_STRING DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0 +SignedData TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0 +DigestAlgorithmIdentifiers TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = NULL BITMASK = 0 +SignerInfos TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = NULL BITMASK = 0 +EncapsulatedContentInfo TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0 +SignerInfo TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0 +SignerIdentifier TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = VALS(SignerIdentifier_vals) BITMASK = 0 +SignedAttributes TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = NULL BITMASK = 0 +UnsignedAttributes TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = NULL BITMASK = 0 +SignatureValue TYPE = FT_BYTES DISPLAY = BASE_HEX STRINGS = NULL BITMASK = 0 +IssuerAndSerialNumber TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0 +#.END + diff --git a/asn1/cms/cms.cnf b/asn1/cms/cms.cnf index aeead66849..ca6f88f3f4 100644 --- a/asn1/cms/cms.cnf +++ b/asn1/cms/cms.cnf @@ -12,11 +12,17 @@ InformationFramework x509if #.EXPORTS ContentInfo +ContentType +DigestAlgorithmIdentifiers EncapsulatedContentInfo -SignedData -Countersignature IssuerAndSerialNumber -OtherKeyAttribute +SignedAttributes +SignedData +SignerIdentifier +SignerInfo +SignerInfos +SignatureValue +UnsignedAttributes #.REGISTER SignedData B "1.2.840.113549.1.7.2" "id-signedData" diff --git a/asn1/cms/cms_exp.cnf b/asn1/cms/cms_exp.cnf deleted file mode 100644 index 97673d6923..0000000000 --- a/asn1/cms/cms_exp.cnf +++ /dev/null @@ -1,19 +0,0 @@ -# Do not modify this file. -# It is created automatically by the ASN.1 to Ethereal dissector compiler -# ./cms-exp.cnf -# ../../tools/asn2eth.py -e -X -b -p cms -c cms.cnf CryptographicMessageSyntax.asn - -#.IMPORT_TAG -ContentInfo BER_CLASS_UNI BER_UNI_TAG_SEQUENCE -SignedData BER_CLASS_UNI BER_UNI_TAG_SEQUENCE -IssuerAndSerialNumber BER_CLASS_UNI BER_UNI_TAG_SEQUENCE -Countersignature BER_CLASS_UNI BER_UNI_TAG_SEQUENCE -#.END - -#.TYPE_ATTR -ContentInfo TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0 -SignedData TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0 -IssuerAndSerialNumber TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0 -Countersignature TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0 -#.END - diff --git a/asn1/cms/packet-cms-template.c b/asn1/cms/packet-cms-template.c index 86d478fd14..439f23e267 100644 --- a/asn1/cms/packet-cms-template.c +++ b/asn1/cms/packet-cms-template.c @@ -1,5 +1,6 @@ /* packet-cms.c * Routines for RFC2630 Cryptographic Message Syntax packet dissection + * Ronnie Sahlberg 2004 * * $Id$ * diff --git a/asn1/cms/packet-cms-template.h b/asn1/cms/packet-cms-template.h index 3479f9a55f..6284c15eef 100644 --- a/asn1/cms/packet-cms-template.h +++ b/asn1/cms/packet-cms-template.h @@ -1,5 +1,6 @@ /* packet-cms.h * Routines for RFC2630 Cryptographic Message Syntax packet dissection + * Ronnie Sahlberg 2004 * * $Id$ * diff --git a/asn1/ess/ExtendedSecurityServices.asn b/asn1/ess/ExtendedSecurityServices.asn new file mode 100644 index 0000000000..7ba3b89271 --- /dev/null +++ b/asn1/ess/ExtendedSecurityServices.asn @@ -0,0 +1,248 @@ +-- ExtendedSecurityServices as defined in RFC2634 +-- +-- The ASN definition has been modified to suit the Ethereal ASN2ETH compiler +-- +-- +-- +-- The original ASN.1 definition from RFC2634 contains the following +-- copyright statement: +-- +-- Full Copyright Statement +-- +-- Copyright (C) The Internet Society (1999). All Rights Reserved. +-- +-- This document and translations of it may be copied and furnished to +-- others, and derivative works that comment on or otherwise explain it +-- or assist in its implementation may be prepared, copied, published +-- and distributed, in whole or in part, without restriction of any +-- kind, provided that the above copyright notice and this paragraph are +-- included on all such copies and derivative works. However, this +-- document itself may not be modified in any way, such as by removing +-- the copyright notice or references to the Internet Society or other +-- Internet organizations, except as needed for the purpose of +-- developing Internet standards in which case the procedures for +-- copyrights defined in the Internet Standards process must be +-- followed, or as required to translate it into languages other than +-- English. +-- +-- The limited permissions granted above are perpetual and will not be +-- revoked by the Internet Society or its successors or assigns. +-- +-- This document and the information contained herein is provided on an +-- "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING +-- TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING +-- BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION +-- HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF +-- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. +-- + +ExtendedSecurityServices + { iso(1) member-body(2) us(840) rsadsi(113549) + pkcs(1) pkcs-9(9) smime(16) modules(0) ess(2) } + +DEFINITIONS IMPLICIT TAGS ::= +BEGIN + +IMPORTS + +-- Cryptographic Message Syntax (CMS) + ContentType, IssuerAndSerialNumber + FROM CryptographicMessageSyntax { iso(1) member-body(2) us(840) + rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) modules(0) cms(1)} + +-- X.509 + CertificateSerialNumber FROM AuthenticationFramework + + SubjectKeyIdentifier, PolicyInformation, GeneralNames + FROM CertificateExtensions + {joint-iso-ccitt ds(5) module(1) certificateExtensions(26) 0}; + + +-- Extended Security Services + +-- The construct "SEQUENCE SIZE (1..MAX) OF" appears in several ASN.1 +-- constructs in this module. A valid ASN.1 SEQUENCE can have zero or +-- more entries. The SIZE (1..MAX) construct constrains the SEQUENCE to +-- have at least one entry. MAX indicates the upper bound is unspecified. +-- Implementations are free to choose an upper bound that suits their +-- environment. + +-- UTF8String ::= [UNIVERSAL 12] IMPLICIT OCTET STRING + -- The contents are formatted as described in [UTF8] + +-- Section 2.7 + +ReceiptRequest ::= SEQUENCE { + signedContentIdentifier ContentIdentifier, + receiptsFrom ReceiptsFrom, + receiptsTo SEQUENCE OF GeneralNames } + +-- ub-receiptsTo INTEGER ::= 16 +-- +-- +-- id-aa-receiptRequest OBJECT IDENTIFIER ::= { iso(1) member-body(2) +-- us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 1} + +ContentIdentifier ::= OCTET STRING + +-- id-aa-contentIdentifier OBJECT IDENTIFIER ::= { iso(1) member-body(2) +-- us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 7} + +ReceiptsFrom ::= CHOICE { + allOrFirstTier [0] AllOrFirstTier, + -- formerly "allOrNone [0]AllOrNone" + receiptList [1] SEQUENCE OF GeneralNames } + +AllOrFirstTier ::= INTEGER { -- Formerly AllOrNone + allReceipts (0), + firstTierRecipients (1) } + + +-- Section 2.8 + +Receipt ::= SEQUENCE { + version ESSVersion, + contentType ContentType, + signedContentIdentifier ContentIdentifier, + originatorSignatureValue OCTET STRING } + +-- id-ct-receipt OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) +-- rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-ct(1) 1} + +ESSVersion ::= INTEGER { v1(1) } + +-- Section 2.9 + +ContentHints ::= SEQUENCE { + contentDescription UTF8String OPTIONAL, + contentType ContentType } + +-- id-aa-contentHint OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) +-- rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 4} + +-- Section 2.10 + +MsgSigDigest ::= OCTET STRING + +-- id-aa-msgSigDigest OBJECT IDENTIFIER ::= { iso(1) member-body(2) +-- us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 5} + +-- Section 2.11 + +ContentReference ::= SEQUENCE { + contentType ContentType, + signedContentIdentifier ContentIdentifier, + originatorSignatureValue OCTET STRING } + +-- id-aa-contentReference OBJECT IDENTIFIER ::= { iso(1) member-body(2) +-- us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 10 } + + +-- Section 3.2 +-- ASN2ETH cant handle sets yet +--ESSSecurityLabel ::= SET { +-- security-policy-identifier SecurityPolicyIdentifier, +-- security-classification SecurityClassification OPTIONAL, +-- privacy-mark ESSPrivacyMark OPTIONAL, +-- security-categories SecurityCategories OPTIONAL } +-- +-- id-aa-securityLabel OBJECT IDENTIFIER ::= { iso(1) member-body(2) +-- us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 2} + +SecurityPolicyIdentifier ::= OBJECT IDENTIFIER + +SecurityClassification ::= INTEGER { + unmarked (0), + unclassified (1), + restricted (2), + confidential (3), + secret (4), + top-secret (5) } + +-- ub-integer-options INTEGER ::= 256 + +ESSPrivacyMark ::= CHOICE { + pString PrintableString, + utf8String UTF8String +} + +-- ub-privacy-mark-length INTEGER ::= 128 + +SecurityCategories ::= SET OF SecurityCategory + +-- ub-security-categories INTEGER ::= 64 + +SecurityCategory ::= SEQUENCE { + type [0] OBJECT IDENTIFIER, + value [1] ANY +} + +--Note: The aforementioned SecurityCategory syntax produces identical +--hex encodings as the following SecurityCategory syntax that is +--documented in the X.411 specification: +-- +--SecurityCategory ::= SEQUENCE { +-- type [0] SECURITY-CATEGORY, +-- value [1] ANY DEFINED BY type } +-- +--SECURITY-CATEGORY MACRO ::= +--BEGIN +--TYPE NOTATION ::= type | empty +--VALUE NOTATION ::= value (VALUE OBJECT IDENTIFIER) +--END + +-- Section 3.4 + +-- ASN2ETH cant generate code for ESSSecurityLabel yet +--EquivalentLabels ::= SEQUENCE OF ESSSecurityLabel + +-- id-aa-equivalentLabels OBJECT IDENTIFIER ::= { iso(1) member-body(2) +-- us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 9} + + +-- Section 4.4 + +MLExpansionHistory ::= SEQUENCE OF MLData + +-- id-aa-mlExpandHistory OBJECT IDENTIFIER ::= { iso(1) member-body(2) +-- us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) id-aa(2) 3} + +-- ub-ml-expansion-history INTEGER ::= 64 + +MLData ::= SEQUENCE { + mailListIdentifier EntityIdentifier, + expansionTime GeneralizedTime, + mlReceiptPolicy MLReceiptPolicy OPTIONAL } + +EntityIdentifier ::= CHOICE { + issuerAndSerialNumber IssuerAndSerialNumber, + subjectKeyIdentifier SubjectKeyIdentifier } + +MLReceiptPolicy ::= CHOICE { + none [0] NULL, + insteadOf [1] SEQUENCE OF GeneralNames, + inAdditionTo [2] SEQUENCE OF GeneralNames } + +SigningCertificate ::= SEQUENCE { + certs SEQUENCE OF ESSCertID, + policies SEQUENCE OF PolicyInformation OPTIONAL +} + +-- id-aa-signingCertificate OBJECT IDENTIFIER ::= { iso(1) +-- member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9) +-- smime(16) id-aa(2) 12 } + +ESSCertID ::= SEQUENCE { + certHash Hash, + issuerSerial IssuerSerial OPTIONAL +} + +Hash ::= OCTET STRING -- SHA1 hash of entire certificate + +IssuerSerial ::= SEQUENCE { + issuer GeneralNames, + serialNumber CertificateSerialNumber +} + +END -- of ExtendedSecurityServices + diff --git a/asn1/ess/Makefile b/asn1/ess/Makefile new file mode 100755 index 0000000000..8c5fdcb141 --- /dev/null +++ b/asn1/ess/Makefile @@ -0,0 +1,5 @@ + +../../epan/dissectors/packet-ess.c : ../../tools/asn2eth.py ExtendedSecurityServices.asn packet-ess-template.c packet-ess-template.h ess.cnf + python ../../tools/asn2eth.py -X -b -k -e -p ess -c ess.cnf -s packet-ess-template ExtendedSecurityServices.asn + cp packet-ess.* ../../epan/dissectors + diff --git a/asn1/ess/ess.cnf b/asn1/ess/ess.cnf new file mode 100644 index 0000000000..f630d4dc80 --- /dev/null +++ b/asn1/ess/ess.cnf @@ -0,0 +1,43 @@ +# ess.cnf +# ExtendedSecurityServices conformation file + +# $Id: ess.cnf 12558 2004-11-21 10:16:06Z sahlberg $ + +#.MODULE_IMPORT +AuthenticationFramework x509af +CertificateExtensions x509ce +CryptographicMessageSyntax cms + +#.INCLUDE ../x509af/x509af-exp.cnf +#.INCLUDE ../x509ce/x509ce-exp.cnf +#.INCLUDE ../cms/cms-exp.cnf + +#.EXPORTS + +#.PDU + +#.REGISTER +ReceiptRequest B "1.2.840.113549.1.9.16.2.1" "id-aa-receiptRequest" +ContentIdentifier B "1.2.840.113549.1.9.16.2.7" "id-aa-contentIdentifier" +Receipt B "1.2.840.113549.1.9.16.1.1" "id-ct-receipt" +ContentHints B "1.2.840.113549.1.9.16.2.4" "id-aa-contentHint" +MsgSigDigest B "1.2.840.113549.1.9.16.2.5" "id-aa-msgSigDigest" +ContentReference B "1.2.840.113549.1.9.16.2.10" "id-aa-contentReference" +MLExpansionHistory B "1.2.840.113549.1.9.16.2.3" "id-aa-mlExpandHistory" +SigningCertificate B "1.2.840.113549.1.9.16.2.12" "id-aa-signingCertificate" + +#.NO_EMIT + +#.TYPE_RENAME + +#.FIELD_RENAME + +#.FN_BODY SecurityCategory/type + offset = dissect_ber_object_identifier(FALSE, pinfo, tree, tvb, offset, + hf_ess_SecurityCategory_type_OID, object_identifier_id); + +#.FN_BODY SecurityCategory/value + offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree); + +#.END + diff --git a/asn1/ess/packet-ess-template.c b/asn1/ess/packet-ess-template.c new file mode 100644 index 0000000000..1d0edcf3be --- /dev/null +++ b/asn1/ess/packet-ess-template.c @@ -0,0 +1,89 @@ +/* packet-ess.c + * Routines for RFC2634 Extended Security Services packet dissection + * Ronnie Sahlberg 2004 + * + * $Id: packet-ess-template.c 12438 2004-10-30 02:36:58Z sahlberg $ + * + * Ethereal - Network traffic analyzer + * By Gerald Combs + * Copyright 1998 Gerald Combs + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include + +#include +#include + +#include "packet-ber.h" +#include "packet-ess.h" +#include "packet-cms.h" +#include "packet-x509ce.h" +#include "packet-x509af.h" + +#define PNAME "Extended Security Services" +#define PSNAME "ESS" +#define PFNAME "ess" + +/* Initialize the protocol and registered fields */ +static int proto_ess = -1; +static int hf_ess_SecurityCategory_type_OID = -1; +#include "packet-ess-hf.c" + +/* Initialize the subtree pointers */ +#include "packet-ess-ett.c" + +static char object_identifier_id[64]; /*64 chars should be long enough? */ + +#include "packet-ess-fn.c" + + +/*--- proto_register_ess ----------------------------------------------*/ +void proto_register_ess(void) { + + /* List of fields */ + static hf_register_info hf[] = { + { &hf_ess_SecurityCategory_type_OID, + { "type", "ess.type_OID", FT_STRING, BASE_NONE, NULL, 0, + "Type of Security Category", HFILL }}, +#include "packet-ess-hfarr.c" + }; + + /* List of subtrees */ + static gint *ett[] = { +#include "packet-ess-ettarr.c" + }; + + /* Register protocol */ + proto_ess = proto_register_protocol(PNAME, PSNAME, PFNAME); + + /* Register fields and subtrees */ + proto_register_field_array(proto_ess, hf, array_length(hf)); + proto_register_subtree_array(ett, array_length(ett)); + +} + + +/*--- proto_reg_handoff_ess -------------------------------------------*/ +void proto_reg_handoff_ess(void) { +#include "packet-ess-dis-tab.c" +} + diff --git a/asn1/ess/packet-ess-template.h b/asn1/ess/packet-ess-template.h new file mode 100644 index 0000000000..fecc0788ab --- /dev/null +++ b/asn1/ess/packet-ess-template.h @@ -0,0 +1,32 @@ +/* packet-ess.h + * Routines for RFC2634 Extended Security Services packet dissection + * Ronnie Sahlberg 2004 + * + * $Id: packet-ess-template.h 12437 2004-10-30 02:18:44Z sahlberg $ + * + * Ethereal - Network traffic analyzer + * By Gerald Combs + * Copyright 1998 Gerald Combs + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef PACKET_ESS_H +#define PACKET_ESS_H + +/*#include "packet-ess-exp.h"*/ + +#endif /* PACKET_ESS_H */ + diff --git a/asn1/ns-cert-exts/packet-ns_cert_exts-template.c b/asn1/ns-cert-exts/packet-ns_cert_exts-template.c index 44d3b73316..87bba37dcd 100644 --- a/asn1/ns-cert-exts/packet-ns_cert_exts-template.c +++ b/asn1/ns-cert-exts/packet-ns_cert_exts-template.c @@ -1,5 +1,6 @@ /* packet-ns_cert_exts.c * Routines for NetScape Certificate Extensions packet dissection + * Ronnie Sahlberg 2004 * * $Id$ * diff --git a/asn1/ns-cert-exts/packet-ns_cert_exts-template.h b/asn1/ns-cert-exts/packet-ns_cert_exts-template.h index fdbd43db25..b1ea1fc128 100644 --- a/asn1/ns-cert-exts/packet-ns_cert_exts-template.h +++ b/asn1/ns-cert-exts/packet-ns_cert_exts-template.h @@ -1,5 +1,6 @@ /* packet-ns-cert-exts.h * Routines for NetScape Certificate Extensions packet dissection + * Ronnie Sahlberg 2004 * * $Id$ * diff --git a/asn1/pkcs1/packet-pkcs1-template.c b/asn1/pkcs1/packet-pkcs1-template.c index 7445376f1e..452ac97725 100644 --- a/asn1/pkcs1/packet-pkcs1-template.c +++ b/asn1/pkcs1/packet-pkcs1-template.c @@ -1,5 +1,6 @@ /* packet-pkcs1.c * Routines for PKCS#1/RFC2313 packet dissection + * Ronnie Sahlberg 2004 * * $Id$ * diff --git a/asn1/pkcs1/packet-pkcs1-template.h b/asn1/pkcs1/packet-pkcs1-template.h index 8facce40b4..6cdd04fb54 100644 --- a/asn1/pkcs1/packet-pkcs1-template.h +++ b/asn1/pkcs1/packet-pkcs1-template.h @@ -1,5 +1,6 @@ /* packet-pkcs1.h * Routines for PKCS#1/RFC2313 packet dissection + * Ronnie Sahlberg 2004 * * $Id$ * diff --git a/asn1/pkinit/packet-pkinit-template.c b/asn1/pkinit/packet-pkinit-template.c index 8b217b6228..462214abc6 100644 --- a/asn1/pkinit/packet-pkinit-template.c +++ b/asn1/pkinit/packet-pkinit-template.c @@ -1,5 +1,6 @@ /* packet-pkinit.c * Routines for PKINIT packet dissection + * Ronnie Sahlberg 2004 * * $Id$ * diff --git a/asn1/pkinit/packet-pkinit-template.h b/asn1/pkinit/packet-pkinit-template.h index 7f9e78edeb..6b924cef4d 100644 --- a/asn1/pkinit/packet-pkinit-template.h +++ b/asn1/pkinit/packet-pkinit-template.h @@ -1,5 +1,6 @@ /* packet-pkinit.h * Routines for PKINIT packet dissection + * Ronnie Sahlberg 2004 * * $Id$ * diff --git a/asn1/pkinit/pkinit.cnf b/asn1/pkinit/pkinit.cnf index 4e48a92eee..4918190300 100644 --- a/asn1/pkinit/pkinit.cnf +++ b/asn1/pkinit/pkinit.cnf @@ -8,7 +8,7 @@ PKIX1Explicit88 pkix1explicit CryptographicMessageSyntax cms #.INCLUDE ../pkix1explicit/pkix1explicit_exp.cnf -#.INCLUDE ../cms/cms_exp.cnf +#.INCLUDE ../cms/cms-exp.cnf #.EXPORTS diff --git a/asn1/pkixqualified/packet-pkixqualified-template.h b/asn1/pkixqualified/packet-pkixqualified-template.h index 856f3e631a..32ab885b0d 100644 --- a/asn1/pkixqualified/packet-pkixqualified-template.h +++ b/asn1/pkixqualified/packet-pkixqualified-template.h @@ -1,5 +1,6 @@ /* packet-pkixqualified.h * Routines for RFC3739 PKIXqualified packet dissection + * Ronnie Sahlberg 2004 * * $Id: packet-pkixqualified-template.h 12434 2004-10-29 12:11:42Z sahlberg $ * diff --git a/asn1/x509af/packet-x509af-template.c b/asn1/x509af/packet-x509af-template.c index e202523d5d..bd9abac00f 100644 --- a/asn1/x509af/packet-x509af-template.c +++ b/asn1/x509af/packet-x509af-template.c @@ -1,5 +1,6 @@ /* packet-x509af.c * Routines for X.509 Authentication Framework packet dissection + * Ronnie Sahlberg 2004 * * $Id$ * diff --git a/asn1/x509af/packet-x509af-template.h b/asn1/x509af/packet-x509af-template.h index 91a487ba95..aee498631c 100644 --- a/asn1/x509af/packet-x509af-template.h +++ b/asn1/x509af/packet-x509af-template.h @@ -1,5 +1,6 @@ /* packet-x509af.h * Routines for X.509 Authentication Framework packet dissection + * Ronnie Sahlberg 2004 * * $Id$ * diff --git a/asn1/x509ce/packet-x509ce-template.c b/asn1/x509ce/packet-x509ce-template.c index 7a6391eeae..d463058d29 100644 --- a/asn1/x509ce/packet-x509ce-template.c +++ b/asn1/x509ce/packet-x509ce-template.c @@ -1,5 +1,6 @@ /* packet-x509ce.c * Routines for X.509 Certificate Extensions packet dissection + * Ronnie Sahlberg 2004 * * $Id$ * diff --git a/asn1/x509ce/packet-x509ce-template.h b/asn1/x509ce/packet-x509ce-template.h index f88f4ee741..cc6c44e5fa 100644 --- a/asn1/x509ce/packet-x509ce-template.h +++ b/asn1/x509ce/packet-x509ce-template.h @@ -1,5 +1,6 @@ /* packet-x509ce.h * Routines for X.509 Certificate Extensions packet dissection + * Ronnie Sahlberg 2004 * * $Id$ * diff --git a/asn1/x509if/packet-x509if-template.c b/asn1/x509if/packet-x509if-template.c index 306d671319..4123820793 100644 --- a/asn1/x509if/packet-x509if-template.c +++ b/asn1/x509if/packet-x509if-template.c @@ -1,5 +1,6 @@ /* packet-x509if.c * Routines for X.509 Information Framework packet dissection + * Ronnie Sahlberg 2004 * * $Id$ * @@ -42,7 +43,7 @@ /* Initialize the protocol and registered fields */ int proto_x509if = -1; -int hf_x509if_object_identifier_id = -1; +static int hf_x509if_object_identifier_id = -1; #include "packet-x509if-hf.c" /* Initialize the subtree pointers */ diff --git a/asn1/x509if/packet-x509if-template.h b/asn1/x509if/packet-x509if-template.h index 70f826af9e..1326b15a40 100644 --- a/asn1/x509if/packet-x509if-template.h +++ b/asn1/x509if/packet-x509if-template.h @@ -1,5 +1,6 @@ /* packet-x509if.h * Routines for X.509 Information Framework packet dissection + * Ronnie Sahlberg 2004 * * $Id$ * diff --git a/asn1/x509sat/packet-x509sat-template.c b/asn1/x509sat/packet-x509sat-template.c index 01f8446b4e..c5fde897b4 100644 --- a/asn1/x509sat/packet-x509sat-template.c +++ b/asn1/x509sat/packet-x509sat-template.c @@ -1,6 +1,7 @@ #define BER_UNI_TAG_TeletexString 20 /* until we fix the bug in asn2eth */ /* packet-x509sat.c * Routines for X.509 Selected Attribute Types packet dissection + * Ronnie Sahlberg 2004 * * $Id$ * diff --git a/asn1/x509sat/packet-x509sat-template.h b/asn1/x509sat/packet-x509sat-template.h index 4e936a0a59..fde2edce5f 100644 --- a/asn1/x509sat/packet-x509sat-template.h +++ b/asn1/x509sat/packet-x509sat-template.h @@ -1,5 +1,6 @@ /* packet-x509sat.h * Routines for X.509 Selected Attribute Types packet dissection + * Ronnie Sahlberg 2004 * * $Id$ * diff --git a/epan/dissectors/Makefile.common b/epan/dissectors/Makefile.common index 9a23d39551..024d261b33 100644 --- a/epan/dissectors/Makefile.common +++ b/epan/dissectors/Makefile.common @@ -214,6 +214,7 @@ DISSECTOR_SRC = \ packet-enip.c \ packet-enrp.c \ packet-esis.c \ + packet-ess.c \ packet-eth.c \ packet-etheric.c \ packet-etherip.c \ @@ -596,6 +597,7 @@ DISSECTOR_INCLUDES = \ packet-e164.h \ packet-edonkey.h \ packet-esis.h \ + packet-ess.h \ packet-eth.h \ packet-fc.h \ packet-fcbls.h \ diff --git a/epan/dissectors/packet-cms.c b/epan/dissectors/packet-cms.c index c9ac17158e..1ee134a806 100644 --- a/epan/dissectors/packet-cms.c +++ b/epan/dissectors/packet-cms.c @@ -1,12 +1,13 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Ethereal dissector compiler */ /* ./packet-cms.c */ -/* ../../tools/asn2eth.py -e -X -b -p cms -c cms.cnf -s packet-cms-template CryptographicMessageSyntax.asn */ +/* ../../tools/asn2eth.py -X -b -k -e -p cms -c cms.cnf -s packet-cms-template CryptographicMessageSyntax.asn */ /* Input file: packet-cms-template.c */ /* packet-cms.c * Routines for RFC2630 Cryptographic Message Syntax packet dissection + * Ronnie Sahlberg 2004 * * $Id: packet-cms-template.c 12434 2004-10-29 12:11:42Z sahlberg $ * @@ -209,7 +210,7 @@ static int dissect_serialNumber(packet_info *pinfo, proto_tree *tree, tvbuff_t * } -static int +int dissect_cms_ContentType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL); @@ -302,7 +303,7 @@ static const ber_sequence DigestAlgorithmIdentifiers_set_of[1] = { { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_DigestAlgorithmIdentifiers_item }, }; -static int +int dissect_cms_DigestAlgorithmIdentifiers(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset, DigestAlgorithmIdentifiers_set_of, hf_index, ett_cms_DigestAlgorithmIdentifiers); @@ -575,7 +576,7 @@ static int dissect_subjectKeyIdentifier_impl(packet_info *pinfo, proto_tree *tre } -static const value_string SignerIdentifier_vals[] = { +const value_string SignerIdentifier_vals[] = { { 0, "issuerAndSerialNumber" }, { 1, "subjectKeyIdentifier" }, { 0, NULL } @@ -587,7 +588,7 @@ static const ber_choice SignerIdentifier_choice[] = { { 0, 0, 0, 0, NULL } }; -static int +int dissect_cms_SignerIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_ber_choice(pinfo, tree, tvb, offset, SignerIdentifier_choice, hf_index, ett_cms_SignerIdentifier); @@ -602,7 +603,7 @@ static const ber_sequence SignedAttributes_set_of[1] = { { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_SignedAttributes_item }, }; -static int +int dissect_cms_SignedAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset, SignedAttributes_set_of, hf_index, ett_cms_SignedAttributes); @@ -614,7 +615,7 @@ static int dissect_signedAttrs_impl(packet_info *pinfo, proto_tree *tree, tvbuff } -static int +int dissect_cms_SignatureValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL); @@ -629,7 +630,7 @@ static const ber_sequence UnsignedAttributes_set_of[1] = { { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_UnsignedAttributes_item }, }; -static int +int dissect_cms_UnsignedAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset, UnsignedAttributes_set_of, hf_index, ett_cms_UnsignedAttributes); @@ -651,7 +652,7 @@ static const ber_sequence SignerInfo_sequence[] = { { 0, 0, 0, NULL } }; -static int +int dissect_cms_SignerInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, SignerInfo_sequence, hf_index, ett_cms_SignerInfo); @@ -666,7 +667,7 @@ static const ber_sequence SignerInfos_set_of[1] = { { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_SignerInfos_item }, }; -static int +int dissect_cms_SignerInfos(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset, SignerInfos_set_of, hf_index, ett_cms_SignerInfos); @@ -889,7 +890,7 @@ static const ber_sequence OtherKeyAttribute_sequence[] = { { 0, 0, 0, NULL } }; -int +static int dissect_cms_OtherKeyAttribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, OtherKeyAttribute_sequence, hf_index, ett_cms_OtherKeyAttribute); @@ -1260,7 +1261,7 @@ dissect_cms_AuthenticatedData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offs } -int +static int dissect_cms_Countersignature(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_cms_SignerInfo(implicit_tag, tvb, offset, pinfo, tree, hf_index); diff --git a/epan/dissectors/packet-cms.h b/epan/dissectors/packet-cms.h index 8140f97eb7..36272b827b 100644 --- a/epan/dissectors/packet-cms.h +++ b/epan/dissectors/packet-cms.h @@ -1,12 +1,13 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Ethereal dissector compiler */ /* ./packet-cms.h */ -/* ../../tools/asn2eth.py -e -X -b -p cms -c cms.cnf -s packet-cms-template CryptographicMessageSyntax.asn */ +/* ../../tools/asn2eth.py -X -b -k -e -p cms -c cms.cnf -s packet-cms-template CryptographicMessageSyntax.asn */ /* Input file: packet-cms-template.h */ /* packet-cms.h * Routines for RFC2630 Cryptographic Message Syntax packet dissection + * Ronnie Sahlberg 2004 * * $Id: packet-cms-template.h 12434 2004-10-29 12:11:42Z sahlberg $ * @@ -35,12 +36,19 @@ /*--- Included file: packet-cms-exp.h ---*/ +extern const value_string SignerIdentifier_vals[]; int dissect_cms_ContentInfo(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); +int dissect_cms_ContentType(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); int dissect_cms_SignedData(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); +int dissect_cms_DigestAlgorithmIdentifiers(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); +int dissect_cms_SignerInfos(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); int dissect_cms_EncapsulatedContentInfo(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); +int dissect_cms_SignerInfo(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); +int dissect_cms_SignerIdentifier(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); +int dissect_cms_SignedAttributes(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); +int dissect_cms_UnsignedAttributes(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); +int dissect_cms_SignatureValue(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); int dissect_cms_IssuerAndSerialNumber(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); -int dissect_cms_OtherKeyAttribute(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); -int dissect_cms_Countersignature(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); /*--- End of included file: packet-cms-exp.h ---*/ diff --git a/epan/dissectors/packet-ess.c b/epan/dissectors/packet-ess.c new file mode 100644 index 0000000000..25cc981860 --- /dev/null +++ b/epan/dissectors/packet-ess.c @@ -0,0 +1,950 @@ +/* Do not modify this file. */ +/* It is created automatically by the ASN.1 to Ethereal dissector compiler */ +/* ./packet-ess.c */ +/* ../../tools/asn2eth.py -X -b -k -e -p ess -c ess.cnf -s packet-ess-template ExtendedSecurityServices.asn */ + +/* Input file: packet-ess-template.c */ + +/* packet-ess.c + * Routines for RFC2634 Extended Security Services packet dissection + * Ronnie Sahlberg 2004 + * + * $Id: packet-ess-template.c 12438 2004-10-30 02:36:58Z sahlberg $ + * + * Ethereal - Network traffic analyzer + * By Gerald Combs + * Copyright 1998 Gerald Combs + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include + +#include +#include + +#include "packet-ber.h" +#include "packet-ess.h" +#include "packet-cms.h" +#include "packet-x509ce.h" +#include "packet-x509af.h" + +#define PNAME "Extended Security Services" +#define PSNAME "ESS" +#define PFNAME "ess" + +/* Initialize the protocol and registered fields */ +static int proto_ess = -1; +static int hf_ess_SecurityCategory_type_OID = -1; + +/*--- Included file: packet-ess-hf.c ---*/ + +static int hf_ess_ReceiptRequest_PDU = -1; /* ReceiptRequest */ +static int hf_ess_ContentIdentifier_PDU = -1; /* ContentIdentifier */ +static int hf_ess_Receipt_PDU = -1; /* Receipt */ +static int hf_ess_ContentHints_PDU = -1; /* ContentHints */ +static int hf_ess_MsgSigDigest_PDU = -1; /* MsgSigDigest */ +static int hf_ess_ContentReference_PDU = -1; /* ContentReference */ +static int hf_ess_MLExpansionHistory_PDU = -1; /* MLExpansionHistory */ +static int hf_ess_SigningCertificate_PDU = -1; /* SigningCertificate */ +static int hf_ess_signedContentIdentifier = -1; /* ContentIdentifier */ +static int hf_ess_receiptsFrom = -1; /* ReceiptsFrom */ +static int hf_ess_receiptsTo = -1; /* SEQUNCE_OF_GeneralNames */ +static int hf_ess_receiptsTo_item = -1; /* GeneralNames */ +static int hf_ess_allOrFirstTier = -1; /* AllOrFirstTier */ +static int hf_ess_receiptList = -1; /* SEQUNCE_OF_GeneralNames */ +static int hf_ess_receiptList_item = -1; /* GeneralNames */ +static int hf_ess_version = -1; /* ESSVersion */ +static int hf_ess_contentType = -1; /* ContentType */ +static int hf_ess_originatorSignatureValue = -1; /* OCTET_STRING */ +static int hf_ess_contentDescription = -1; /* UTF8String */ +static int hf_ess_pString = -1; /* PrintableString */ +static int hf_ess_utf8String = -1; /* UTF8String */ +static int hf_ess_SecurityCategories_item = -1; /* SecurityCategory */ +static int hf_ess_type = -1; /* T_type */ +static int hf_ess_value = -1; /* T_value */ +static int hf_ess_MLExpansionHistory_item = -1; /* MLData */ +static int hf_ess_mailListIdentifier = -1; /* EntityIdentifier */ +static int hf_ess_expansionTime = -1; /* GeneralizedTime */ +static int hf_ess_mlReceiptPolicy = -1; /* MLReceiptPolicy */ +static int hf_ess_issuerAndSerialNumber = -1; /* IssuerAndSerialNumber */ +static int hf_ess_subjectKeyIdentifier = -1; /* SubjectKeyIdentifier */ +static int hf_ess_none = -1; /* NULL */ +static int hf_ess_insteadOf = -1; /* SEQUNCE_OF_GeneralNames */ +static int hf_ess_insteadOf_item = -1; /* GeneralNames */ +static int hf_ess_inAdditionTo = -1; /* SEQUNCE_OF_GeneralNames */ +static int hf_ess_inAdditionTo_item = -1; /* GeneralNames */ +static int hf_ess_certs = -1; /* SEQUNCE_OF_ESSCertID */ +static int hf_ess_certs_item = -1; /* ESSCertID */ +static int hf_ess_policies = -1; /* SEQUNCE_OF_PolicyInformation */ +static int hf_ess_policies_item = -1; /* PolicyInformation */ +static int hf_ess_certHash = -1; /* Hash */ +static int hf_ess_issuerSerial = -1; /* IssuerSerial */ +static int hf_ess_issuer = -1; /* GeneralNames */ +static int hf_ess_serialNumber = -1; /* CertificateSerialNumber */ + +/*--- End of included file: packet-ess-hf.c ---*/ + + +/* Initialize the subtree pointers */ + +/*--- Included file: packet-ess-ett.c ---*/ + +static gint ett_ess_ReceiptRequest = -1; +static gint ett_ess_SEQUNCE_OF_GeneralNames = -1; +static gint ett_ess_ReceiptsFrom = -1; +static gint ett_ess_Receipt = -1; +static gint ett_ess_ContentHints = -1; +static gint ett_ess_ContentReference = -1; +static gint ett_ess_ESSPrivacyMark = -1; +static gint ett_ess_SecurityCategories = -1; +static gint ett_ess_SecurityCategory = -1; +static gint ett_ess_MLExpansionHistory = -1; +static gint ett_ess_MLData = -1; +static gint ett_ess_EntityIdentifier = -1; +static gint ett_ess_MLReceiptPolicy = -1; +static gint ett_ess_SigningCertificate = -1; +static gint ett_ess_SEQUNCE_OF_ESSCertID = -1; +static gint ett_ess_SEQUNCE_OF_PolicyInformation = -1; +static gint ett_ess_ESSCertID = -1; +static gint ett_ess_IssuerSerial = -1; + +/*--- End of included file: packet-ess-ett.c ---*/ + + +static char object_identifier_id[64]; /*64 chars should be long enough? */ + + +/*--- Included file: packet-ess-fn.c ---*/ + +/*--- Fields for imported types ---*/ + +static int dissect_receiptsTo_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x509ce_GeneralNames(FALSE, tvb, offset, pinfo, tree, hf_ess_receiptsTo_item); +} +static int dissect_receiptList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x509ce_GeneralNames(FALSE, tvb, offset, pinfo, tree, hf_ess_receiptList_item); +} +static int dissect_contentType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_cms_ContentType(FALSE, tvb, offset, pinfo, tree, hf_ess_contentType); +} +static int dissect_issuerAndSerialNumber(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_cms_IssuerAndSerialNumber(FALSE, tvb, offset, pinfo, tree, hf_ess_issuerAndSerialNumber); +} +static int dissect_subjectKeyIdentifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x509ce_SubjectKeyIdentifier(FALSE, tvb, offset, pinfo, tree, hf_ess_subjectKeyIdentifier); +} +static int dissect_insteadOf_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x509ce_GeneralNames(FALSE, tvb, offset, pinfo, tree, hf_ess_insteadOf_item); +} +static int dissect_inAdditionTo_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x509ce_GeneralNames(FALSE, tvb, offset, pinfo, tree, hf_ess_inAdditionTo_item); +} +static int dissect_policies_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x509ce_PolicyInformation(FALSE, tvb, offset, pinfo, tree, hf_ess_policies_item); +} +static int dissect_issuer(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x509ce_GeneralNames(FALSE, tvb, offset, pinfo, tree, hf_ess_issuer); +} +static int dissect_serialNumber(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x509af_CertificateSerialNumber(FALSE, tvb, offset, pinfo, tree, hf_ess_serialNumber); +} + + +static int +dissect_ess_ContentIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, + NULL); + + return offset; +} +static int dissect_signedContentIdentifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_ess_ContentIdentifier(FALSE, tvb, offset, pinfo, tree, hf_ess_signedContentIdentifier); +} + + +static const value_string AllOrFirstTier_vals[] = { + { 0, "allReceipts" }, + { 1, "firstTierRecipients" }, + { 0, NULL } +}; + + +static int +dissect_ess_AllOrFirstTier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL); + + return offset; +} +static int dissect_allOrFirstTier_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_ess_AllOrFirstTier(TRUE, tvb, offset, pinfo, tree, hf_ess_allOrFirstTier); +} + +static const ber_sequence SEQUNCE_OF_GeneralNames_sequence_of[1] = { + { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_receiptsTo_item }, +}; + +static int +dissect_ess_SEQUNCE_OF_GeneralNames(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset, + SEQUNCE_OF_GeneralNames_sequence_of, hf_index, ett_ess_SEQUNCE_OF_GeneralNames); + + return offset; +} +static int dissect_receiptsTo(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_ess_SEQUNCE_OF_GeneralNames(FALSE, tvb, offset, pinfo, tree, hf_ess_receiptsTo); +} +static int dissect_receiptList_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_ess_SEQUNCE_OF_GeneralNames(TRUE, tvb, offset, pinfo, tree, hf_ess_receiptList); +} +static int dissect_insteadOf_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_ess_SEQUNCE_OF_GeneralNames(TRUE, tvb, offset, pinfo, tree, hf_ess_insteadOf); +} +static int dissect_inAdditionTo_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_ess_SEQUNCE_OF_GeneralNames(TRUE, tvb, offset, pinfo, tree, hf_ess_inAdditionTo); +} + + +static const value_string ReceiptsFrom_vals[] = { + { 0, "allOrFirstTier" }, + { 1, "receiptList" }, + { 0, NULL } +}; + +static const ber_choice ReceiptsFrom_choice[] = { + { 0, BER_CLASS_CON, 0, 0, dissect_allOrFirstTier_impl }, + { 1, BER_CLASS_CON, 1, 0, dissect_receiptList_impl }, + { 0, 0, 0, 0, NULL } +}; + +static int +dissect_ess_ReceiptsFrom(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_choice(pinfo, tree, tvb, offset, + ReceiptsFrom_choice, hf_index, ett_ess_ReceiptsFrom); + + return offset; +} +static int dissect_receiptsFrom(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_ess_ReceiptsFrom(FALSE, tvb, offset, pinfo, tree, hf_ess_receiptsFrom); +} + +static const ber_sequence ReceiptRequest_sequence[] = { + { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_signedContentIdentifier }, + { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_receiptsFrom }, + { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_receiptsTo }, + { 0, 0, 0, NULL } +}; + +static int +dissect_ess_ReceiptRequest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, + ReceiptRequest_sequence, hf_index, ett_ess_ReceiptRequest); + + return offset; +} + + +static const value_string ESSVersion_vals[] = { + { 1, "v1" }, + { 0, NULL } +}; + + +static int +dissect_ess_ESSVersion(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL); + + return offset; +} +static int dissect_version(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_ess_ESSVersion(FALSE, tvb, offset, pinfo, tree, hf_ess_version); +} + + +static int +dissect_ess_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, + NULL); + + return offset; +} +static int dissect_originatorSignatureValue(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_ess_OCTET_STRING(FALSE, tvb, offset, pinfo, tree, hf_ess_originatorSignatureValue); +} + +static const ber_sequence Receipt_sequence[] = { + { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_version }, + { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_contentType }, + { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_signedContentIdentifier }, + { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_originatorSignatureValue }, + { 0, 0, 0, NULL } +}; + +static int +dissect_ess_Receipt(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, + Receipt_sequence, hf_index, ett_ess_Receipt); + + return offset; +} + + +static int +dissect_ess_UTF8String(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_UTF8String, + pinfo, tree, tvb, offset, hf_index, + NULL); + + return offset; +} +static int dissect_contentDescription(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_ess_UTF8String(FALSE, tvb, offset, pinfo, tree, hf_ess_contentDescription); +} +static int dissect_utf8String(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_ess_UTF8String(FALSE, tvb, offset, pinfo, tree, hf_ess_utf8String); +} + +static const ber_sequence ContentHints_sequence[] = { + { BER_CLASS_UNI, BER_UNI_TAG_UTF8String, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_contentDescription }, + { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_contentType }, + { 0, 0, 0, NULL } +}; + +static int +dissect_ess_ContentHints(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, + ContentHints_sequence, hf_index, ett_ess_ContentHints); + + return offset; +} + + +static int +dissect_ess_MsgSigDigest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + +static const ber_sequence ContentReference_sequence[] = { + { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_contentType }, + { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_signedContentIdentifier }, + { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_originatorSignatureValue }, + { 0, 0, 0, NULL } +}; + +static int +dissect_ess_ContentReference(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, + ContentReference_sequence, hf_index, ett_ess_ContentReference); + + return offset; +} + + +static int +dissect_ess_SecurityPolicyIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset, + hf_index, NULL); + + return offset; +} + + +static const value_string SecurityClassification_vals[] = { + { 0, "unmarked" }, + { 1, "unclassified" }, + { 2, "restricted" }, + { 3, "confidential" }, + { 4, "secret" }, + { 5, "top-secret" }, + { 0, NULL } +}; + + +static int +dissect_ess_SecurityClassification(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL); + + return offset; +} + + +static int +dissect_ess_PrintableString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString, + pinfo, tree, tvb, offset, hf_index, + NULL); + + return offset; +} +static int dissect_pString(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_ess_PrintableString(FALSE, tvb, offset, pinfo, tree, hf_ess_pString); +} + + +static const value_string ESSPrivacyMark_vals[] = { + { 0, "pString" }, + { 1, "utf8String" }, + { 0, NULL } +}; + +static const ber_choice ESSPrivacyMark_choice[] = { + { 0, BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_pString }, + { 1, BER_CLASS_UNI, BER_UNI_TAG_UTF8String, BER_FLAGS_NOOWNTAG, dissect_utf8String }, + { 0, 0, 0, 0, NULL } +}; + +static int +dissect_ess_ESSPrivacyMark(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_choice(pinfo, tree, tvb, offset, + ESSPrivacyMark_choice, hf_index, ett_ess_ESSPrivacyMark); + + return offset; +} + + +static int +dissect_ess_T_type(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_object_identifier(FALSE, pinfo, tree, tvb, offset, + hf_ess_SecurityCategory_type_OID, object_identifier_id); + + + return offset; +} +static int dissect_type_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_ess_T_type(TRUE, tvb, offset, pinfo, tree, hf_ess_type); +} + + + +static int +dissect_ess_T_value(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree); + + + return offset; +} +static int dissect_value_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_ess_T_value(TRUE, tvb, offset, pinfo, tree, hf_ess_value); +} + +static const ber_sequence SecurityCategory_sequence[] = { + { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_type_impl }, + { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_value_impl }, + { 0, 0, 0, NULL } +}; + +static int +dissect_ess_SecurityCategory(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, + SecurityCategory_sequence, hf_index, ett_ess_SecurityCategory); + + return offset; +} +static int dissect_SecurityCategories_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_ess_SecurityCategory(FALSE, tvb, offset, pinfo, tree, hf_ess_SecurityCategories_item); +} + +static const ber_sequence SecurityCategories_set_of[1] = { + { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_SecurityCategories_item }, +}; + +static int +dissect_ess_SecurityCategories(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset, + SecurityCategories_set_of, hf_index, ett_ess_SecurityCategories); + + return offset; +} + + +static const value_string EntityIdentifier_vals[] = { + { 0, "issuerAndSerialNumber" }, + { 1, "subjectKeyIdentifier" }, + { 0, NULL } +}; + +static const ber_choice EntityIdentifier_choice[] = { + { 0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_issuerAndSerialNumber }, + { 1, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_subjectKeyIdentifier }, + { 0, 0, 0, 0, NULL } +}; + +static int +dissect_ess_EntityIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_choice(pinfo, tree, tvb, offset, + EntityIdentifier_choice, hf_index, ett_ess_EntityIdentifier); + + return offset; +} +static int dissect_mailListIdentifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_ess_EntityIdentifier(FALSE, tvb, offset, pinfo, tree, hf_ess_mailListIdentifier); +} + + +static int +dissect_ess_GeneralizedTime(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_generalized_time(pinfo, tree, tvb, offset, hf_index); + + return offset; +} +static int dissect_expansionTime(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_ess_GeneralizedTime(FALSE, tvb, offset, pinfo, tree, hf_ess_expansionTime); +} + + +static int +dissect_ess_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + { proto_item *ti_tmp; + ti_tmp = proto_tree_add_item(tree, hf_index, tvb, offset>>8, 0, FALSE); + proto_item_append_text(ti_tmp, ": NULL"); + } + + return offset; +} +static int dissect_none_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_ess_NULL(TRUE, tvb, offset, pinfo, tree, hf_ess_none); +} + + +static const value_string MLReceiptPolicy_vals[] = { + { 0, "none" }, + { 1, "insteadOf" }, + { 2, "inAdditionTo" }, + { 0, NULL } +}; + +static const ber_choice MLReceiptPolicy_choice[] = { + { 0, BER_CLASS_CON, 0, 0, dissect_none_impl }, + { 1, BER_CLASS_CON, 1, 0, dissect_insteadOf_impl }, + { 2, BER_CLASS_CON, 2, 0, dissect_inAdditionTo_impl }, + { 0, 0, 0, 0, NULL } +}; + +static int +dissect_ess_MLReceiptPolicy(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_choice(pinfo, tree, tvb, offset, + MLReceiptPolicy_choice, hf_index, ett_ess_MLReceiptPolicy); + + return offset; +} +static int dissect_mlReceiptPolicy(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_ess_MLReceiptPolicy(FALSE, tvb, offset, pinfo, tree, hf_ess_mlReceiptPolicy); +} + +static const ber_sequence MLData_sequence[] = { + { BER_CLASS_UNI, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mailListIdentifier }, + { BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_expansionTime }, + { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_mlReceiptPolicy }, + { 0, 0, 0, NULL } +}; + +static int +dissect_ess_MLData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, + MLData_sequence, hf_index, ett_ess_MLData); + + return offset; +} +static int dissect_MLExpansionHistory_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_ess_MLData(FALSE, tvb, offset, pinfo, tree, hf_ess_MLExpansionHistory_item); +} + +static const ber_sequence MLExpansionHistory_sequence_of[1] = { + { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_MLExpansionHistory_item }, +}; + +static int +dissect_ess_MLExpansionHistory(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset, + MLExpansionHistory_sequence_of, hf_index, ett_ess_MLExpansionHistory); + + return offset; +} + + +static int +dissect_ess_Hash(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index, + NULL); + + return offset; +} +static int dissect_certHash(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_ess_Hash(FALSE, tvb, offset, pinfo, tree, hf_ess_certHash); +} + +static const ber_sequence IssuerSerial_sequence[] = { + { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_issuer }, + { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_serialNumber }, + { 0, 0, 0, NULL } +}; + +static int +dissect_ess_IssuerSerial(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, + IssuerSerial_sequence, hf_index, ett_ess_IssuerSerial); + + return offset; +} +static int dissect_issuerSerial(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_ess_IssuerSerial(FALSE, tvb, offset, pinfo, tree, hf_ess_issuerSerial); +} + +static const ber_sequence ESSCertID_sequence[] = { + { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_certHash }, + { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_issuerSerial }, + { 0, 0, 0, NULL } +}; + +static int +dissect_ess_ESSCertID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, + ESSCertID_sequence, hf_index, ett_ess_ESSCertID); + + return offset; +} +static int dissect_certs_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_ess_ESSCertID(FALSE, tvb, offset, pinfo, tree, hf_ess_certs_item); +} + +static const ber_sequence SEQUNCE_OF_ESSCertID_sequence_of[1] = { + { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_certs_item }, +}; + +static int +dissect_ess_SEQUNCE_OF_ESSCertID(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset, + SEQUNCE_OF_ESSCertID_sequence_of, hf_index, ett_ess_SEQUNCE_OF_ESSCertID); + + return offset; +} +static int dissect_certs(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_ess_SEQUNCE_OF_ESSCertID(FALSE, tvb, offset, pinfo, tree, hf_ess_certs); +} + +static const ber_sequence SEQUNCE_OF_PolicyInformation_sequence_of[1] = { + { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_policies_item }, +}; + +static int +dissect_ess_SEQUNCE_OF_PolicyInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset, + SEQUNCE_OF_PolicyInformation_sequence_of, hf_index, ett_ess_SEQUNCE_OF_PolicyInformation); + + return offset; +} +static int dissect_policies(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_ess_SEQUNCE_OF_PolicyInformation(FALSE, tvb, offset, pinfo, tree, hf_ess_policies); +} + +static const ber_sequence SigningCertificate_sequence[] = { + { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_certs }, + { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_policies }, + { 0, 0, 0, NULL } +}; + +static int +dissect_ess_SigningCertificate(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, + SigningCertificate_sequence, hf_index, ett_ess_SigningCertificate); + + return offset; +} + +/*--- PDUs ---*/ + +static void dissect_ReceiptRequest_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_ess_ReceiptRequest(FALSE, tvb, 0, pinfo, tree, hf_ess_ReceiptRequest_PDU); +} +static void dissect_ContentIdentifier_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_ess_ContentIdentifier(FALSE, tvb, 0, pinfo, tree, hf_ess_ContentIdentifier_PDU); +} +static void dissect_Receipt_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_ess_Receipt(FALSE, tvb, 0, pinfo, tree, hf_ess_Receipt_PDU); +} +static void dissect_ContentHints_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_ess_ContentHints(FALSE, tvb, 0, pinfo, tree, hf_ess_ContentHints_PDU); +} +static void dissect_MsgSigDigest_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_ess_MsgSigDigest(FALSE, tvb, 0, pinfo, tree, hf_ess_MsgSigDigest_PDU); +} +static void dissect_ContentReference_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_ess_ContentReference(FALSE, tvb, 0, pinfo, tree, hf_ess_ContentReference_PDU); +} +static void dissect_MLExpansionHistory_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_ess_MLExpansionHistory(FALSE, tvb, 0, pinfo, tree, hf_ess_MLExpansionHistory_PDU); +} +static void dissect_SigningCertificate_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_ess_SigningCertificate(FALSE, tvb, 0, pinfo, tree, hf_ess_SigningCertificate_PDU); +} + + +/*--- End of included file: packet-ess-fn.c ---*/ + + + +/*--- proto_register_ess ----------------------------------------------*/ +void proto_register_ess(void) { + + /* List of fields */ + static hf_register_info hf[] = { + { &hf_ess_SecurityCategory_type_OID, + { "type", "ess.type_OID", FT_STRING, BASE_NONE, NULL, 0, + "Type of Security Category", HFILL }}, + +/*--- Included file: packet-ess-hfarr.c ---*/ + + { &hf_ess_ReceiptRequest_PDU, + { "ReceiptRequest", "ess.ReceiptRequest", + FT_NONE, BASE_NONE, NULL, 0, + "ReceiptRequest", HFILL }}, + { &hf_ess_ContentIdentifier_PDU, + { "ContentIdentifier", "ess.ContentIdentifier", + FT_BYTES, BASE_HEX, NULL, 0, + "ContentIdentifier", HFILL }}, + { &hf_ess_Receipt_PDU, + { "Receipt", "ess.Receipt", + FT_NONE, BASE_NONE, NULL, 0, + "Receipt", HFILL }}, + { &hf_ess_ContentHints_PDU, + { "ContentHints", "ess.ContentHints", + FT_NONE, BASE_NONE, NULL, 0, + "ContentHints", HFILL }}, + { &hf_ess_MsgSigDigest_PDU, + { "MsgSigDigest", "ess.MsgSigDigest", + FT_BYTES, BASE_HEX, NULL, 0, + "MsgSigDigest", HFILL }}, + { &hf_ess_ContentReference_PDU, + { "ContentReference", "ess.ContentReference", + FT_NONE, BASE_NONE, NULL, 0, + "ContentReference", HFILL }}, + { &hf_ess_MLExpansionHistory_PDU, + { "MLExpansionHistory", "ess.MLExpansionHistory", + FT_UINT32, BASE_DEC, NULL, 0, + "MLExpansionHistory", HFILL }}, + { &hf_ess_SigningCertificate_PDU, + { "SigningCertificate", "ess.SigningCertificate", + FT_NONE, BASE_NONE, NULL, 0, + "SigningCertificate", HFILL }}, + { &hf_ess_signedContentIdentifier, + { "signedContentIdentifier", "ess.signedContentIdentifier", + FT_BYTES, BASE_HEX, NULL, 0, + "", HFILL }}, + { &hf_ess_receiptsFrom, + { "receiptsFrom", "ess.receiptsFrom", + FT_UINT32, BASE_DEC, VALS(ReceiptsFrom_vals), 0, + "ReceiptRequest/receiptsFrom", HFILL }}, + { &hf_ess_receiptsTo, + { "receiptsTo", "ess.receiptsTo", + FT_UINT32, BASE_DEC, NULL, 0, + "ReceiptRequest/receiptsTo", HFILL }}, + { &hf_ess_receiptsTo_item, + { "Item", "ess.receiptsTo_item", + FT_UINT32, BASE_DEC, NULL, 0, + "ReceiptRequest/receiptsTo/_item", HFILL }}, + { &hf_ess_allOrFirstTier, + { "allOrFirstTier", "ess.allOrFirstTier", + FT_INT32, BASE_DEC, VALS(AllOrFirstTier_vals), 0, + "ReceiptsFrom/allOrFirstTier", HFILL }}, + { &hf_ess_receiptList, + { "receiptList", "ess.receiptList", + FT_UINT32, BASE_DEC, NULL, 0, + "ReceiptsFrom/receiptList", HFILL }}, + { &hf_ess_receiptList_item, + { "Item", "ess.receiptList_item", + FT_UINT32, BASE_DEC, NULL, 0, + "ReceiptsFrom/receiptList/_item", HFILL }}, + { &hf_ess_version, + { "version", "ess.version", + FT_INT32, BASE_DEC, VALS(ESSVersion_vals), 0, + "Receipt/version", HFILL }}, + { &hf_ess_contentType, + { "contentType", "ess.contentType", + FT_STRING, BASE_NONE, NULL, 0, + "", HFILL }}, + { &hf_ess_originatorSignatureValue, + { "originatorSignatureValue", "ess.originatorSignatureValue", + FT_BYTES, BASE_HEX, NULL, 0, + "", HFILL }}, + { &hf_ess_contentDescription, + { "contentDescription", "ess.contentDescription", + FT_STRING, BASE_NONE, NULL, 0, + "ContentHints/contentDescription", HFILL }}, + { &hf_ess_pString, + { "pString", "ess.pString", + FT_STRING, BASE_NONE, NULL, 0, + "ESSPrivacyMark/pString", HFILL }}, + { &hf_ess_utf8String, + { "utf8String", "ess.utf8String", + FT_STRING, BASE_NONE, NULL, 0, + "ESSPrivacyMark/utf8String", HFILL }}, + { &hf_ess_SecurityCategories_item, + { "Item", "ess.SecurityCategories_item", + FT_NONE, BASE_NONE, NULL, 0, + "SecurityCategories/_item", HFILL }}, + { &hf_ess_type, + { "type", "ess.type", + FT_STRING, BASE_NONE, NULL, 0, + "SecurityCategory/type", HFILL }}, + { &hf_ess_value, + { "value", "ess.value", + FT_NONE, BASE_NONE, NULL, 0, + "SecurityCategory/value", HFILL }}, + { &hf_ess_MLExpansionHistory_item, + { "Item", "ess.MLExpansionHistory_item", + FT_NONE, BASE_NONE, NULL, 0, + "MLExpansionHistory/_item", HFILL }}, + { &hf_ess_mailListIdentifier, + { "mailListIdentifier", "ess.mailListIdentifier", + FT_UINT32, BASE_DEC, VALS(EntityIdentifier_vals), 0, + "MLData/mailListIdentifier", HFILL }}, + { &hf_ess_expansionTime, + { "expansionTime", "ess.expansionTime", + FT_STRING, BASE_NONE, NULL, 0, + "MLData/expansionTime", HFILL }}, + { &hf_ess_mlReceiptPolicy, + { "mlReceiptPolicy", "ess.mlReceiptPolicy", + FT_UINT32, BASE_DEC, VALS(MLReceiptPolicy_vals), 0, + "MLData/mlReceiptPolicy", HFILL }}, + { &hf_ess_issuerAndSerialNumber, + { "issuerAndSerialNumber", "ess.issuerAndSerialNumber", + FT_NONE, BASE_NONE, NULL, 0, + "EntityIdentifier/issuerAndSerialNumber", HFILL }}, + { &hf_ess_subjectKeyIdentifier, + { "subjectKeyIdentifier", "ess.subjectKeyIdentifier", + FT_BYTES, BASE_HEX, NULL, 0, + "EntityIdentifier/subjectKeyIdentifier", HFILL }}, + { &hf_ess_none, + { "none", "ess.none", + FT_NONE, BASE_NONE, NULL, 0, + "MLReceiptPolicy/none", HFILL }}, + { &hf_ess_insteadOf, + { "insteadOf", "ess.insteadOf", + FT_UINT32, BASE_DEC, NULL, 0, + "MLReceiptPolicy/insteadOf", HFILL }}, + { &hf_ess_insteadOf_item, + { "Item", "ess.insteadOf_item", + FT_UINT32, BASE_DEC, NULL, 0, + "MLReceiptPolicy/insteadOf/_item", HFILL }}, + { &hf_ess_inAdditionTo, + { "inAdditionTo", "ess.inAdditionTo", + FT_UINT32, BASE_DEC, NULL, 0, + "MLReceiptPolicy/inAdditionTo", HFILL }}, + { &hf_ess_inAdditionTo_item, + { "Item", "ess.inAdditionTo_item", + FT_UINT32, BASE_DEC, NULL, 0, + "MLReceiptPolicy/inAdditionTo/_item", HFILL }}, + { &hf_ess_certs, + { "certs", "ess.certs", + FT_UINT32, BASE_DEC, NULL, 0, + "SigningCertificate/certs", HFILL }}, + { &hf_ess_certs_item, + { "Item", "ess.certs_item", + FT_NONE, BASE_NONE, NULL, 0, + "SigningCertificate/certs/_item", HFILL }}, + { &hf_ess_policies, + { "policies", "ess.policies", + FT_UINT32, BASE_DEC, NULL, 0, + "SigningCertificate/policies", HFILL }}, + { &hf_ess_policies_item, + { "Item", "ess.policies_item", + FT_NONE, BASE_NONE, NULL, 0, + "SigningCertificate/policies/_item", HFILL }}, + { &hf_ess_certHash, + { "certHash", "ess.certHash", + FT_BYTES, BASE_HEX, NULL, 0, + "ESSCertID/certHash", HFILL }}, + { &hf_ess_issuerSerial, + { "issuerSerial", "ess.issuerSerial", + FT_NONE, BASE_NONE, NULL, 0, + "ESSCertID/issuerSerial", HFILL }}, + { &hf_ess_issuer, + { "issuer", "ess.issuer", + FT_UINT32, BASE_DEC, NULL, 0, + "IssuerSerial/issuer", HFILL }}, + { &hf_ess_serialNumber, + { "serialNumber", "ess.serialNumber", + FT_INT32, BASE_DEC, NULL, 0, + "IssuerSerial/serialNumber", HFILL }}, + +/*--- End of included file: packet-ess-hfarr.c ---*/ + + }; + + /* List of subtrees */ + static gint *ett[] = { + +/*--- Included file: packet-ess-ettarr.c ---*/ + + &ett_ess_ReceiptRequest, + &ett_ess_SEQUNCE_OF_GeneralNames, + &ett_ess_ReceiptsFrom, + &ett_ess_Receipt, + &ett_ess_ContentHints, + &ett_ess_ContentReference, + &ett_ess_ESSPrivacyMark, + &ett_ess_SecurityCategories, + &ett_ess_SecurityCategory, + &ett_ess_MLExpansionHistory, + &ett_ess_MLData, + &ett_ess_EntityIdentifier, + &ett_ess_MLReceiptPolicy, + &ett_ess_SigningCertificate, + &ett_ess_SEQUNCE_OF_ESSCertID, + &ett_ess_SEQUNCE_OF_PolicyInformation, + &ett_ess_ESSCertID, + &ett_ess_IssuerSerial, + +/*--- End of included file: packet-ess-ettarr.c ---*/ + + }; + + /* Register protocol */ + proto_ess = proto_register_protocol(PNAME, PSNAME, PFNAME); + + /* Register fields and subtrees */ + proto_register_field_array(proto_ess, hf, array_length(hf)); + proto_register_subtree_array(ett, array_length(ett)); + +} + + +/*--- proto_reg_handoff_ess -------------------------------------------*/ +void proto_reg_handoff_ess(void) { + +/*--- Included file: packet-ess-dis-tab.c ---*/ + + register_ber_oid_dissector("1.2.840.113549.1.9.16.2.1", dissect_ReceiptRequest_PDU, proto_ess, "id-aa-receiptRequest"); + register_ber_oid_dissector("1.2.840.113549.1.9.16.2.7", dissect_ContentIdentifier_PDU, proto_ess, "id-aa-contentIdentifier"); + register_ber_oid_dissector("1.2.840.113549.1.9.16.1.1", dissect_Receipt_PDU, proto_ess, "id-ct-receipt"); + register_ber_oid_dissector("1.2.840.113549.1.9.16.2.4", dissect_ContentHints_PDU, proto_ess, "id-aa-contentHint"); + register_ber_oid_dissector("1.2.840.113549.1.9.16.2.5", dissect_MsgSigDigest_PDU, proto_ess, "id-aa-msgSigDigest"); + register_ber_oid_dissector("1.2.840.113549.1.9.16.2.10", dissect_ContentReference_PDU, proto_ess, "id-aa-contentReference"); + register_ber_oid_dissector("1.2.840.113549.1.9.16.2.3", dissect_MLExpansionHistory_PDU, proto_ess, "id-aa-mlExpandHistory"); + register_ber_oid_dissector("1.2.840.113549.1.9.16.2.12", dissect_SigningCertificate_PDU, proto_ess, "id-aa-signingCertificate"); + + +/*--- End of included file: packet-ess-dis-tab.c ---*/ + +} + diff --git a/epan/dissectors/packet-ess.h b/epan/dissectors/packet-ess.h new file mode 100644 index 0000000000..1e3815f4f4 --- /dev/null +++ b/epan/dissectors/packet-ess.h @@ -0,0 +1,39 @@ +/* Do not modify this file. */ +/* It is created automatically by the ASN.1 to Ethereal dissector compiler */ +/* ./packet-ess.h */ +/* ../../tools/asn2eth.py -X -b -k -e -p ess -c ess.cnf -s packet-ess-template ExtendedSecurityServices.asn */ + +/* Input file: packet-ess-template.h */ + +/* packet-ess.h + * Routines for RFC2634 Extended Security Services packet dissection + * Ronnie Sahlberg 2004 + * + * $Id: packet-ess-template.h 12437 2004-10-30 02:18:44Z sahlberg $ + * + * Ethereal - Network traffic analyzer + * By Gerald Combs + * Copyright 1998 Gerald Combs + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef PACKET_ESS_H +#define PACKET_ESS_H + +/*#include "packet-ess-exp.h"*/ + +#endif /* PACKET_ESS_H */ + diff --git a/epan/dissectors/packet-pkinit.c b/epan/dissectors/packet-pkinit.c index 546d6bcd8d..7866153593 100644 --- a/epan/dissectors/packet-pkinit.c +++ b/epan/dissectors/packet-pkinit.c @@ -7,6 +7,7 @@ /* packet-pkinit.c * Routines for PKINIT packet dissection + * Ronnie Sahlberg 2004 * * $Id: packet-pkinit-template.c 12463 2004-11-01 17:49:53Z gerald $ * @@ -152,7 +153,7 @@ static const ber_choice TrustedCA_choice[] = { }; static int -dissect_pkinit_TrustedCA(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) { +dissect_pkinit_TrustedCA(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_ber_choice(pinfo, tree, tvb, offset, TrustedCA_choice, hf_index, ett_pkinit_TrustedCA); @@ -167,7 +168,7 @@ static const ber_sequence SEQUNCE_OF_TrustedCA_sequence_of[1] = { }; static int -dissect_pkinit_SEQUNCE_OF_TrustedCA(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) { +dissect_pkinit_SEQUNCE_OF_TrustedCA(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset, SEQUNCE_OF_TrustedCA_sequence_of, hf_index, ett_pkinit_SEQUNCE_OF_TrustedCA); @@ -185,7 +186,7 @@ static const ber_sequence PaPkAsReq_sequence[] = { }; static int -dissect_pkinit_PaPkAsReq(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) { +dissect_pkinit_PaPkAsReq(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, PaPkAsReq_sequence, hf_index, ett_pkinit_PaPkAsReq); @@ -195,7 +196,7 @@ dissect_pkinit_PaPkAsReq(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, p static int -dissect_pkinit_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) { +dissect_pkinit_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL); return offset; @@ -210,7 +211,7 @@ static int dissect_dhNonce(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, static int -dissect_pkinit_INTEGER_0_4294967295(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) { +dissect_pkinit_INTEGER_0_4294967295(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_ber_integer_new(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL); return offset; @@ -228,7 +229,7 @@ static const ber_sequence PKAuthenticator_sequence[] = { }; static int -dissect_pkinit_PKAuthenticator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) { +dissect_pkinit_PKAuthenticator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, PKAuthenticator_sequence, hf_index, ett_pkinit_PKAuthenticator); @@ -243,7 +244,7 @@ static const ber_sequence SEQUNCE_OF_AlgorithmIdentifier_sequence_of[1] = { }; static int -dissect_pkinit_SEQUNCE_OF_AlgorithmIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) { +dissect_pkinit_SEQUNCE_OF_AlgorithmIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset, SEQUNCE_OF_AlgorithmIdentifier_sequence_of, hf_index, ett_pkinit_SEQUNCE_OF_AlgorithmIdentifier); @@ -261,7 +262,7 @@ static const ber_sequence AuthPack_sequence[] = { }; static int -dissect_pkinit_AuthPack(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) { +dissect_pkinit_AuthPack(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, AuthPack_sequence, hf_index, ett_pkinit_AuthPack); @@ -282,7 +283,7 @@ static const ber_choice PaPkAsRep_choice[] = { }; static int -dissect_pkinit_PaPkAsRep(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) { +dissect_pkinit_PaPkAsRep(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_ber_choice(pinfo, tree, tvb, offset, PaPkAsRep_choice, hf_index, ett_pkinit_PaPkAsRep); @@ -291,7 +292,7 @@ dissect_pkinit_PaPkAsRep(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, p static int -dissect_pkinit_BIT_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) { +dissect_pkinit_BIT_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset, NULL, hf_index, -1, NULL); @@ -310,7 +311,7 @@ static const ber_sequence KDCDHKeyInfo_sequence[] = { }; static int -dissect_pkinit_KDCDHKeyInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) { +dissect_pkinit_KDCDHKeyInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, KDCDHKeyInfo_sequence, hf_index, ett_pkinit_KDCDHKeyInfo); diff --git a/epan/dissectors/packet-pkinit.h b/epan/dissectors/packet-pkinit.h index 35dcd1de16..61c160efff 100644 --- a/epan/dissectors/packet-pkinit.h +++ b/epan/dissectors/packet-pkinit.h @@ -7,6 +7,7 @@ /* packet-pkinit.h * Routines for PKINIT packet dissection + * Ronnie Sahlberg 2004 * * $Id: packet-pkinit-template.h 12203 2004-10-05 09:18:55Z guy $ *