From 9f50d5946a43b844e8f086fd3973d02bfa8b3ca3 Mon Sep 17 00:00:00 2001 From: etxrab Date: Mon, 5 Dec 2005 23:00:03 +0000 Subject: From Grame Lunt: a patch for the X.411, X420 and CMS dissectors to implement the remaining heading extensions and bodyparts. This includes GeneralText BP, forwarded content BP (forwarded p22 and forwarded p772), PKCS#7 BP, and "business class" messaging extensions. The X.411 extensions using the SIGNATURE macro have also been implemented. There is also a fix for a bug in the dissection of integer 22 content type. Graeme git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@16689 f5534014-38df-0310-8fa8-9805f1628bb7 --- asn1/Makefile.nmake | 364 ++++++++ asn1/cms/cms-exp.cnf | 2 +- asn1/cms/cms.cnf | 2 + asn1/x411/x411-exp.cnf | 10 + asn1/x411/x411.asn | 40 +- asn1/x411/x411.cnf | 20 +- asn1/x420/Makefile.nmake | 4 +- asn1/x420/packet-x420-template.c | 30 + asn1/x420/x420.asn | 416 ++++++++- asn1/x420/x420.cnf | 69 ++ epan/dissectors/packet-cms.c | 58 +- epan/dissectors/packet-cms.h | 7 +- epan/dissectors/packet-x411.c | 366 +++++++- epan/dissectors/packet-x411.h | 12 +- epan/dissectors/packet-x420.c | 1720 +++++++++++++++++++++++++++++++++----- epan/dissectors/packet-x420.h | 5 +- 16 files changed, 2823 insertions(+), 302 deletions(-) create mode 100644 asn1/Makefile.nmake diff --git a/asn1/Makefile.nmake b/asn1/Makefile.nmake new file mode 100644 index 0000000000..3daa479c1e --- /dev/null +++ b/asn1/Makefile.nmake @@ -0,0 +1,364 @@ + + + +all: \ + acse \ + camel \ + cdt \ + cmip \ + cms \ + dap \ + disp \ + dsp \ + ess \ + ftam \ + ftbp \ + gnm \ + gsmmap \ + gsm_ss \ + h225 \ + h235 \ + h245 \ + h248 \ + h450 \ + inap \ + logotype-cert-extn \ + MAP_Dialogue \ + mms \ + nbap \ + ns-cert-exts \ + ocsp \ + pkcs1 \ + pkinit \ + pkix1explicit \ + pkix1implicit \ + pkixcmp \ + pkixcrmf \ + pkixproxy \ + pkixqualified \ + pkixtsp \ + pres \ + ranap \ + ros \ + rtse \ + s4406 \ + smrse \ + spnego \ + tcap \ + wlancertextn \ + x411 \ + x420 \ + x501 \ + x509af \ + x509ce \ + x509if \ + x509sat + + +ber: \ + acse \ + camel \ + cdt \ + cmip \ + cms \ + dap \ + disp \ + dsp \ + ess \ + ftam \ + ftbp \ + gnm \ + gsmmap \ + gsm_ss \ + inap \ + logotype-cert-extn \ + MAP_Dialogue \ + mms \ + ns-cert-exts \ + ocsp \ + pkcs1 \ + pkinit \ + pkix1explicit \ + pkix1implicit \ + pkixcmp \ + pkixcrmf \ + pkixproxy \ + pkixqualified \ + pkixtsp \ + pres \ + ros \ + rtse \ + s4406 \ + smrse \ + spnego \ + tcap \ + wlancertextn \ + x411 \ + x420 \ + x501 \ + x509af \ + x509ce \ + x509if \ + x509sat + +per: \ + h225 \ + h235 \ + h245 \ + h248 \ + h450 \ + ranap + +acse:: + cd acse + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd .. + +camel:: + cd camel + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +cdt:: + cd cdt + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +cmip:: + cd cmip + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +cms:: + cd cms + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +dap:: + cd cms + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +disp:: + cd disp + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +dsp:: + cd dsp + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +ess:: + cd ess + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +ftam:: + cd ftam + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +ftbp:: + cd ftbp + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +gnm:: + cd gnm + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +gsm_ss:: + cd gsm_ss + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +gsmmap:: + cd gsmmap + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +h225:: + cd h225 + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +h235:: + cd h235 + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +h245:: + cd h245 + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +h248:: + cd h248 + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +h450:: + cd h450 + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +inap:: + cd inap + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +logotype-cert-extn:: + cd logotype-cert-extn + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +MAP_Dialogue:: + cd MAP_Dialogue + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +mms:: + cd mms + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +nbap:: + cd nbap + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +ns-cert-exts:: + cd ns-cert-exts + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +ocsp:: + cd ocsp + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +pkcs1:: + cd pkcs1 + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +pkinit:: + cd pkinit + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +pkix1explicit:: + cd pkix1explicit + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +pkix1implicit:: + cd pkix1implicit + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +pkixcmp:: + cd pkixcmp + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +pkixcrmf:: + cd pkixcrmf + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +pkixproxy:: + cd pkixproxy + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +pkixqualified:: + cd pkixqualified + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +pkixtsp:: + cd pkixtsp + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +pres:: + cd pres + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +ranap:: + cd ranap + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +ros:: + cd ros + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +rtse:: + cd rtse + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +s4406:: + cd s4406 + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +smrse:: + cd smrse + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +spnego:: + cd spnego + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +tcap:: + cd tcap + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +wlancertextn:: + cd wlancertextn + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +x411:: + cd x411 + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +x420:: + cd x420 + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +x501:: + cd x501 + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +x509af:: + cd x509af + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +x509ce:: + cd x509ce + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. + +x509if:: + cd x509if + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. +x509sat:: + cd x509sat + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files + cd.. diff --git a/asn1/cms/cms-exp.cnf b/asn1/cms/cms-exp.cnf index 4cb6434014..a721605a36 100644 --- a/asn1/cms/cms-exp.cnf +++ b/asn1/cms/cms-exp.cnf @@ -17,7 +17,7 @@ Countersignature BER_CLASS_UNI BER_UNI_TAG_SEQUENCE #.TYPE_ATTR ContentInfo TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0 -ContentType TYPE = FT_STRING DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0 +ContentType TYPE = FT_OID 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 diff --git a/asn1/cms/cms.cnf b/asn1/cms/cms.cnf index 95e29b91c1..da70832aee 100644 --- a/asn1/cms/cms.cnf +++ b/asn1/cms/cms.cnf @@ -39,6 +39,8 @@ MessageDigest B "1.2.840.113549.1.9.4" "id-messageDigest" SigningTime B "1.2.840.113549.1.9.5" "id-signingTime" Countersignature B "1.2.840.113549.1.9.6" "id-counterSignature" +ContentInfo B "2.6.1.4.18" "id-et-pkcs7" + #.NO_EMIT #.TYPE_RENAME diff --git a/asn1/x411/x411-exp.cnf b/asn1/x411/x411-exp.cnf index 7e11a63924..20032c013e 100644 --- a/asn1/x411/x411-exp.cnf +++ b/asn1/x411/x411-exp.cnf @@ -1,9 +1,14 @@ #.IMPORT_TAG +MessageSubmissionEnvelope BER_CLASS_UNI BER_UNI_TAG_SET OtherMessageDeliveryFields BER_CLASS_UNI BER_UNI_TAG_SET +MessageDeliveryIdentifier BER_CLASS_APP 4 MessageDeliveryTime BER_CLASS_UNI BER_UNI_TAG_UTCTime SupplementaryInformation BER_CLASS_UNI BER_UNI_TAG_PrintableString +OriginatingMTACertificate BER_CLASS_UNI BER_UNI_TAG_SEQUENCE +ProofOfSubmission BER_CLASS_UNI BER_UNI_TAG_SEQUENCE ExtendedCertificates BER_CLASS_UNI BER_UNI_TAG_SET ORName BER_CLASS_APP 0 +UniversalOrBMPString BER_CLASS_UNI BER_UNI_TAG_SET EncodedInformationTypes BER_CLASS_APP 5 G3FacsimileNonBasicParameters BER_CLASS_UNI BER_UNI_TAG_BITSTRING TeletexNonBasicParameters BER_CLASS_UNI BER_UNI_TAG_SET @@ -11,11 +16,16 @@ SecurityLabel BER_CLASS_UNI BER_UNI_TAG_SET #.END #.TYPE_ATTR +MessageSubmissionEnvelope TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0 OtherMessageDeliveryFields TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0 +MessageDeliveryIdentifier TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0 MessageDeliveryTime TYPE = FT_STRING DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0 SupplementaryInformation TYPE = FT_STRING DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0 +OriginatingMTACertificate TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0 +ProofOfSubmission TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0 ExtendedCertificates TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = NULL BITMASK = 0 ORName TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0 +UniversalOrBMPString TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0 EncodedInformationTypes TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0 G3FacsimileNonBasicParameters TYPE = FT_BYTES DISPLAY = BASE_HEX STRINGS = NULL BITMASK = 0 TeletexNonBasicParameters TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0 diff --git a/asn1/x411/x411.asn b/asn1/x411/x411.asn index a33d32bf13..b4c642d48c 100644 --- a/asn1/x411/x411.asn +++ b/asn1/x411/x411.asn @@ -763,10 +763,10 @@ InitiatorCredentials ::= Credentials ResponderCredentials ::= Credentials Credentials ::= CHOICE { - simple Password + simple Password, -- strong [0] StrongCredentials, -- ..., --- protected [1] ProtectedPassword + protected [1] ProtectedPassword } Password ::= CHOICE { @@ -781,18 +781,24 @@ Password ::= CHOICE { -- certificate-selector [2] CertificateAssertion OPTIONAL --} ---ProtectedPassword ::= SET { --- signature +ProtectedPassword ::= SET { + signature -- SIGNATURE{SET {password Password, -- time1 [0] UTCTime OPTIONAL, -- time2 [1] UTCTime OPTIONAL, -- random1 [2] BIT STRING OPTIONAL, -- random2 [3] BIT STRING OPTIONAL}}, --- time1 [0] UTCTime OPTIONAL, --- time2 [1] UTCTime OPTIONAL, --- random1 [2] BIT STRING OPTIONAL, --- random2 [3] BIT STRING OPTIONAL ---} + Signature, + time1 [0] UTCTime OPTIONAL, + time2 [1] UTCTime OPTIONAL, + random1 [2] BIT STRING OPTIONAL, + random2 [3] BIT STRING OPTIONAL +} + +Signature ::= SEQUENCE { + algorithmIdentifier AlgorithmIdentifier, + encrypted BIT STRING +} SecurityContext ::= SET --SIZE (1..ub-security-labels)-- OF SecurityLabel @@ -1016,7 +1022,7 @@ MessageDeliveryArgument ::= SEQUENCE { MessageDeliveryResult ::= SET { recipient-certificate [0] RecipientCertificate OPTIONAL, --- proof-of-delivery [1] IMPLICIT ProofOfDelivery OPTIONAL, + proof-of-delivery [1] IMPLICIT ProofOfDelivery OPTIONAL, ..., extensions [2] SET OF ExtensionField --{{MessageDeliveryResultExtensions}}-- DEFAULT {} @@ -1142,7 +1148,7 @@ RefusalReason ::= INTEGER { -- Delivery Port Parameters RecipientCertificate ::= Certificates ---ProofOfDelivery ::= +ProofOfDelivery ::= Signature -- SIGNATURE -- {SEQUENCE {algorithm-identifier -- ProofOfDeliveryAlgorithmIdentifier, @@ -1945,7 +1951,7 @@ ContentConfidentialityAlgorithmIdentifier ::= AlgorithmIdentifier -- IDENTIFIED BY standard-extension:18 --} ---ContentIntegrityCheck ::= +ContentIntegrityCheck ::= Signature -- SIGNATURE -- {SEQUENCE {algorithm-identifier -- ContentIntegrityAlgorithmIdentifier OPTIONAL, @@ -1959,7 +1965,7 @@ ContentIntegrityAlgorithmIdentifier ::= AlgorithmIdentifier -- IDENTIFIED BY standard-extension:19 --} ---MessageOriginAuthenticationCheck ::= +MessageOriginAuthenticationCheck ::= Signature -- SIGNATURE -- {SEQUENCE {algorithm-identifier -- MessageOriginAuthenticationAlgorithmIdentifier, @@ -2013,7 +2019,7 @@ ContentCorrelator ::= CHOICE {ia5text IA5String, -- IDENTIFIED BY standard-extension:24 --} ---ProbeOriginAuthenticationCheck ::= +ProbeOriginAuthenticationCheck ::= Signature -- SIGNATURE -- {SEQUENCE {algorithm-identifier -- ProbeOriginAuthenticationAlgorithmIdentifier, @@ -2110,7 +2116,7 @@ ReportingMTACertificate ::= Certificates -- IDENTIFIED BY standard-extension:33 --} ---ReportOriginAuthenticationCheck ::= +ReportOriginAuthenticationCheck ::= Signature -- SIGNATURE -- {SEQUENCE {algorithm-identifier -- ReportOriginAuthenticationAlgorithmIdentifier, @@ -2154,7 +2160,7 @@ OriginatingMTACertificate ::= Certificates -- IDENTIFIED BY standard-extension:35 --} ---ProofOfSubmission ::= +ProofOfSubmission ::= Signature -- SIGNATURE -- {SEQUENCE {algorithm-identifier -- ProofOfSubmissionAlgorithmIdentifier, @@ -2163,7 +2169,7 @@ OriginatingMTACertificate ::= Certificates -- message-submission-identifier MessageSubmissionIdentifier, -- message-submission-time MessageSubmissionTime}} -ProofOfSubmissionAlgorithmIdentifier ::= AlgorithmIdentifier +--ProofOfSubmissionAlgorithmIdentifier ::= AlgorithmIdentifier --reporting-MTA-name EXTENSION ::= { -- ReportingMTAName, diff --git a/asn1/x411/x411.cnf b/asn1/x411/x411.cnf index 6fc533a945..5e87310b24 100644 --- a/asn1/x411/x411.cnf +++ b/asn1/x411/x411.cnf @@ -23,6 +23,11 @@ OtherMessageDeliveryFields SupplementaryInformation TeletexNonBasicParameters SecurityLabel +UniversalOrBMPString +MessageDeliveryIdentifier +ProofOfSubmission +OriginatingMTACertificate +MessageSubmissionEnvelope #.TYPE_RENAME MTABindArgument/authenticated AuthenticatedArgument @@ -142,13 +147,13 @@ PhysicalDeliveryReportRequest B "x411.extension.14" "physical-delivery-report-re OriginatorCertificate B "x411.extension.15" "originator-certificate" ContentConfidentialityAlgorithmIdentifier B "x411.extension.17" "content-confidentiality-algorithm-identifier" - - +ContentIntegrityCheck B "x411.extension.18" "content-integrity-check" +MessageOriginAuthenticationCheck B "x411.extension.19" "message-origin-authentication-check" MessageSecurityLabel B "x411.extension.20" "message-security-label" ProofOfSubmissionRequest B "x411.extension.21" "proof-of-submission-request" ProofOfDeliveryRequest B "x411.extension.22" "proof-of-delivery-request" ContentCorrelator B "x411.extension.23" "content-correlator" - +ProbeOriginAuthenticationCheck B "x411.extension.24" "probe-origin-authentication-check" RedirectionHistory B "x411.extension.25" "redirection-history" DLExpansionHistory B "x411.extension.26" "dl-expansion-history" PhysicalForwardingAddress B "x411.extension.27" "physical-forwarding-address" @@ -157,6 +162,8 @@ PhysicalForwardingAddress B "x411.extension.27" "physical-forwarding-address" OriginatorAndDLExpansionHistory B "x411.extension.30" "originator-and-DL-expansion-history" ReportingDLName B "x411.extension.31" "reporting-DL-name" ReportingMTACertificate B "x411.extension.32" "reporting-MTA-certificate" +ReportOriginAuthenticationCheck B "x411.extension.33" "report-origin-authentication-check" +ProofOfSubmission B "x411.extension.35" "proof-of-submission" TraceInformation B "x411.extension.37" "trace-information" InternalTraceInformation B "x411.extension.38" "internal-trace-information" @@ -179,12 +186,13 @@ PhysicalDeliveryCountryName B "x411.extension-attribute.8" "physical-delivery-co PostalCode B "x411.extension-attribute.9" "postal-code" PhysicalDeliveryOfficeName B "x411.extension-attribute.10" "physical-delivery-office-name" - UniversalCommonName B "x411.extension-attribute.24" "universal-common-name" UniversalOrganizationName B "x411.extension-attribute.25" "universal-organization-name" UniversalPersonalName B "x411.extension-attribute.26" "universal-personal-name" UniversalOrganizationalUnitNames B "x411.extension-attribute.27" "universal-organizational-unit-names" +ReportDeliveryArgument B "2.6.1.4.14" "id-et-report" + #.FN_BODY AdditionalInformation /*XXX not implemented yet */ @@ -314,10 +322,10 @@ UniversalOrganizationalUnitNames B "x411.extension-attribute.27" "universal-orga /* convert integer content type to oid for dispatch when the content is found */ switch(ict) { case 2: - object_identifier_id = ep_strdup("2.6.1.10.0"); + content_type_id = ep_strdup("2.6.1.10.0"); break; case 22: - object_identifier_id = ep_strdup("2.6.1.10.1"); + content_type_id = ep_strdup("2.6.1.10.1"); break; default: break; diff --git a/asn1/x420/Makefile.nmake b/asn1/x420/Makefile.nmake index 7b8e686be1..787c3c3ac3 100644 --- a/asn1/x420/Makefile.nmake +++ b/asn1/x420/Makefile.nmake @@ -37,6 +37,6 @@ fix_eol: generate_dissector del /f packet-$(PROTOCOL_NAME).c.tmp packet-$(PROTOCOL_NAME).h.tmp copy_files: generate_dissector fix_eol - xcopy packet-$(PROTOCOL_NAME).c ..\..\epan\dissectors /d - xcopy packet-$(PROTOCOL_NAME).h ..\..\epan\dissectors /d + xcopy packet-$(PROTOCOL_NAME).c ..\..\epan\dissectors /d /y + xcopy packet-$(PROTOCOL_NAME).h ..\..\epan\dissectors /d /y diff --git a/asn1/x420/packet-x420-template.c b/asn1/x420/packet-x420-template.c index f0be929410..d1ca50cbb1 100644 --- a/asn1/x420/packet-x420-template.c +++ b/asn1/x420/packet-x420-template.c @@ -39,6 +39,7 @@ #include "packet-ros.h" #include "packet-x509af.h" +#include "packet-x509ce.h" #include "packet-x411.h" #include "packet-x420.h" @@ -52,6 +53,35 @@ int proto_x420 = -1; static const char *object_identifier_id; /* content type identifier */ +static const value_string charsetreg_vals [] = { + { 1, "C0: (ISO/IEC 6429)"}, + { 6, "G0: ASCII (ISO/IEC 646)"}, + { 77, "C1: (ISO/IEC 6429)"}, + { 100, "Gn: Latin Alphabet No.1, Western European Supplementary Set (GR area of ISO-8859-1)"}, + { 101, "Gn: Latin Alphabet No.2, Central EuropeanSupplementary Set (GR area of ISO-8859-2)"}, + { 104, "C0: (ISO/IEC 4873)"}, + { 105, "C1: (ISO/IEC 4873)"}, + { 106, "C0: Teletex (CCITT T.61)"}, + { 107, "C1: Teletex (CCITT T.61)"}, + { 109, "Gn: Latin Alphabet No.3, Southern European Supplementary Set (GR area of ISO-8859-3)"}, + { 110, "Gn: Latin Alphabet No.4, Baltic Supplementary Set (GR area of ISO-8859-4)"}, + { 126, "Gn: Greek Supplementary Set (GR area of ISO-8859-7)"}, + { 127, "Gn: Arabic Supplementary Set (GR area of ISO-8859-6)"}, + { 138, "Gn: Hebrew Supplementary Set (GR area of ISO-8859-8)"}, + { 144, "Gn: Cyrillic Supplementary Set (GR area of ISO-8859-5)"}, + { 148, "Gn: Latin Alphabet No.5, Cyrillic Supplementary Set (GR area of ISO-8859-9)"}, + { 154, "Gn: Supplementary Set for Latin Alphabets No.1 or No.5, and No.2"}, + { 157, "Gn: Latin Alphabet No.6, Arabic Supplementary Set (GR area of ISO-8859-10)"}, + { 158, "Gn: Supplementary Set for Sami (Lappish) to complement Latin Alphabet No.6 (from Annex A of ISO-8859-10)"}, + { 166, "Gn: Thai Supplementary Set (GR area of ISO-8859-11)"}, + { 179, "Gn: Latin Alphabet No.7, Baltic Rim Supplementary Set (GR area of ISO-8859-13)"}, + { 182, "Gn: Welsh Variant of Latin Alphabet No.1, Supplementary Set (GR area of ISO-8859-1)"}, + { 197, "Gn: Supplementary Set for Sami to complement Latin Alphabet No.6 (from Annex A of ISO-8859-10)"}, + { 199, "Gn: Latin Alphabet No.8, Celtic Supplementary Set (GR area of ISO-8859-14)"}, + { 203, "Gn: Latin Alphabet No.9, European Rim Supplementary Set (GR area of ISO-8859-15)"}, + { 0, NULL} +}; + #include "packet-x420-hf.c" /* Initialize the subtree pointers */ diff --git a/asn1/x420/x420.asn b/asn1/x420/x420.asn index 70e0d93052..8a58ecd4fa 100644 --- a/asn1/x420/x420.asn +++ b/asn1/x420/x420.asn @@ -68,7 +68,9 @@ IMPORTS EncodedInformationTypes, ExtendedCertificates, EXTENSION, G3FacsimileNonBasicParameters, MessageDeliveryTime, ORName, OtherMessageDeliveryFields, SupplementaryInformation, - TeletexNonBasicParameters + TeletexNonBasicParameters, UniversalOrBMPString, SecurityLabel, + MessageDeliveryIdentifier, ProofOfSubmission, OriginatingMTACertificate, + MessageSubmissionEnvelope --== FROM MTSAbstractService {joint-iso-itu-t mhs(6) mts(3) modules(0) mts-abstract-service(1) version-1999(1)} @@ -93,7 +95,12 @@ IMPORTS -- FROM IPMSObjectIdentifiers {joint-iso-itu-t mhs(6) ipms(1) modules(0) -- object-identifiers(0) version-1999(1)} ; -- EXTERNAL - FROM ACSE-1; + FROM ACSE-1 + CertificateAssertion + --== + FROM CertificateExtensions {joint-iso-itu-t ds(5) module(1) + certificateExtensions(26) 0}; + Time ::= UTCTime @@ -344,9 +351,13 @@ G3FacsimileParameters ::= SET { G3FacsimileData ::= SEQUENCE OF BIT STRING -- G4 Class 1 and Mixed-mode body parts -G4Class1BodyPart ::= SEQUENCE OF Interchange-Data-Element +G4Class1BodyPart ::= G4Class1Data + +G4Class1Data ::= SEQUENCE OF Interchange-Data-Element -MixedModeBodyPart ::= SEQUENCE OF Interchange-Data-Element +MixedModeBodyPart ::= MixedModeData + +MixedModeData ::= SEQUENCE OF Interchange-Data-Element -- Teletex body part TeletexBodyPart ::= SEQUENCE { @@ -388,7 +399,7 @@ EncryptedParameters ::= SET { ... } -EncryptedData ::= BIT STRING(CONSTRAINED BY {BodyPart}) +EncryptedData ::= BIT STRING --(CONSTRAINED BY {BodyPart}) -- Message body part MessageBodyPart ::= SEQUENCE { @@ -601,10 +612,10 @@ BodyPartReferences ::= SEQUENCE OF BodyPartReference BodyPartReference ::= CHOICE { stored-entry [0] SequenceNumber, stored-content [1] SequenceNumber, - submitted-body-part [2] INTEGER(1..MAX), + submitted-body-part [2] INTEGER--(1..MAX)--, stored-body-part [3] SEQUENCE {message-entry SequenceNumber, - body-part-number INTEGER(1..MAX)} + body-part-number --INTEGER(1..MAX)-- BodyPartNumber} } --originator-body-part-encryption-token MS-EXTENSION ::= { @@ -637,7 +648,396 @@ NationallyDefinedBodyPart ::= ANY -- cannot refer to basic types in .cnf .#REGISTER - so we create an intermediate type OriginatingUA ::= IA5String -END -- of IPMSInformationObjects +-- END - - of IPMSInformationObjects + + +-- Module IPMSHeadingExtensions (X.420:06/1999) +--IPMSHeadingExtensions {joint-iso-itu-t mhs(6) ipms(1) modules(0) +-- heading-extensions(6) version-1999(1)} DEFINITIONS IMPLICIT TAGS ::= +--BEGIN + +-- Prologue +-- Exports everything. +--IMPORTS + -- IPMS Information Objects +-- IPMS-EXTENSION, ORDescriptor, RecipientSpecifier, ThisIPMField, BodyPart + --== +-- FROM IPMSInformationObjects {joint-iso-itu-t mhs(6) ipms(1) modules(0) +-- information-objects(2) version-1999(1)} + -- MTS Abstract Service +-- ExtendedCertificates, SecurityLabel, UniversalOrBMPString{} + --== +-- FROM MTSAbstractService {joint-iso-itu-t mhs(6) mts(3) modules(0) +-- mts-abstract-service(1) version-1999(1)} + -- Directory Authentication Framework +-- AlgorithmIdentifier, SIGNATURE{}, SIGNED{} + --== +-- FROM AuthenticationFramework {joint-iso-itu-t ds(5) module(1) +-- authenticationFramework(7) 3} + -- Directory Certificate Extensions +-- CertificateAssertion + --== +-- FROM CertificateExtensions {joint-iso-itu-t ds(5) module(1) +-- certificateExtensions(26) 0} + -- IPMS upper bounds +-- ub-alpha-code-length, ub-circulation-list-members, ub-distribution-codes, +-- ub-extended-subject-length, ub-information-categories, +-- ub-information-category-length, ub-manual-handling-instruction-length, +-- ub-manual-handling-instructions, ub-originators-reference-length, +-- ub-precedence + --== +-- FROM IPMSUpperBounds {joint-iso-itu-t mhs(6) ipms(1) modules(0) +-- upper-bounds(10) version-1999(1)} + -- IPMS Object Identifiers +-- id-hex-authorization-time, id-hex-auto-submitted, +-- id-hex-body-part-signatures, id-hex-circulation-list-recipients, +-- id-hex-distribution-codes, id-hex-extended-subject, id-hex-incomplete-copy, +-- id-hex-information-category, id-hex-ipm-security-label, id-hex-languages, +-- id-hex-manual-handling-instructions, id-hex-originators-reference, +-- id-hex-precedence-policy-id, id-rex-circulation-list-indicator, +-- id-rex-precedence + --== +-- FROM IPMSObjectIdentifiers {joint-iso-itu-t mhs(6) ipms(1) modules(0) +-- object-identifiers(0) version-1999(1)}; + +-- Incomplete Copy +--incomplete-copy IPMS-EXTENSION ::= { +-- VALUE IncompleteCopy, +-- IDENTIFIED BY id-hex-incomplete-copy +--} + +IncompleteCopy ::= NULL + +-- Languages +--languages IPMS-EXTENSION ::= { +-- VALUE SET OF Language, +-- IDENTIFIED BY id-hex-languages +--} + +Languages ::= SET OF Language + +Language ::= PrintableString --(SIZE (2 | 5)) + +-- Auto-submitted +--auto-submitted IPMS-EXTENSION ::= { +-- VALUE AutoSubmitted, +-- IDENTIFIED BY id-hex-auto-submitted +--} + +AutoSubmitted ::= ENUMERATED { + not-auto-submitted(0), auto-generated(1), auto-replied(2)} + +--body-part-signatures IPMS-EXTENSION ::= { +-- VALUE BodyPartSignatures, +-- IDENTIFIED BY id-hex-body-part-signatures +--} + +Signature ::= SEQUENCE { + algorithmIdentifier AlgorithmIdentifier, + encrypted BIT STRING +} + + +BodyPartSignatures ::= + SET OF + SET {body-part-number BodyPartNumber, + body-part-signature BodyPartSignature, + originator-certificate-selector [1] CertificateAssertion OPTIONAL, + originator-certificates [0] ExtendedCertificates OPTIONAL --, +-- ... --} + +BodyPartNumber ::= INTEGER --(1..MAX) + +BodyPartSignature ::= Signature +-- SIGNATURE +-- {SEQUENCE {signature-algorithm-identifier AlgorithmIdentifier, +-- body-part BodyPart, +-- body-part-security-label SecurityLabel OPTIONAL +-- }} + +--ipm-security-label IPMS-EXTENSION ::= { +-- VALUE IPMSecurityLabel, +-- IDENTIFIED BY id-hex-ipm-security-label +--} + +IPMSecurityLabel ::= SEQUENCE { + content-security-label [0] SecurityLabel, + heading-security-label [1] SecurityLabel OPTIONAL, + body-part-security-labels [2] SEQUENCE OF BodyPartSecurityLabel OPTIONAL +} + +BodyPartSecurityLabel ::= CHOICE { + body-part-unlabelled [0] NULL, + body-part-security-label [1] SecurityLabel +} + +-- Authorization Time +--authorization-time IPMS-EXTENSION ::= { +-- VALUE AuthorizationTime, +-- IDENTIFIED BY id-hex-authorization-time +--} + +AuthorizationTime ::= GeneralizedTime + +-- Circulation List +--circulation-list-recipients IPMS-EXTENSION ::= { +-- VALUE CirculationList, +-- IDENTIFIED BY id-hex-circulation-list-recipients +--} + +CirculationList ::= + SEQUENCE (SIZE (2..ub-circulation-list-members)) OF CirculationMember + +CirculationMember ::= SET { + circulation-recipient + RecipientSpecifier +-- (WITH COMPONENTS { +-- ..., +-- recipient (WITH COMPONENTS { +-- ..., +-- formal-name PRESENT +-- }) +-- })--, + checked Checkmark OPTIONAL +} + +Checkmark ::= CHOICE { + simple NULL, + timestamped CirculationTime, + signed CirculationSignature +} + +CirculationTime ::= GeneralizedTime + +CirculationSignatureData ::= +-- SIGNED +-- { --SEQUENCE {algorithm-identifier CirculationSignatureAlgorithmIdentifier, + this-IPM ThisIPMField, + timestamp CirculationTime} --} + +-- expand SIGNED macro + +CirculationSignature ::= SEQUENCE { + circulation-signature-data CirculationSignatureData, + algorithm-identifier AlgorithmIdentifier, + encrypted BIT STRING +} + + + +CirculationSignatureAlgorithmIdentifier ::= AlgorithmIdentifier + +-- Circulation List Indicator +--circulation-list-indicator IPMS-EXTENSION ::= { +-- VALUE NULL, +-- IDENTIFIED BY id-rex-circulation-list-indicator +--} + +CirculationListIndicator ::= NULL + +-- Distribution Codes +--distribution-codes IPMS-EXTENSION ::= { +-- VALUE DistributionCodes, +-- IDENTIFIED BY id-hex-distribution-codes +--} + +DistributionCodes ::= + SEQUENCE --(SIZE (1..ub-distribution-codes))-- OF DistributionCode + +DistributionCode ::= SEQUENCE { + oid-code OBJECT IDENTIFIER OPTIONAL, + alphanumeric-code AlphaCode OPTIONAL, + or-descriptor [0] ORDescriptor OPTIONAL +} + +AlphaCode ::= UniversalOrBMPString --{ub-alpha-code-length} + +-- Extended Subject +--extended-subject IPMS-EXTENSION ::= { +-- VALUE ExtendedSubject, +-- IDENTIFIED BY id-hex-extended-subject +--} + +ExtendedSubject ::= UniversalOrBMPString--{ub-extended-subject-length} + +-- Information category +--information-category IPMS-EXTENSION ::= { +-- VALUE InformationCategories, +-- IDENTIFIED BY id-hex-information-category +--} + +InformationCategories ::= + SEQUENCE --(SIZE (1..ub-information-categories))-- OF InformationCategory + +InformationCategory ::= SEQUENCE { + reference [0] OBJECT IDENTIFIER OPTIONAL, + description [1] DescriptionString OPTIONAL +} + +DescriptionString ::= UniversalOrBMPString --{ub-information-category-length} + +-- Manual handling Instructions +--manual-handling-instructions IPMS-EXTENSION ::= { +-- VALUE ManualHandlingInstructions, +-- IDENTIFIED BY id-hex-manual-handling-instructions +--} + +ManualHandlingInstructions ::= + SEQUENCE --(SIZE (1..ub-manual-handling-instructions))-- OF + ManualHandlingInstruction + +ManualHandlingInstruction ::= + UniversalOrBMPString --{ub-manual-handling-instruction-length} + +-- Originator's Reference +--originators-reference IPMS-EXTENSION ::= { +-- VALUE OriginatorsReference, +-- IDENTIFIED BY id-hex-originators-reference +--} + +OriginatorsReference ::= UniversalOrBMPString--{ub-originators-reference-length} + +-- Precedence Policy Identifier +--precedence-policy-identifier IPMS-EXTENSION ::= { +-- VALUE PrecedencePolicyIdentifier, +-- IDENTIFIED BY id-hex-precedence-policy-id +--} + +PrecedencePolicyIdentifier ::= OBJECT IDENTIFIER + +-- Precedence +--precedence IPMS-EXTENSION ::= { +-- VALUE Precedence, +-- IDENTIFIED BY id-rex-precedence +--} + +Precedence ::= INTEGER(0..ub-precedence) + +-- END - - of IPMSHeadingExtensions + +-- Module IPMSExtendedBodyPartTypes2 (X.420:06/1999) +-- IPMSExtendedBodyPartTypes2 {iso standard mhs(10021) ipms(7) modules(0) +-- extended-body-part-types-2(1)} DEFINITIONS IMPLICIT TAGS ::= +--BEGIN + +-- Prologue +-- Exports everything. +--IMPORTS + -- IPMS Information Objects +-- EXTENDED-BODY-PART-TYPE + --== +-- FROM IPMSInformationObjects {joint-iso-itu-t mhs(6) ipms(1) modules(0) +-- information-objects(2) version-1999(1)} + -- IPMS Object Identifiers +-- id-ep-general-text, id-et-general-text + --== +-- FROM IPMSObjectIdentifiers {joint-iso-itu-t mhs(6) ipms(1) modules(0) +-- object-identifiers(0) version-1999(1)}; + +-- General Text body part +--general-text-body-part EXTENDED-BODY-PART-TYPE ::= { +-- PARAMETERS {GeneralTextParameters +-- IDENTIFIED BY id-ep-general-text}, +-- DATA {GeneralTextData +-- IDENTIFIED BY id-et-general-text} +--} + +GeneralTextParameters ::= SET OF CharacterSetRegistration + +GeneralTextData ::= GeneralString + +CharacterSetRegistration ::= INTEGER(1..32767) + +--END - - of IPMSExtendedBodyPartTypes2 + +-- Module IPMSExtendedVoiceBodyPartType (X.420:06/1999) +--IPMSExtendedVoiceBodyPartType {joint-iso-itu-t mhs(6) ipms(1) modules(0) +-- extended-voice-body-part-type(11)} DEFINITIONS IMPLICIT TAGS ::= +--BEGIN + +-- Prologue +-- Exports everything. +--IMPORTS + -- IPMS Information Objects +-- EXTENDED-BODY-PART-TYPE + --== +-- FROM IPMSInformationObjects {joint-iso-itu-t mhs(6) ipms(1) modules(0) +-- information-objects(2) version-1999(1)} + -- IPMS Object Identifiers +-- id-ep-voice, id-et-voice + --== +-- FROM IPMSObjectIdentifiers {joint-iso-itu-t mhs(6) ipms(1) modules(0) +-- object-identifiers(0) version-1999(1)}; + +-- Extended Voice body part +--voice-body-part EXTENDED-BODY-PART-TYPE ::= { +-- PARAMETERS {VoiceParameters +-- IDENTIFIED BY id-ep-voice}, +-- DATA {VoiceData +-- IDENTIFIED BY id-et-voice} +--} + +VoiceParameters ::= SEQUENCE { + voice-message-duration [0] INTEGER OPTIONAL, -- In seconds + voice-encoding-type [1] OBJECT IDENTIFIER, + supplementary-information [2] IA5String OPTIONAL +} + +VoiceData ::= OCTET STRING + +--END - - of IPMSExtendedVoiceBodyPartType + +-- Module IPMSForwardedContentBodyPartType (X.420:06/1999) +--IPMSForwardedContentBodyPartType {joint-iso-itu-t mhs(6) ipms(1) modules(0) +-- forwarded-content-body-part-type(15)} DEFINITIONS IMPLICIT TAGS ::= +--BEGIN + +-- Prologue +-- Exports everything. +--IMPORTS + -- MTS Abstract Service +-- Content, ExtendedContentType, MessageDeliveryIdentifier, MessageDeliveryTime, +-- MessageSubmissionEnvelope, OriginatingMTACertificate, +-- OtherMessageDeliveryFields, ProofOfSubmission + --== +-- FROM MTSAbstractService {joint-iso-itu-t mhs(6) mts(3) modules(0) +-- mts-abstract-service(1) version-1999(1)} + -- IPMS Information Objects +-- EXTENDED-BODY-PART-TYPE + --== +-- FROM IPMSInformationObjects {joint-iso-itu-t mhs(6) ipms(1) modules(0) +-- information-objects(2) version-1999(1)} + -- IPMS Object Identifiers +-- id-ep-content, id-et-content + --== +-- FROM IPMSObjectIdentifiers {joint-iso-itu-t mhs(6) ipms(1) modules(0) +-- object-identifiers(0) version-1999(1)}; + +-- Forwarded Content body part +--content-body-part{ExtendedContentType:content-type} EXTENDED-BODY-PART-TYPE ::= +-- { +-- PARAMETERS +-- {ForwardedContentParameters +-- IDENTIFIED BY {id-ep-content content-type}}, +-- DATA {Content +-- IDENTIFIED BY {id-et-content content-type}} +--} + +ForwardedContentParameters ::= SET { + delivery-time [0] MessageDeliveryTime OPTIONAL, + delivery-envelope [1] OtherMessageDeliveryFields OPTIONAL, + mts-identifier [2] MessageDeliveryIdentifier OPTIONAL, + submission-proof [3] SubmissionProof OPTIONAL +} + +SubmissionProof ::= SET { + proof-of-submission [0] ProofOfSubmission, + originating-MTA-certificate [1] OriginatingMTACertificate, + message-submission-envelope MessageSubmissionEnvelope +} + +END -- of IPMSForwardedContentBodyPartType -- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D + diff --git a/asn1/x420/x420.cnf b/asn1/x420/x420.cnf index 1ea117d1dc..84d23123fd 100644 --- a/asn1/x420/x420.cnf +++ b/asn1/x420/x420.cnf @@ -1,10 +1,12 @@ #.MODULE_IMPORT MTSAbstractService x411 AuthenticationFramework x509af +CertificateExtensions x509ce ACSE-1 acse #.INCLUDE ../x411/x411-exp.cnf #.INCLUDE ../x509af/x509af-exp.cnf +#.INCLUDE ../x509ce/x509ce-exp.cnf #.INCLUDE ../acse/acse-exp.cnf #.EXPORTS @@ -33,6 +35,9 @@ EncryptedBodyPart/parameters encrypted_parameters TeletexParameters/non-basic-parameters teletex_non_basic_parameters G3FacsimileParameters/non-basic-parameters g3facsimile_non_basic_parameters +BodyPart/encrypted encrypted_bp +CirculationSignatureData/algorithm-identifier circulation-signature-algorithm-identifier + #.PDU OriginatingUA AbsenceAdvice @@ -45,6 +50,59 @@ AbsenceAdvice B "2.6.1.19.0" "id-on-absence-advice" ChangeOfAddressAdvice B "2.6.1.19.1" "id-on-change-of-address-advice" IPMAssemblyInstructions B "2.6.1.17.2" "id-mst-assembly-instructions" +IncompleteCopy B "2.6.1.5.0" "id-hex-languages" +Languages B "2.6.1.5.1" "id-hex-languages" +AutoSubmitted B "2.6.1.5.2" "id-hex-auto-submitted" +BodyPartSignatures B "2.6.1.5.3" "id-hex-body-part-signatures" +IPMSecurityLabel B "2.6.1.5.4" "id-hex-ipm-security-label" +AuthorizationTime B "2.6.1.5.5" "id-hex-authorization-time" +CirculationList B "2.6.1.5.6" "id-hex-circulation-list-recipients" +CirculationListIndicator B "2.6.1.20.0" "id-rex-circulation-list-indicator" +DistributionCodes B "2.6.1.5.7" "id-hex-distribution-codes" +ExtendedSubject B "2.6.1.5.8" "id-hex-extended-subject" +InformationCategories B "2.6.1.5.9" "id-hex-information-categories" +ManualHandlingInstructions B "2.6.1.5.10" "id-hex-manual-handling-instructions" +OriginatorsReference B "2.6.1.5.11" "id-hex-originators-reference" +PrecedencePolicyIdentifier B "2.6.1.5.12" "id-hex-precedence-policy-id" +Precedence B "2.6.1.20.1" "id-rex-precedence" + +IA5TextData B "2.6.1.4.0" "id-et-ia5-text" +IA5TextParameters B "2.6.1.11.0" "id-ep-ia5-text" +G3FacsimileData B "2.6.1.4.2" "id-et-g3-facsimile" +G3FacsimileParameters B "2.6.1.11.2" "id-ep-g3-facsimile" +G4Class1Data B "2.6.1.4.3" "id-et-g4-class1" +TeletexData B "2.6.1.4.4" "id-et-teletex" +TeletexParameters B "2.6.1.11.4" "id-ep-teletex" +VideotexData B "2.6.1.4.5" "id-et-videotex" +VideotexParameters B "2.6.1.11.5" "id-ep-videotex" +EncryptedData B "2.6.1.4.6" "id-et-encrypted" +EncryptedParameters B "2.6.1.11.6" "id-ep-encrypted" +MessageData B "2.6.1.4.7" "id-et-message" +MessageParameters B "2.6.1.11.7" "id-ep-message" +MixedModeData B "2.6.1.4.8" "id-et-mixed-mode" +BilaterallyDefinedBodyPart B "2.6.1.4.9" "id-et-bilaterally-defined" + +GeneralTextParameters B "2.6.1.11.11" "id-ep-general-text" +GeneralTextData B "2.6.1.4.11" "id-et-general-text" +# FileTransferBodyPart {id-et 12} in a separate dissector (ftbp) +# {id-et 13} is no longer defined +# ForwardedReportBodyPart {id-et 14} defined in x411.cnf +MessageParameters B "2.6.1.11.15" "id-ep-notification" +IPN B "2.6.1.4.15" "id-et-notification" +VoiceParameters B "2.6.1.11.16" "id-ep-voice" +VoiceData B "2.6.1.4.16" "id-et-voice" +# P22 +ForwardedContentParameters B "2.6.1.11.17.2.6.1.10.1" "id-ep-content-p22" +InformationObject B "2.6.1.4.17.2.6.1.10.1" "id-et-content-p22" +#p2 +ForwardedContentParameters B "2.6.1.11.17.2.6.1.10.0" "id-ep-content-p2" +InformationObject B "2.6.1.4.17.2.6.1.10.0" "id-et-content-p2" +#p722 +ForwardedContentParameters B "2.6.1.11.17.1.3.26.0.4406.0.4.1" "id-ep-content-p772" +# this will display as P22 for now +InformationObject B "2.6.1.4.17.1.3.26.0.4406.0.4.1" "id-et-content-p772" +# PKCS#7Bodypart {id-et 18} defined in cms.cnf + #.FN_PARS IPMSExtension/type FN_VARIANT = _str VAL_PTR = &object_identifier_id @@ -86,6 +144,16 @@ IPMAssemblyInstructions B "2.6.1.17.2" "id-mst-assembly-instructions" if(subject && check_col(pinfo->cinfo, COL_INFO)) col_append_fstr(pinfo->cinfo, COL_INFO, " (%%s)", tvb_format_text(subject, 0, tvb_length(subject))); +#.FN_PARS CharacterSetRegistration + VAL_PTR=&crs + +#.FN_BODY CharacterSetRegistration + guint32 crs; + proto_item *pi; + %(DEFAULT_BODY)s + + if((pi = get_ber_last_created_item())) + proto_item_append_text(pi, " (%%s)", val_to_str(crs, charsetreg_vals, "unknown")); #.FN_BODY Interchange_Data_Element /* XXX Not implemented yet */ @@ -93,3 +161,4 @@ IPMAssemblyInstructions B "2.6.1.17.2" "id-mst-assembly-instructions" #.FN_BODY NationallyDefinedBodyPart /* XXX Not implemented yet */ + diff --git a/epan/dissectors/packet-cms.c b/epan/dissectors/packet-cms.c index 563e62dc0b..80d0d6eb8c 100644 --- a/epan/dissectors/packet-cms.c +++ b/epan/dissectors/packet-cms.c @@ -1,10 +1,11 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Ethereal dissector compiler */ -/* ./packet-cms.c */ +/* .\packet-cms.c */ /* ../../tools/asn2eth.py -X -b -e -p cms -c cms.cnf -s packet-cms-template CryptographicMessageSyntax.asn */ /* Input file: packet-cms-template.c */ +#line 1 "packet-cms-template.c" /* packet-cms.c * Routines for RFC2630 Cryptographic Message Syntax packet dissection * Ronnie Sahlberg 2004 @@ -58,7 +59,7 @@ int proto_cms = -1; static int hf_cms_ci_contentType = -1; /*--- Included file: packet-cms-hf.c ---*/ - +#line 1 "packet-cms-hf.c" static int hf_cms_ContentInfo_PDU = -1; /* ContentInfo */ static int hf_cms_ContentType_PDU = -1; /* ContentType */ static int hf_cms_SignedData_PDU = -1; /* SignedData */ @@ -146,12 +147,12 @@ static int hf_cms_signature = -1; /* Signature */ static int hf_cms_attributes = -1; /* UnauthAttributes */ /*--- End of included file: packet-cms-hf.c ---*/ - +#line 53 "packet-cms-template.c" /* Initialize the subtree pointers */ /*--- Included file: packet-cms-ett.c ---*/ - +#line 1 "packet-cms-ett.c" static gint ett_cms_ContentInfo = -1; static gint ett_cms_SignedData = -1; static gint ett_cms_DigestAlgorithmIdentifiers = -1; @@ -195,7 +196,7 @@ static gint ett_cms_ExtendedCertificate = -1; static gint ett_cms_ExtendedCertificateInfo = -1; /*--- End of included file: packet-cms-ett.c ---*/ - +#line 56 "packet-cms-template.c" static int dissect_cms_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) ; /* XXX kill a compiler warning until asn2eth stops generating these silly wrappers */ @@ -274,7 +275,7 @@ cms_verify_msg_digest(proto_item *pi, tvbuff_t *content, const char *alg, tvbuff /*--- Included file: packet-cms-fn.c ---*/ - +#line 1 "packet-cms-fn.c" /*--- Fields for imported types ---*/ static int dissect_algorithm(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -312,10 +313,12 @@ static int dissect_encryptedContentType(packet_info *pinfo, proto_tree *tree, tv static int dissect_cms_T_contentType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 60 "cms.cnf" offset = dissect_ber_object_identifier_str(FALSE, pinfo, tree, tvb, offset, hf_cms_ci_contentType, &object_identifier_id); + return offset; } static int dissect_contentType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -326,9 +329,11 @@ static int dissect_contentType(packet_info *pinfo, proto_tree *tree, tvbuff_t *t static int dissect_cms_T_content(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 64 "cms.cnf" offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree); + return offset; } static int dissect_content(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -344,6 +349,7 @@ static const ber_sequence_t ContentInfo_sequence[] = { int dissect_cms_ContentInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 54 "cms.cnf" top_tree = tree; offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, ContentInfo_sequence, hf_index, ett_cms_ContentInfo); @@ -352,6 +358,7 @@ dissect_cms_ContentInfo(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, pa top_tree = NULL; + return offset; } @@ -415,10 +422,12 @@ static int dissect_digestAlgorithms(packet_info *pinfo, proto_tree *tree, tvbuff static int dissect_cms_T_eContentType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 67 "cms.cnf" offset = dissect_ber_object_identifier_str(FALSE, pinfo, tree, tvb, offset, hf_cms_ci_contentType, &object_identifier_id); + return offset; } static int dissect_eContentType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -429,6 +438,7 @@ static int dissect_eContentType(packet_info *pinfo, proto_tree *tree, tvbuff_t * static int dissect_cms_T_eContent(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 71 "cms.cnf" gint8 class; gboolean pc, ind; gint32 tag; @@ -446,6 +456,7 @@ dissect_cms_T_eContent(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, pac content_tvb = tvb_new_subset(tvb, content_offset, len, -1); + return offset; } static int dissect_eContent(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -474,6 +485,7 @@ static int dissect_encapContentInfo(packet_info *pinfo, proto_tree *tree, tvbuff static int dissect_cms_T_attrType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 98 "cms.cnf" char *name = NULL; offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_cms_attrType, &object_identifier_id); @@ -485,6 +497,7 @@ dissect_cms_T_attrType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, pac } + return offset; } static int dissect_attrType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -495,10 +508,12 @@ static int dissect_attrType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, static int dissect_cms_AttributeValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 108 "cms.cnf" offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree); + return offset; } static int dissect_attrValues_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -1049,10 +1064,12 @@ static int dissect_keyAttrId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb static int dissect_cms_T_keyAttr(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 91 "cms.cnf" offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree); + return offset; } static int dissect_keyAttr(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -1462,6 +1479,7 @@ dissect_cms_AuthenticatedData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offs static int dissect_cms_MessageDigest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 112 "cms.cnf" proto_item *pi; int old_offset = offset; @@ -1479,6 +1497,7 @@ dissect_cms_MessageDigest(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, cms_verify_msg_digest(pi, content_tvb, x509af_get_last_algorithm_id(), tvb, old_offset); + return offset; } @@ -1571,7 +1590,7 @@ static void dissect_Countersignature_PDU(tvbuff_t *tvb, packet_info *pinfo, prot /*--- End of included file: packet-cms-fn.c ---*/ - +#line 133 "packet-cms-template.c" /*--- proto_register_cms ----------------------------------------------*/ void proto_register_cms(void) { @@ -1584,14 +1603,14 @@ void proto_register_cms(void) { "ContentType", HFILL }}, /*--- Included file: packet-cms-hfarr.c ---*/ - +#line 1 "packet-cms-hfarr.c" { &hf_cms_ContentInfo_PDU, { "ContentInfo", "cms.ContentInfo", FT_NONE, BASE_NONE, NULL, 0, "ContentInfo", HFILL }}, { &hf_cms_ContentType_PDU, { "ContentType", "cms.ContentType", - FT_STRING, BASE_NONE, NULL, 0, + FT_OID, BASE_NONE, NULL, 0, "ContentType", HFILL }}, { &hf_cms_SignedData_PDU, { "SignedData", "cms.SignedData", @@ -1627,7 +1646,7 @@ void proto_register_cms(void) { "Countersignature", HFILL }}, { &hf_cms_contentType, { "contentType", "cms.contentType", - FT_STRING, BASE_NONE, NULL, 0, + FT_OID, BASE_NONE, NULL, 0, "ContentInfo/contentType", HFILL }}, { &hf_cms_content, { "content", "cms.content", @@ -1667,7 +1686,7 @@ void proto_register_cms(void) { "SignerInfos/_item", HFILL }}, { &hf_cms_eContentType, { "eContentType", "cms.eContentType", - FT_STRING, BASE_NONE, NULL, 0, + FT_OID, BASE_NONE, NULL, 0, "EncapsulatedContentInfo/eContentType", HFILL }}, { &hf_cms_eContent, { "eContent", "cms.eContent", @@ -1715,7 +1734,7 @@ void proto_register_cms(void) { "UnsignedAttributes/_item", HFILL }}, { &hf_cms_attrType, { "attrType", "cms.attrType", - FT_STRING, BASE_NONE, NULL, 0, + FT_OID, BASE_NONE, NULL, 0, "Attribute/attrType", HFILL }}, { &hf_cms_attrValues, { "attrValues", "cms.attrValues", @@ -1751,7 +1770,7 @@ void proto_register_cms(void) { "RecipientInfos/_item", HFILL }}, { &hf_cms_encryptedContentType, { "contentType", "cms.contentType", - FT_STRING, BASE_NONE, NULL, 0, + FT_OID, BASE_NONE, NULL, 0, "EncryptedContentInfo/contentType", HFILL }}, { &hf_cms_contentEncryptionAlgorithm, { "contentEncryptionAlgorithm", "cms.contentEncryptionAlgorithm", @@ -1899,7 +1918,7 @@ void proto_register_cms(void) { "IssuerAndSerialNumber/serialNumber", HFILL }}, { &hf_cms_keyAttrId, { "keyAttrId", "cms.keyAttrId", - FT_STRING, BASE_NONE, NULL, 0, + FT_OID, BASE_NONE, NULL, 0, "OtherKeyAttribute/keyAttrId", HFILL }}, { &hf_cms_keyAttr, { "keyAttr", "cms.keyAttr", @@ -1927,14 +1946,14 @@ void proto_register_cms(void) { "ExtendedCertificateInfo/attributes", HFILL }}, /*--- End of included file: packet-cms-hfarr.c ---*/ - +#line 144 "packet-cms-template.c" }; /* List of subtrees */ static gint *ett[] = { /*--- Included file: packet-cms-ettarr.c ---*/ - +#line 1 "packet-cms-ettarr.c" &ett_cms_ContentInfo, &ett_cms_SignedData, &ett_cms_DigestAlgorithmIdentifiers, @@ -1978,7 +1997,7 @@ void proto_register_cms(void) { &ett_cms_ExtendedCertificateInfo, /*--- End of included file: packet-cms-ettarr.c ---*/ - +#line 149 "packet-cms-template.c" }; /* Register protocol */ @@ -1995,7 +2014,7 @@ void proto_register_cms(void) { void proto_reg_handoff_cms(void) { /*--- Included file: packet-cms-dis-tab.c ---*/ - +#line 1 "packet-cms-dis-tab.c" register_ber_oid_dissector("1.2.840.113549.1.9.16.1.6", dissect_ContentInfo_PDU, proto_cms, "id-ct-contentInfo"); register_ber_oid_dissector("1.2.840.113549.1.7.2", dissect_SignedData_PDU, proto_cms, "id-signedData"); register_ber_oid_dissector("1.2.840.113549.1.7.3", dissect_EnvelopedData_PDU, proto_cms, "id-envelopedData"); @@ -2006,9 +2025,10 @@ void proto_reg_handoff_cms(void) { register_ber_oid_dissector("1.2.840.113549.1.9.4", dissect_MessageDigest_PDU, proto_cms, "id-messageDigest"); register_ber_oid_dissector("1.2.840.113549.1.9.5", dissect_SigningTime_PDU, proto_cms, "id-signingTime"); register_ber_oid_dissector("1.2.840.113549.1.9.6", dissect_Countersignature_PDU, proto_cms, "id-counterSignature"); + register_ber_oid_dissector("2.6.1.4.18", dissect_ContentInfo_PDU, proto_cms, "id-et-pkcs7"); /*--- End of included file: packet-cms-dis-tab.c ---*/ - +#line 164 "packet-cms-template.c" } diff --git a/epan/dissectors/packet-cms.h b/epan/dissectors/packet-cms.h index d6a776050c..f6d28fdf81 100644 --- a/epan/dissectors/packet-cms.h +++ b/epan/dissectors/packet-cms.h @@ -1,10 +1,11 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Ethereal dissector compiler */ -/* ./packet-cms.h */ +/* .\packet-cms.h */ /* ../../tools/asn2eth.py -X -b -e -p cms -c cms.cnf -s packet-cms-template CryptographicMessageSyntax.asn */ /* Input file: packet-cms-template.h */ +#line 1 "packet-cms-template.h" /* packet-cms.h * Routines for RFC2630 Cryptographic Message Syntax packet dissection * Ronnie Sahlberg 2004 @@ -35,7 +36,7 @@ /*--- Included file: packet-cms-exp.h ---*/ - +#line 1 "packet-cms-exp.h" extern const value_string cms_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); @@ -53,7 +54,7 @@ int dissect_cms_IssuerAndSerialNumber(gboolean implicit_tag, tvbuff_t *tvb, int 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 ---*/ - +#line 30 "packet-cms-template.h" #endif /* PACKET_CMS_H */ diff --git a/epan/dissectors/packet-x411.c b/epan/dissectors/packet-x411.c index 12bf47b5bd..1555473499 100644 --- a/epan/dissectors/packet-x411.c +++ b/epan/dissectors/packet-x411.c @@ -1,10 +1,11 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Ethereal dissector compiler */ -/* ./packet-x411.c */ +/* .\packet-x411.c */ /* ../../tools/asn2eth.py -X -b -e -p x411 -c x411.cnf -s packet-x411-template x411.asn */ /* Input file: packet-x411-template.c */ +#line 1 "packet-x411-template.c" /* packet-x411.c * Routines for X.411 (X.400 Message Transfer) packet dissection * Graeme Lunt 2005 @@ -79,13 +80,14 @@ call_x411_oid_callback(char *base_oid, tvbuff_t *tvb, int offset, packet_info *p /*--- Included file: packet-x411-hf.c ---*/ - +#line 1 "packet-x411-hf.c" static int hf_x411_MTABindArgument_PDU = -1; /* MTABindArgument */ static int hf_x411_MTABindResult_PDU = -1; /* MTABindResult */ static int hf_x411_MTABindError_PDU = -1; /* MTABindError */ static int hf_x411_MTS_APDU_PDU = -1; /* MTS_APDU */ static int hf_x411_InternalTraceInformation_PDU = -1; /* InternalTraceInformation */ static int hf_x411_TraceInformation_PDU = -1; /* TraceInformation */ +static int hf_x411_ReportDeliveryArgument_PDU = -1; /* ReportDeliveryArgument */ static int hf_x411_RecipientReassignmentProhibited_PDU = -1; /* RecipientReassignmentProhibited */ static int hf_x411_MTSOriginatorRequestedAlternateRecipient_PDU = -1; /* MTSOriginatorRequestedAlternateRecipient */ static int hf_x411_DLExpansionProhibited_PDU = -1; /* DLExpansionProhibited */ @@ -102,16 +104,21 @@ static int hf_x411_OriginatorReturnAddress_PDU = -1; /* OriginatorReturnAddress static int hf_x411_PhysicalDeliveryReportRequest_PDU = -1; /* PhysicalDeliveryReportRequest */ static int hf_x411_OriginatorCertificate_PDU = -1; /* OriginatorCertificate */ static int hf_x411_ContentConfidentialityAlgorithmIdentifier_PDU = -1; /* ContentConfidentialityAlgorithmIdentifier */ +static int hf_x411_ContentIntegrityCheck_PDU = -1; /* ContentIntegrityCheck */ +static int hf_x411_MessageOriginAuthenticationCheck_PDU = -1; /* MessageOriginAuthenticationCheck */ static int hf_x411_MessageSecurityLabel_PDU = -1; /* MessageSecurityLabel */ static int hf_x411_ProofOfSubmissionRequest_PDU = -1; /* ProofOfSubmissionRequest */ static int hf_x411_ProofOfDeliveryRequest_PDU = -1; /* ProofOfDeliveryRequest */ static int hf_x411_ContentCorrelator_PDU = -1; /* ContentCorrelator */ +static int hf_x411_ProbeOriginAuthenticationCheck_PDU = -1; /* ProbeOriginAuthenticationCheck */ static int hf_x411_RedirectionHistory_PDU = -1; /* RedirectionHistory */ static int hf_x411_DLExpansionHistory_PDU = -1; /* DLExpansionHistory */ static int hf_x411_PhysicalForwardingAddress_PDU = -1; /* PhysicalForwardingAddress */ static int hf_x411_OriginatorAndDLExpansionHistory_PDU = -1; /* OriginatorAndDLExpansionHistory */ static int hf_x411_ReportingDLName_PDU = -1; /* ReportingDLName */ static int hf_x411_ReportingMTACertificate_PDU = -1; /* ReportingMTACertificate */ +static int hf_x411_ReportOriginAuthenticationCheck_PDU = -1; /* ReportOriginAuthenticationCheck */ +static int hf_x411_ProofOfSubmission_PDU = -1; /* ProofOfSubmission */ static int hf_x411_ReportingMTAName_PDU = -1; /* ReportingMTAName */ static int hf_x411_ExtendedCertificates_PDU = -1; /* ExtendedCertificates */ static int hf_x411_DLExemptedRecipients_PDU = -1; /* DLExemptedRecipients */ @@ -212,8 +219,16 @@ static int hf_x411_non_urgent = -1; /* DeliveryQueue */ static int hf_x411_messages = -1; /* INTEGER */ static int hf_x411_delivery_queue_octets = -1; /* INTEGER */ static int hf_x411_simple = -1; /* Password */ +static int hf_x411_protected = -1; /* ProtectedPassword */ static int hf_x411_ia5_string = -1; /* IA5String */ static int hf_x411_octet_string = -1; /* OCTET_STRING */ +static int hf_x411_signature = -1; /* Signature */ +static int hf_x411_time1 = -1; /* UTCTime */ +static int hf_x411_time2 = -1; /* UTCTime */ +static int hf_x411_random1 = -1; /* BIT_STRING */ +static int hf_x411_random2 = -1; /* BIT_STRING */ +static int hf_x411_algorithmIdentifier = -1; /* AlgorithmIdentifier */ +static int hf_x411_encrypted = -1; /* BIT_STRING */ static int hf_x411_SecurityContext_item = -1; /* SecurityLabel */ static int hf_x411_message_submission_envelope = -1; /* MessageSubmissionEnvelope */ static int hf_x411_message_submission_identifier = -1; /* MessageSubmissionIdentifier */ @@ -230,6 +245,7 @@ static int hf_x411_message_delivery_identifier = -1; /* MessageDeliveryIdentifi static int hf_x411_message_delivery_time = -1; /* MessageDeliveryTime */ static int hf_x411_other_fields = -1; /* OtherMessageDeliveryFields */ static int hf_x411_recipient_certificate = -1; /* RecipientCertificate */ +static int hf_x411_proof_of_delivery = -1; /* ProofOfDelivery */ static int hf_x411_subject_submission_identifier = -1; /* SubjectSubmissionIdentifier */ static int hf_x411_per_recipient_report_delivery_fields = -1; /* SEQUENCE_OF_PerRecipientReportDeliveryFields */ static int hf_x411_per_recipient_report_delivery_fields_item = -1; /* PerRecipientReportDeliveryFields */ @@ -499,13 +515,13 @@ static int hf_x411_G3FacsimileNonBasicParameters_jpeg = -1; static int hf_x411_G3FacsimileNonBasicParameters_processable_mode_26 = -1; /*--- End of included file: packet-x411-hf.c ---*/ - +#line 74 "packet-x411-template.c" /* Initialize the subtree pointers */ static gint ett_x411 = -1; /*--- Included file: packet-x411-ett.c ---*/ - +#line 1 "packet-x411-ett.c" static gint ett_x411_MTABindArgument = -1; static gint ett_x411_AuthenticatedArgument = -1; static gint ett_x411_MTABindResult = -1; @@ -545,6 +561,8 @@ static gint ett_x411_MessagesWaiting = -1; static gint ett_x411_DeliveryQueue = -1; static gint ett_x411_Credentials = -1; static gint ett_x411_Password = -1; +static gint ett_x411_ProtectedPassword = -1; +static gint ett_x411_Signature = -1; static gint ett_x411_SecurityContext = -1; static gint ett_x411_MessageSubmissionArgument = -1; static gint ett_x411_MessageSubmissionResult = -1; @@ -670,13 +688,16 @@ static gint ett_x411_SecurityCategories = -1; static gint ett_x411_SecurityCategory = -1; /*--- End of included file: packet-x411-ett.c ---*/ - +#line 78 "packet-x411-template.c" /*--- Included file: packet-x411-fn.c ---*/ - +#line 1 "packet-x411-fn.c" /*--- Fields for imported types ---*/ +static int dissect_algorithmIdentifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x509af_AlgorithmIdentifier(FALSE, tvb, offset, pinfo, tree, hf_x411_algorithmIdentifier); +} static int dissect_mta_directory_name_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { return dissect_x509if_Name(TRUE, tvb, offset, pinfo, tree, hf_x411_mta_directory_name); } @@ -727,6 +748,7 @@ static int dissect_empty_result(packet_info *pinfo, proto_tree *tree, tvbuff_t * static int dissect_x411_MTAName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 347 "x411.cnf" tvbuff_t *mtaname = NULL; offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String, @@ -747,6 +769,7 @@ dissect_x411_MTAName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packe } + return offset; } static int dissect_authenticated_initiator_name_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -830,13 +853,91 @@ static int dissect_simple(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, i } + +static int +dissect_x411_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); + + return offset; +} +static int dissect_random1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x411_BIT_STRING(TRUE, tvb, offset, pinfo, tree, hf_x411_random1); +} +static int dissect_random2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x411_BIT_STRING(TRUE, tvb, offset, pinfo, tree, hf_x411_random2); +} +static int dissect_encrypted(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x411_BIT_STRING(FALSE, tvb, offset, pinfo, tree, hf_x411_encrypted); +} + + +static const ber_sequence_t Signature_sequence[] = { + { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithmIdentifier }, + { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted }, + { 0, 0, 0, NULL } +}; + +static int +dissect_x411_Signature(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, + Signature_sequence, hf_index, ett_x411_Signature); + + return offset; +} +static int dissect_signature(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x411_Signature(FALSE, tvb, offset, pinfo, tree, hf_x411_signature); +} + + + +static int +dissect_x411_UTCTime(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_UTCTime, + pinfo, tree, tvb, offset, hf_index, + NULL); + + return offset; +} +static int dissect_time1_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x411_UTCTime(TRUE, tvb, offset, pinfo, tree, hf_x411_time1); +} +static int dissect_time2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x411_UTCTime(TRUE, tvb, offset, pinfo, tree, hf_x411_time2); +} + + +static const ber_sequence_t ProtectedPassword_set[] = { + { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signature }, + { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_time1_impl }, + { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_time2_impl }, + { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_random1_impl }, + { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_random2_impl }, + { 0, 0, 0, NULL } +}; + +static int +dissect_x411_ProtectedPassword(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset, + ProtectedPassword_set, hf_index, ett_x411_ProtectedPassword); + + return offset; +} +static int dissect_protected_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x411_ProtectedPassword(TRUE, tvb, offset, pinfo, tree, hf_x411_protected); +} + + static const value_string x411_Credentials_vals[] = { - { -1/*choice*/, "simple" }, + { 0, "simple" }, + { 1, "protected" }, { 0, NULL } }; static const ber_choice_t Credentials_choice[] = { - { -1/*choice*/, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_simple }, + { 0, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_simple }, + { 1, BER_CLASS_CON, 1, 0, dissect_protected_impl }, { 0, 0, 0, 0, NULL } }; @@ -920,12 +1021,14 @@ static int dissect_privacy_mark(packet_info *pinfo, proto_tree *tree, tvbuff_t * static int dissect_x411_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 294 "x411.cnf" offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_index, &object_identifier_id); extension_id = -1; + return offset; } static int dissect_private_extension_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -939,10 +1042,12 @@ static int dissect_category_type_impl(packet_info *pinfo, proto_tree *tree, tvbu static int dissect_x411_CategoryValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 215 "x411.cnf" offset = dissect_unknown_ber(pinfo, tvb, offset, tree); + return offset; } static int dissect_category_value_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -1131,6 +1236,7 @@ static const value_string x411_MTABindError_vals[] = { static int dissect_x411_MTABindError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 600 "x411.cnf" int error = -1; offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, &error); @@ -1140,6 +1246,7 @@ dissect_x411_MTABindError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, + return offset; } @@ -1147,6 +1254,7 @@ dissect_x411_MTABindError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, static int dissect_x411_NumericString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 436 "x411.cnf" tvbuff_t *nstring = NULL; offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString, @@ -1158,6 +1266,7 @@ dissect_x411_NumericString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, g_strlcat(oraddress, tvb_format_text(nstring, 0, tvb_length(nstring)), MAX_ORA_STR_LEN); + return offset; } static int dissect_x121_address(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -1183,6 +1292,7 @@ static int dissect_sub_address_impl(packet_info *pinfo, proto_tree *tree, tvbuff static int dissect_x411_PrintableString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 458 "x411.cnf" tvbuff_t *pstring = NULL; char *fmt = NULL; @@ -1207,6 +1317,7 @@ dissect_x411_PrintableString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offse } + return offset; } static int dissect_tsap_id(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -1264,6 +1375,7 @@ static const ber_choice_t CountryName_choice[] = { static int dissect_x411_CountryName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 226 "x411.cnf" gint8 class; gboolean pc, ind_field; gint32 tag; @@ -1286,6 +1398,7 @@ dissect_x411_CountryName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, p + return offset; } static int dissect_country_name(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -1307,6 +1420,7 @@ static const ber_choice_t AdministrationDomainName_choice[] = { static int dissect_x411_AdministrationDomainName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 248 "x411.cnf" gint8 class; gboolean pc, ind_field; gint32 tag; @@ -1327,6 +1441,7 @@ dissect_x411_AdministrationDomainName(gboolean implicit_tag _U_, tvbuff_t *tvb, AdministrationDomainName_choice, hf_index, ett_x411_AdministrationDomainName, NULL); + return offset; } static int dissect_administration_domain_name(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -1351,6 +1466,7 @@ static const ber_choice_t PrivateDomainIdentifier_choice[] = { static int dissect_x411_PrivateDomainIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 398 "x411.cnf" if(doing_address) g_strlcat(oraddress, "/P=", MAX_ORA_STR_LEN); @@ -1361,6 +1477,7 @@ dissect_x411_PrivateDomainIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, i + return offset; } static int dissect_private_domain_identifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -1380,6 +1497,7 @@ static const ber_sequence_t GlobalDomainIdentifier_sequence[] = { static int dissect_x411_GlobalDomainIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 505 "x411.cnf" oraddress = ep_alloc(MAX_ORA_STR_LEN); oraddress[0] = '\0'; address_item = tree; @@ -1393,6 +1511,7 @@ dissect_x411_GlobalDomainIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, in + return offset; } static int dissect_global_domain_identifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -1409,6 +1528,7 @@ static int dissect_attempted_domain(packet_info *pinfo, proto_tree *tree, tvbuff static int dissect_x411_LocalIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 519 "x411.cnf" tvbuff_t *id = NULL; offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String, @@ -1420,6 +1540,7 @@ dissect_x411_LocalIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offse proto_item_append_text(address_item, " $ %s)", tvb_format_text(id, 0, tvb_length(id))); + return offset; } static int dissect_local_identifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -1435,6 +1556,7 @@ static const ber_sequence_t MTSIdentifier_sequence[] = { static int dissect_x411_MTSIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 527 "x411.cnf" doing_address = TRUE; @@ -1445,6 +1567,7 @@ dissect_x411_MTSIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, doing_address = FALSE; + return offset; } @@ -1464,6 +1587,7 @@ static int dissect_message_identifier(packet_info *pinfo, proto_tree *tree, tvbu static int dissect_x411_X121Address(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 367 "x411.cnf" tvbuff_t *string = NULL; offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString, @@ -1478,6 +1602,7 @@ dissect_x411_X121Address(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, p + return offset; } @@ -1497,6 +1622,7 @@ static int dissect_network_address_impl(packet_info *pinfo, proto_tree *tree, tv static int dissect_x411_TerminalIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 381 "x411.cnf" tvbuff_t *string = NULL; offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString, @@ -1510,6 +1636,7 @@ dissect_x411_TerminalIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int of } + return offset; } static int dissect_terminal_identifier_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -1531,6 +1658,7 @@ static const ber_choice_t PrivateDomainName_choice[] = { static int dissect_x411_PrivateDomainName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 391 "x411.cnf" if(doing_address) g_strlcat(oraddress, "/P=", MAX_ORA_STR_LEN); @@ -1541,6 +1669,7 @@ dissect_x411_PrivateDomainName(gboolean implicit_tag _U_, tvbuff_t *tvb, int off + return offset; } static int dissect_private_domain_name_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -1551,6 +1680,7 @@ static int dissect_private_domain_name_impl(packet_info *pinfo, proto_tree *tree static int dissect_x411_OrganizationName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 408 "x411.cnf" tvbuff_t *string = NULL; offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString, @@ -1564,6 +1694,7 @@ dissect_x411_OrganizationName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offs } + return offset; } static int dissect_organization_name_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -1650,6 +1781,7 @@ static const ber_sequence_t BuiltInStandardAttributes_sequence[] = { static int dissect_x411_BuiltInStandardAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 535 "x411.cnf" address_item = tree; @@ -1658,6 +1790,7 @@ dissect_x411_BuiltInStandardAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb, + return offset; } static int dissect_built_in_standard_attributes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -1724,10 +1857,12 @@ static int dissect_extension_attribute_type_impl(packet_info *pinfo, proto_tree static int dissect_x411_T_extension_attribute_value(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 219 "x411.cnf" offset=call_x411_oid_callback("x411.extension-attribute", tvb, offset, pinfo, tree); + return offset; } static int dissect_extension_attribute_value_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -1779,6 +1914,7 @@ static const ber_sequence_t ORName_sequence[] = { int dissect_x411_ORName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 492 "x411.cnf" oraddress = ep_alloc(MAX_ORA_STR_LEN); oraddress[0] = '\0'; address_item = NULL; @@ -1794,6 +1930,7 @@ dissect_x411_ORName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet doing_address = FALSE; + return offset; } static int dissect_exact_match_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -1910,6 +2047,7 @@ static int dissect_g3_facsimile_impl(packet_info *pinfo, proto_tree *tree, tvbuf static int dissect_x411_TeletexString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 446 "x411.cnf" tvbuff_t *tstring = NULL; offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString, @@ -1922,6 +2060,7 @@ dissect_x411_TeletexString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, + return offset; } static int dissect_teletex_surname_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -2062,6 +2201,7 @@ static const value_string x411_BuiltInContentType_vals[] = { static int dissect_x411_BuiltInContentType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 318 "x411.cnf" guint32 ict = -1; offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, @@ -2071,16 +2211,17 @@ dissect_x411_BuiltInContentType(gboolean implicit_tag _U_, tvbuff_t *tvb, int of /* convert integer content type to oid for dispatch when the content is found */ switch(ict) { case 2: - object_identifier_id = ep_strdup("2.6.1.10.0"); + content_type_id = ep_strdup("2.6.1.10.0"); break; case 22: - object_identifier_id = ep_strdup("2.6.1.10.1"); + content_type_id = ep_strdup("2.6.1.10.1"); break; default: break; } + return offset; } static int dissect_built_in(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -2094,6 +2235,7 @@ static int dissect_built_in_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t static int dissect_x411_ExtendedContentType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 302 "x411.cnf" const char *name = NULL; offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_index, &content_type_id); @@ -2108,6 +2250,7 @@ dissect_x411_ExtendedContentType(gboolean implicit_tag _U_, tvbuff_t *tvb, int o } + return offset; } static int dissect_extended(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -2149,6 +2292,7 @@ static int dissect_ContentTypes_item(packet_info *pinfo, proto_tree *tree, tvbuf static int dissect_x411_ContentIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 268 "x411.cnf" gint8 class; gboolean pc, ind_field; gint32 tag; @@ -2169,6 +2313,7 @@ dissect_x411_ContentIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int off + return offset; } static int dissect_content_identifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -2233,6 +2378,7 @@ static int dissect_per_message_indicators(packet_info *pinfo, proto_tree *tree, static int dissect_x411_Time(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 579 "x411.cnf" tvbuff_t *arrival = NULL; offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_UTCTime, @@ -2244,6 +2390,7 @@ dissect_x411_Time(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_i proto_item_append_text(address_item, " %s", tvb_format_text(arrival, 0, tvb_length(arrival))); + return offset; } static int dissect_redirection_time(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -2367,6 +2514,7 @@ static const value_string x411_RoutingAction_vals[] = { static int dissect_x411_RoutingAction(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 590 "x411.cnf" int action = 0; offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, @@ -2376,6 +2524,7 @@ dissect_x411_RoutingAction(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, proto_item_append_text(address_item, " %s", val_to_str(action, x411_RoutingAction_vals, "action(%d)")); + return offset; } static int dissect_routing_action_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -2441,6 +2590,7 @@ static const ber_sequence_t DomainSuppliedInformation_set[] = { static int dissect_x411_DomainSuppliedInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 558 "x411.cnf" doing_address = FALSE; @@ -2452,6 +2602,7 @@ dissect_x411_DomainSuppliedInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, proto_item_append_text(tree, ")"); + return offset; } static int dissect_domain_supplied_information(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -2467,6 +2618,7 @@ static const ber_sequence_t TraceInformationElement_sequence[] = { static int dissect_x411_TraceInformationElement(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 541 "x411.cnf" doing_address = TRUE; @@ -2477,6 +2629,7 @@ dissect_x411_TraceInformationElement(gboolean implicit_tag _U_, tvbuff_t *tvb, i doing_address = FALSE; + return offset; } static int dissect_TraceInformation_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -2548,6 +2701,7 @@ static int dissect_criticality_impl(packet_info *pinfo, proto_tree *tree, tvbuff static int dissect_x411_ExtensionValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 203 "x411.cnf" char *name; if(extension_id != -1) @@ -2560,6 +2714,7 @@ dissect_x411_ExtensionValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset + return offset; } static int dissect_extension_value_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -2750,6 +2905,7 @@ static int dissect_message_envelope(packet_info *pinfo, proto_tree *tree, tvbuff static int dissect_x411_Content(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 335 "x411.cnf" tvbuff_t *next_tvb; /* we can do this now constructed octet strings are supported */ @@ -2759,6 +2915,7 @@ dissect_x411_Content(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packe (void) call_ber_oid_callback(content_type_id, next_tvb, 0, pinfo, top_tree ? top_tree : tree); + return offset; } static int dissect_content(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -2971,9 +3128,11 @@ static int dissect_subject_intermediate_trace_information(packet_info *pinfo, pr static int dissect_x411_AdditionalInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 197 "x411.cnf" /*XXX not implemented yet */ + return offset; } static int dissect_additional_information_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -3424,6 +3583,7 @@ static const ber_sequence_t MTASuppliedInformation_set[] = { static int dissect_x411_MTASuppliedInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 567 "x411.cnf" doing_address = FALSE; @@ -3435,6 +3595,7 @@ dissect_x411_MTASuppliedInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, in proto_item_append_text(tree, ")"); + return offset; } static int dissect_mta_supplied_information(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -3451,6 +3612,7 @@ static const ber_sequence_t InternalTraceInformationElement_sequence[] = { static int dissect_x411_InternalTraceInformationElement(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 549 "x411.cnf" doing_address = TRUE; @@ -3462,6 +3624,7 @@ dissect_x411_InternalTraceInformationElement(gboolean implicit_tag _U_, tvbuff_t + return offset; } static int dissect_InternalTraceInformation_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -3719,7 +3882,7 @@ static const ber_sequence_t MessageSubmissionEnvelope_set[] = { { 0, 0, 0, NULL } }; -static int +int dissect_x411_MessageSubmissionEnvelope(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset, MessageSubmissionEnvelope_set, hf_index, ett_x411_MessageSubmissionEnvelope); @@ -4163,7 +4326,7 @@ dissect_x411_SecurityProblem(gboolean implicit_tag _U_, tvbuff_t *tvb, int offse -static int +int dissect_x411_MessageDeliveryIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_x411_MTSIdentifier(implicit_tag, tvb, offset, pinfo, tree, hf_index); @@ -4341,8 +4504,21 @@ static int dissect_recipient_certificate_impl(packet_info *pinfo, proto_tree *tr } + +static int +dissect_x411_ProofOfDelivery(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_x411_Signature(implicit_tag, tvb, offset, pinfo, tree, hf_index); + + return offset; +} +static int dissect_proof_of_delivery_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x411_ProofOfDelivery(TRUE, tvb, offset, pinfo, tree, hf_x411_proof_of_delivery); +} + + static const ber_sequence_t MessageDeliveryResult_set[] = { { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_recipient_certificate_impl }, + { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_proof_of_delivery_impl }, { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensions_impl }, { 0, 0, 0, NULL } }; @@ -4541,9 +4717,11 @@ static int dissect_built_in_argument_impl(packet_info *pinfo, proto_tree *tree, static int dissect_x411_T_refused_extension(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 223 "x411.cnf" /*XXX not implemented yet */ + return offset; } static int dissect_refused_extension(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -4992,9 +5170,11 @@ static int dissect_standard_parameters_impl(packet_info *pinfo, proto_tree *tree static int dissect_x411_T_extensions_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 200 "x411.cnf" /*XXX not implemented yet */ + return offset; } static int dissect_type_extensions_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -5356,6 +5536,7 @@ static const ber_sequence_t ORAddress_sequence[] = { static int dissect_x411_ORAddress(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 479 "x411.cnf" oraddress = ep_alloc(MAX_ORA_STR_LEN); oraddress[0] = '\0'; doing_address = TRUE; @@ -5371,6 +5552,7 @@ dissect_x411_ORAddress(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, pac doing_address = FALSE; + return offset; } @@ -5421,6 +5603,15 @@ dissect_x411_ContentConfidentialityAlgorithmIdentifier(gboolean implicit_tag _U_ +static int +dissect_x411_ContentIntegrityCheck(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_x411_Signature(implicit_tag, tvb, offset, pinfo, tree, hf_index); + + return offset; +} + + + static int dissect_x411_ContentIntegrityAlgorithmIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_x509af_AlgorithmIdentifier(implicit_tag, tvb, offset, pinfo, tree, hf_index); @@ -5430,6 +5621,15 @@ dissect_x411_ContentIntegrityAlgorithmIdentifier(gboolean implicit_tag _U_, tvbu +static int +dissect_x411_MessageOriginAuthenticationCheck(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_x411_Signature(implicit_tag, tvb, offset, pinfo, tree, hf_index); + + return offset; +} + + + static int dissect_x411_MessageOriginAuthenticationAlgorithmIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_x509af_AlgorithmIdentifier(implicit_tag, tvb, offset, pinfo, tree, hf_index); @@ -5502,6 +5702,15 @@ dissect_x411_ContentCorrelator(gboolean implicit_tag _U_, tvbuff_t *tvb, int off +static int +dissect_x411_ProbeOriginAuthenticationCheck(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_x411_Signature(implicit_tag, tvb, offset, pinfo, tree, hf_index); + + return offset; +} + + + static int dissect_x411_ProbeOriginAuthenticationAlgorithmIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_x509af_AlgorithmIdentifier(implicit_tag, tvb, offset, pinfo, tree, hf_index); @@ -5671,6 +5880,15 @@ dissect_x411_ReportingMTACertificate(gboolean implicit_tag _U_, tvbuff_t *tvb, i +static int +dissect_x411_ReportOriginAuthenticationCheck(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_x411_Signature(implicit_tag, tvb, offset, pinfo, tree, hf_index); + + return offset; +} + + + static int dissect_x411_ReportOriginAuthenticationAlgorithmIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_x509af_AlgorithmIdentifier(implicit_tag, tvb, offset, pinfo, tree, hf_index); @@ -5758,7 +5976,7 @@ dissect_x411_PerRecipientReportFields(gboolean implicit_tag _U_, tvbuff_t *tvb, -static int +int dissect_x411_OriginatingMTACertificate(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_x509af_Certificates(implicit_tag, tvb, offset, pinfo, tree, hf_index); @@ -5767,9 +5985,9 @@ dissect_x411_OriginatingMTACertificate(gboolean implicit_tag _U_, tvbuff_t *tvb, -static int -dissect_x411_ProofOfSubmissionAlgorithmIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { - offset = dissect_x509af_AlgorithmIdentifier(implicit_tag, tvb, offset, pinfo, tree, hf_index); +int +dissect_x411_ProofOfSubmission(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_x411_Signature(implicit_tag, tvb, offset, pinfo, tree, hf_index); return offset; } @@ -5863,6 +6081,7 @@ dissect_x411_CertificateSelectors(gboolean implicit_tag _U_, tvbuff_t *tvb, int static int dissect_x411_CommonName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 421 "x411.cnf" tvbuff_t *string = NULL; offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString, @@ -5878,6 +6097,7 @@ dissect_x411_CommonName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, pa + return offset; } @@ -5952,7 +6172,7 @@ static const ber_sequence_t UniversalOrBMPString_set[] = { { 0, 0, 0, NULL } }; -static int +int dissect_x411_UniversalOrBMPString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset, UniversalOrBMPString_set, hf_index, ett_x411_UniversalOrBMPString); @@ -6558,6 +6778,9 @@ static void dissect_InternalTraceInformation_PDU(tvbuff_t *tvb, packet_info *pin static void dissect_TraceInformation_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { dissect_x411_TraceInformation(TRUE, tvb, 0, pinfo, tree, hf_x411_TraceInformation_PDU); } +static void dissect_ReportDeliveryArgument_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x411_ReportDeliveryArgument(FALSE, tvb, 0, pinfo, tree, hf_x411_ReportDeliveryArgument_PDU); +} static void dissect_RecipientReassignmentProhibited_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { dissect_x411_RecipientReassignmentProhibited(FALSE, tvb, 0, pinfo, tree, hf_x411_RecipientReassignmentProhibited_PDU); } @@ -6606,6 +6829,12 @@ static void dissect_OriginatorCertificate_PDU(tvbuff_t *tvb, packet_info *pinfo, static void dissect_ContentConfidentialityAlgorithmIdentifier_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { dissect_x411_ContentConfidentialityAlgorithmIdentifier(FALSE, tvb, 0, pinfo, tree, hf_x411_ContentConfidentialityAlgorithmIdentifier_PDU); } +static void dissect_ContentIntegrityCheck_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x411_ContentIntegrityCheck(FALSE, tvb, 0, pinfo, tree, hf_x411_ContentIntegrityCheck_PDU); +} +static void dissect_MessageOriginAuthenticationCheck_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x411_MessageOriginAuthenticationCheck(FALSE, tvb, 0, pinfo, tree, hf_x411_MessageOriginAuthenticationCheck_PDU); +} static void dissect_MessageSecurityLabel_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { dissect_x411_MessageSecurityLabel(FALSE, tvb, 0, pinfo, tree, hf_x411_MessageSecurityLabel_PDU); } @@ -6618,6 +6847,9 @@ static void dissect_ProofOfDeliveryRequest_PDU(tvbuff_t *tvb, packet_info *pinfo static void dissect_ContentCorrelator_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { dissect_x411_ContentCorrelator(FALSE, tvb, 0, pinfo, tree, hf_x411_ContentCorrelator_PDU); } +static void dissect_ProbeOriginAuthenticationCheck_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x411_ProbeOriginAuthenticationCheck(FALSE, tvb, 0, pinfo, tree, hf_x411_ProbeOriginAuthenticationCheck_PDU); +} static void dissect_RedirectionHistory_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { dissect_x411_RedirectionHistory(FALSE, tvb, 0, pinfo, tree, hf_x411_RedirectionHistory_PDU); } @@ -6636,6 +6868,12 @@ static void dissect_ReportingDLName_PDU(tvbuff_t *tvb, packet_info *pinfo, proto static void dissect_ReportingMTACertificate_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { dissect_x411_ReportingMTACertificate(FALSE, tvb, 0, pinfo, tree, hf_x411_ReportingMTACertificate_PDU); } +static void dissect_ReportOriginAuthenticationCheck_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x411_ReportOriginAuthenticationCheck(FALSE, tvb, 0, pinfo, tree, hf_x411_ReportOriginAuthenticationCheck_PDU); +} +static void dissect_ProofOfSubmission_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x411_ProofOfSubmission(FALSE, tvb, 0, pinfo, tree, hf_x411_ProofOfSubmission_PDU); +} static void dissect_ReportingMTAName_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { dissect_x411_ReportingMTAName(FALSE, tvb, 0, pinfo, tree, hf_x411_ReportingMTAName_PDU); } @@ -6690,7 +6928,7 @@ static void dissect_PhysicalDeliveryOfficeName_PDU(tvbuff_t *tvb, packet_info *p /*--- End of included file: packet-x411-fn.c ---*/ - +#line 80 "packet-x411-template.c" static int call_x411_oid_callback(char *base_oid, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) @@ -6819,7 +7057,7 @@ void proto_register_x411(void) { { /*--- Included file: packet-x411-hfarr.c ---*/ - +#line 1 "packet-x411-hfarr.c" { &hf_x411_MTABindArgument_PDU, { "MTABindArgument", "x411.MTABindArgument", FT_UINT32, BASE_DEC, VALS(x411_MTABindArgument_vals), 0, @@ -6844,6 +7082,10 @@ void proto_register_x411(void) { { "TraceInformation", "x411.TraceInformation", FT_UINT32, BASE_DEC, NULL, 0, "TraceInformation", HFILL }}, + { &hf_x411_ReportDeliveryArgument_PDU, + { "ReportDeliveryArgument", "x411.ReportDeliveryArgument", + FT_NONE, BASE_NONE, NULL, 0, + "ReportDeliveryArgument", HFILL }}, { &hf_x411_RecipientReassignmentProhibited_PDU, { "RecipientReassignmentProhibited", "x411.RecipientReassignmentProhibited", FT_UINT32, BASE_DEC, VALS(x411_RecipientReassignmentProhibited_vals), 0, @@ -6890,7 +7132,7 @@ void proto_register_x411(void) { "RecipientNumberForAdvice", HFILL }}, { &hf_x411_PhysicalRenditionAttributes_PDU, { "PhysicalRenditionAttributes", "x411.PhysicalRenditionAttributes", - FT_STRING, BASE_NONE, NULL, 0, + FT_OID, BASE_NONE, NULL, 0, "PhysicalRenditionAttributes", HFILL }}, { &hf_x411_OriginatorReturnAddress_PDU, { "OriginatorReturnAddress", "x411.OriginatorReturnAddress", @@ -6908,6 +7150,14 @@ void proto_register_x411(void) { { "ContentConfidentialityAlgorithmIdentifier", "x411.ContentConfidentialityAlgorithmIdentifier", FT_NONE, BASE_NONE, NULL, 0, "ContentConfidentialityAlgorithmIdentifier", HFILL }}, + { &hf_x411_ContentIntegrityCheck_PDU, + { "ContentIntegrityCheck", "x411.ContentIntegrityCheck", + FT_NONE, BASE_NONE, NULL, 0, + "ContentIntegrityCheck", HFILL }}, + { &hf_x411_MessageOriginAuthenticationCheck_PDU, + { "MessageOriginAuthenticationCheck", "x411.MessageOriginAuthenticationCheck", + FT_NONE, BASE_NONE, NULL, 0, + "MessageOriginAuthenticationCheck", HFILL }}, { &hf_x411_MessageSecurityLabel_PDU, { "MessageSecurityLabel", "x411.MessageSecurityLabel", FT_NONE, BASE_NONE, NULL, 0, @@ -6924,6 +7174,10 @@ void proto_register_x411(void) { { "ContentCorrelator", "x411.ContentCorrelator", FT_UINT32, BASE_DEC, VALS(x411_ContentCorrelator_vals), 0, "ContentCorrelator", HFILL }}, + { &hf_x411_ProbeOriginAuthenticationCheck_PDU, + { "ProbeOriginAuthenticationCheck", "x411.ProbeOriginAuthenticationCheck", + FT_NONE, BASE_NONE, NULL, 0, + "ProbeOriginAuthenticationCheck", HFILL }}, { &hf_x411_RedirectionHistory_PDU, { "RedirectionHistory", "x411.RedirectionHistory", FT_UINT32, BASE_DEC, NULL, 0, @@ -6948,6 +7202,14 @@ void proto_register_x411(void) { { "ReportingMTACertificate", "x411.ReportingMTACertificate", FT_NONE, BASE_NONE, NULL, 0, "ReportingMTACertificate", HFILL }}, + { &hf_x411_ReportOriginAuthenticationCheck_PDU, + { "ReportOriginAuthenticationCheck", "x411.ReportOriginAuthenticationCheck", + FT_NONE, BASE_NONE, NULL, 0, + "ReportOriginAuthenticationCheck", HFILL }}, + { &hf_x411_ProofOfSubmission_PDU, + { "ProofOfSubmission", "x411.ProofOfSubmission", + FT_NONE, BASE_NONE, NULL, 0, + "ProofOfSubmission", HFILL }}, { &hf_x411_ReportingMTAName_PDU, { "ReportingMTAName", "x411.ReportingMTAName", FT_NONE, BASE_NONE, NULL, 0, @@ -7348,6 +7610,10 @@ void proto_register_x411(void) { { "simple", "x411.simple", FT_UINT32, BASE_DEC, VALS(x411_Password_vals), 0, "Credentials/simple", HFILL }}, + { &hf_x411_protected, + { "protected", "x411.protected", + FT_NONE, BASE_NONE, NULL, 0, + "Credentials/protected", HFILL }}, { &hf_x411_ia5_string, { "ia5-string", "x411.ia5_string", FT_STRING, BASE_NONE, NULL, 0, @@ -7356,6 +7622,34 @@ void proto_register_x411(void) { { "octet-string", "x411.octet_string", FT_BYTES, BASE_HEX, NULL, 0, "Password/octet-string", HFILL }}, + { &hf_x411_signature, + { "signature", "x411.signature", + FT_NONE, BASE_NONE, NULL, 0, + "ProtectedPassword/signature", HFILL }}, + { &hf_x411_time1, + { "time1", "x411.time1", + FT_STRING, BASE_NONE, NULL, 0, + "ProtectedPassword/time1", HFILL }}, + { &hf_x411_time2, + { "time2", "x411.time2", + FT_STRING, BASE_NONE, NULL, 0, + "ProtectedPassword/time2", HFILL }}, + { &hf_x411_random1, + { "random1", "x411.random1", + FT_BYTES, BASE_HEX, NULL, 0, + "ProtectedPassword/random1", HFILL }}, + { &hf_x411_random2, + { "random2", "x411.random2", + FT_BYTES, BASE_HEX, NULL, 0, + "ProtectedPassword/random2", HFILL }}, + { &hf_x411_algorithmIdentifier, + { "algorithmIdentifier", "x411.algorithmIdentifier", + FT_NONE, BASE_NONE, NULL, 0, + "Signature/algorithmIdentifier", HFILL }}, + { &hf_x411_encrypted, + { "encrypted", "x411.encrypted", + FT_BYTES, BASE_HEX, NULL, 0, + "Signature/encrypted", HFILL }}, { &hf_x411_SecurityContext_item, { "Item", "x411.SecurityContext_item", FT_NONE, BASE_NONE, NULL, 0, @@ -7420,6 +7714,10 @@ void proto_register_x411(void) { { "recipient-certificate", "x411.recipient_certificate", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_x411_proof_of_delivery, + { "proof-of-delivery", "x411.proof_of_delivery", + FT_NONE, BASE_NONE, NULL, 0, + "MessageDeliveryResult/proof-of-delivery", HFILL }}, { &hf_x411_subject_submission_identifier, { "subject-submission-identifier", "x411.subject_submission_identifier", FT_NONE, BASE_NONE, NULL, 0, @@ -7738,7 +8036,7 @@ void proto_register_x411(void) { "", HFILL }}, { &hf_x411_extended, { "extended", "x411.extended", - FT_STRING, BASE_NONE, NULL, 0, + FT_OID, BASE_NONE, NULL, 0, "", HFILL }}, { &hf_x411_OtherRecipientNames_item, { "Item", "x411.OtherRecipientNames_item", @@ -7750,7 +8048,7 @@ void proto_register_x411(void) { "ExtensionType/standard-extension", HFILL }}, { &hf_x411_private_extension, { "private-extension", "x411.private_extension", - FT_STRING, BASE_NONE, NULL, 0, + FT_OID, BASE_NONE, NULL, 0, "ExtensionType/private-extension", HFILL }}, { &hf_x411_extension_type, { "type", "x411.type", @@ -8118,7 +8416,7 @@ void proto_register_x411(void) { "EncodedInformationTypes/extended-encoded-information-types", HFILL }}, { &hf_x411_ExtendedEncodedInformationTypes_item, { "Item", "x411.ExtendedEncodedInformationTypes_item", - FT_STRING, BASE_NONE, NULL, 0, + FT_OID, BASE_NONE, NULL, 0, "ExtendedEncodedInformationTypes/_item", HFILL }}, { &hf_x411_graphic_character_sets, { "graphic-character-sets", "x411.graphic_character_sets", @@ -8142,7 +8440,7 @@ void proto_register_x411(void) { "TeletexNonBasicParameters/private-use", HFILL }}, { &hf_x411_security_policy_identifier, { "security-policy-identifier", "x411.security_policy_identifier", - FT_STRING, BASE_NONE, NULL, 0, + FT_OID, BASE_NONE, NULL, 0, "SecurityLabel/security-policy-identifier", HFILL }}, { &hf_x411_security_classification, { "security-classification", "x411.security_classification", @@ -8162,7 +8460,7 @@ void proto_register_x411(void) { "SecurityCategories/_item", HFILL }}, { &hf_x411_category_type, { "type", "x411.type", - FT_STRING, BASE_NONE, NULL, 0, + FT_OID, BASE_NONE, NULL, 0, "SecurityCategory/type", HFILL }}, { &hf_x411_category_value, { "value", "x411.value", @@ -8486,7 +8784,7 @@ void proto_register_x411(void) { "", HFILL }}, /*--- End of included file: packet-x411-hfarr.c ---*/ - +#line 207 "packet-x411-template.c" }; /* List of subtrees */ @@ -8494,7 +8792,7 @@ void proto_register_x411(void) { &ett_x411, /*--- Included file: packet-x411-ettarr.c ---*/ - +#line 1 "packet-x411-ettarr.c" &ett_x411_MTABindArgument, &ett_x411_AuthenticatedArgument, &ett_x411_MTABindResult, @@ -8534,6 +8832,8 @@ void proto_register_x411(void) { &ett_x411_DeliveryQueue, &ett_x411_Credentials, &ett_x411_Password, + &ett_x411_ProtectedPassword, + &ett_x411_Signature, &ett_x411_SecurityContext, &ett_x411_MessageSubmissionArgument, &ett_x411_MessageSubmissionResult, @@ -8659,7 +8959,7 @@ void proto_register_x411(void) { &ett_x411_SecurityCategory, /*--- End of included file: packet-x411-ettarr.c ---*/ - +#line 213 "packet-x411-template.c" }; /* Register protocol */ @@ -8678,7 +8978,7 @@ void proto_reg_handoff_x411(void) { /*--- Included file: packet-x411-dis-tab.c ---*/ - +#line 1 "packet-x411-dis-tab.c" register_ber_oid_dissector("x411.extension.1", dissect_RecipientReassignmentProhibited_PDU, proto_x411, "recipient-reassignment-prohibited"); register_ber_oid_dissector("x411.extension.2", dissect_MTSOriginatorRequestedAlternateRecipient_PDU, proto_x411, "originator-requested-alternate-recipient"); register_ber_oid_dissector("x411.extension.3", dissect_DLExpansionProhibited_PDU, proto_x411, "dl-expansion-prohibited"); @@ -8695,16 +8995,21 @@ void proto_reg_handoff_x411(void) { register_ber_oid_dissector("x411.extension.14", dissect_PhysicalDeliveryReportRequest_PDU, proto_x411, "physical-delivery-report-request"); register_ber_oid_dissector("x411.extension.15", dissect_OriginatorCertificate_PDU, proto_x411, "originator-certificate"); register_ber_oid_dissector("x411.extension.17", dissect_ContentConfidentialityAlgorithmIdentifier_PDU, proto_x411, "content-confidentiality-algorithm-identifier"); + register_ber_oid_dissector("x411.extension.18", dissect_ContentIntegrityCheck_PDU, proto_x411, "content-integrity-check"); + register_ber_oid_dissector("x411.extension.19", dissect_MessageOriginAuthenticationCheck_PDU, proto_x411, "message-origin-authentication-check"); register_ber_oid_dissector("x411.extension.20", dissect_MessageSecurityLabel_PDU, proto_x411, "message-security-label"); register_ber_oid_dissector("x411.extension.21", dissect_ProofOfSubmissionRequest_PDU, proto_x411, "proof-of-submission-request"); register_ber_oid_dissector("x411.extension.22", dissect_ProofOfDeliveryRequest_PDU, proto_x411, "proof-of-delivery-request"); register_ber_oid_dissector("x411.extension.23", dissect_ContentCorrelator_PDU, proto_x411, "content-correlator"); + register_ber_oid_dissector("x411.extension.24", dissect_ProbeOriginAuthenticationCheck_PDU, proto_x411, "probe-origin-authentication-check"); register_ber_oid_dissector("x411.extension.25", dissect_RedirectionHistory_PDU, proto_x411, "redirection-history"); register_ber_oid_dissector("x411.extension.26", dissect_DLExpansionHistory_PDU, proto_x411, "dl-expansion-history"); register_ber_oid_dissector("x411.extension.27", dissect_PhysicalForwardingAddress_PDU, proto_x411, "physical-forwarding-address"); register_ber_oid_dissector("x411.extension.30", dissect_OriginatorAndDLExpansionHistory_PDU, proto_x411, "originator-and-DL-expansion-history"); register_ber_oid_dissector("x411.extension.31", dissect_ReportingDLName_PDU, proto_x411, "reporting-DL-name"); register_ber_oid_dissector("x411.extension.32", dissect_ReportingMTACertificate_PDU, proto_x411, "reporting-MTA-certificate"); + register_ber_oid_dissector("x411.extension.33", dissect_ReportOriginAuthenticationCheck_PDU, proto_x411, "report-origin-authentication-check"); + register_ber_oid_dissector("x411.extension.35", dissect_ProofOfSubmission_PDU, proto_x411, "proof-of-submission"); register_ber_oid_dissector("x411.extension.37", dissect_TraceInformation_PDU, proto_x411, "trace-information"); register_ber_oid_dissector("x411.extension.38", dissect_InternalTraceInformation_PDU, proto_x411, "internal-trace-information"); register_ber_oid_dissector("x411.extension.39", dissect_ReportingMTAName_PDU, proto_x411, "reporting-MTA-name"); @@ -8724,10 +9029,11 @@ void proto_reg_handoff_x411(void) { register_ber_oid_dissector("x411.extension-attribute.25", dissect_UniversalOrganizationName_PDU, proto_x411, "universal-organization-name"); register_ber_oid_dissector("x411.extension-attribute.26", dissect_UniversalPersonalName_PDU, proto_x411, "universal-personal-name"); register_ber_oid_dissector("x411.extension-attribute.27", dissect_UniversalOrganizationalUnitNames_PDU, proto_x411, "universal-organizational-unit-names"); + register_ber_oid_dissector("2.6.1.4.14", dissect_ReportDeliveryArgument_PDU, proto_x411, "id-et-report"); /*--- End of included file: packet-x411-dis-tab.c ---*/ - +#line 230 "packet-x411-template.c" /* APPLICATION CONTEXT */ diff --git a/epan/dissectors/packet-x411.h b/epan/dissectors/packet-x411.h index 00fb366a96..632a6358e4 100644 --- a/epan/dissectors/packet-x411.h +++ b/epan/dissectors/packet-x411.h @@ -1,10 +1,11 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Ethereal dissector compiler */ -/* ./packet-x411.h */ +/* .\packet-x411.h */ /* ../../tools/asn2eth.py -X -b -e -p x411 -c x411.cnf -s packet-x411-template x411.asn */ /* Input file: packet-x411-template.h */ +#line 1 "packet-x411-template.h" /* packet-x411.h * Routines for X.411 (X.400 Message Transfer) packet dissection * Graeme Lunt 2005 @@ -36,18 +37,23 @@ int dissect_x411_mts_apdu (tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree); /*--- Included file: packet-x411-exp.h ---*/ - +#line 1 "packet-x411-exp.h" +int dissect_x411_MessageSubmissionEnvelope(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); int dissect_x411_OtherMessageDeliveryFields(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); +int dissect_x411_MessageDeliveryIdentifier(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); int dissect_x411_MessageDeliveryTime(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); int dissect_x411_SupplementaryInformation(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); +int dissect_x411_OriginatingMTACertificate(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); +int dissect_x411_ProofOfSubmission(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); int dissect_x411_ExtendedCertificates(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); int dissect_x411_ORName(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); +int dissect_x411_UniversalOrBMPString(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); int dissect_x411_EncodedInformationTypes(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); int dissect_x411_G3FacsimileNonBasicParameters(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); int dissect_x411_TeletexNonBasicParameters(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); int dissect_x411_SecurityLabel(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); /*--- End of included file: packet-x411-exp.h ---*/ - +#line 31 "packet-x411-template.h" #endif /* PACKET_X411_H */ diff --git a/epan/dissectors/packet-x420.c b/epan/dissectors/packet-x420.c index d786dbe90f..f17746c8fa 100644 --- a/epan/dissectors/packet-x420.c +++ b/epan/dissectors/packet-x420.c @@ -5,6 +5,7 @@ /* Input file: packet-x420-template.c */ +#line 1 "packet-x420-template.c" /* packet-x420.c * Routines for X.420 (X.400 Message Transfer) packet dissection * Graeme Lunt 2005 @@ -46,6 +47,7 @@ #include "packet-ros.h" #include "packet-x509af.h" +#include "packet-x509ce.h" #include "packet-x411.h" #include "packet-x420.h" @@ -59,13 +61,79 @@ int proto_x420 = -1; static const char *object_identifier_id; /* content type identifier */ +static const value_string charsetreg_vals [] = { + { 1, "C0: (ISO/IEC 6429)"}, + { 6, "G0: ASCII (ISO/IEC 646)"}, + { 77, "C1: (ISO/IEC 6429)"}, + { 100, "Gn: Latin Alphabet No.1, Western European Supplementary Set (GR area of ISO-8859-1)"}, + { 101, "Gn: Latin Alphabet No.2, Central EuropeanSupplementary Set (GR area of ISO-8859-2)"}, + { 104, "C0: (ISO/IEC 4873)"}, + { 105, "C1: (ISO/IEC 4873)"}, + { 106, "C0: Teletex (CCITT T.61)"}, + { 107, "C1: Teletex (CCITT T.61)"}, + { 109, "Gn: Latin Alphabet No.3, Southern European Supplementary Set (GR area of ISO-8859-3)"}, + { 110, "Gn: Latin Alphabet No.4, Baltic Supplementary Set (GR area of ISO-8859-4)"}, + { 126, "Gn: Greek Supplementary Set (GR area of ISO-8859-7)"}, + { 127, "Gn: Arabic Supplementary Set (GR area of ISO-8859-6)"}, + { 138, "Gn: Hebrew Supplementary Set (GR area of ISO-8859-8)"}, + { 144, "Gn: Cyrillic Supplementary Set (GR area of ISO-8859-5)"}, + { 148, "Gn: Latin Alphabet No.5, Cyrillic Supplementary Set (GR area of ISO-8859-9)"}, + { 154, "Gn: Supplementary Set for Latin Alphabets No.1 or No.5, and No.2"}, + { 157, "Gn: Latin Alphabet No.6, Arabic Supplementary Set (GR area of ISO-8859-10)"}, + { 158, "Gn: Supplementary Set for Sami (Lappish) to complement Latin Alphabet No.6 (from Annex A of ISO-8859-10)"}, + { 166, "Gn: Thai Supplementary Set (GR area of ISO-8859-11)"}, + { 179, "Gn: Latin Alphabet No.7, Baltic Rim Supplementary Set (GR area of ISO-8859-13)"}, + { 182, "Gn: Welsh Variant of Latin Alphabet No.1, Supplementary Set (GR area of ISO-8859-1)"}, + { 197, "Gn: Supplementary Set for Sami to complement Latin Alphabet No.6 (from Annex A of ISO-8859-10)"}, + { 199, "Gn: Latin Alphabet No.8, Celtic Supplementary Set (GR area of ISO-8859-14)"}, + { 203, "Gn: Latin Alphabet No.9, European Rim Supplementary Set (GR area of ISO-8859-15)"}, + { 0, NULL} +}; -/*--- Included file: packet-x420-hf.c ---*/ +/*--- Included file: packet-x420-hf.c ---*/ +#line 1 "packet-x420-hf.c" +static int hf_x420_InformationObject_PDU = -1; /* InformationObject */ +static int hf_x420_IA5TextParameters_PDU = -1; /* IA5TextParameters */ +static int hf_x420_IA5TextData_PDU = -1; /* IA5TextData */ +static int hf_x420_G3FacsimileParameters_PDU = -1; /* G3FacsimileParameters */ +static int hf_x420_G3FacsimileData_PDU = -1; /* G3FacsimileData */ +static int hf_x420_G4Class1Data_PDU = -1; /* G4Class1Data */ +static int hf_x420_MixedModeData_PDU = -1; /* MixedModeData */ +static int hf_x420_TeletexParameters_PDU = -1; /* TeletexParameters */ +static int hf_x420_TeletexData_PDU = -1; /* TeletexData */ +static int hf_x420_VideotexParameters_PDU = -1; /* VideotexParameters */ +static int hf_x420_VideotexData_PDU = -1; /* VideotexData */ +static int hf_x420_EncryptedParameters_PDU = -1; /* EncryptedParameters */ +static int hf_x420_EncryptedData_PDU = -1; /* EncryptedData */ +static int hf_x420_MessageParameters_PDU = -1; /* MessageParameters */ +static int hf_x420_MessageData_PDU = -1; /* MessageData */ +static int hf_x420_BilaterallyDefinedBodyPart_PDU = -1; /* BilaterallyDefinedBodyPart */ +static int hf_x420_IPN_PDU = -1; /* IPN */ static int hf_x420_AbsenceAdvice_PDU = -1; /* AbsenceAdvice */ static int hf_x420_ChangeOfAddressAdvice_PDU = -1; /* ChangeOfAddressAdvice */ static int hf_x420_IPMAssemblyInstructions_PDU = -1; /* IPMAssemblyInstructions */ static int hf_x420_OriginatingUA_PDU = -1; /* OriginatingUA */ +static int hf_x420_IncompleteCopy_PDU = -1; /* IncompleteCopy */ +static int hf_x420_Languages_PDU = -1; /* Languages */ +static int hf_x420_AutoSubmitted_PDU = -1; /* AutoSubmitted */ +static int hf_x420_BodyPartSignatures_PDU = -1; /* BodyPartSignatures */ +static int hf_x420_IPMSecurityLabel_PDU = -1; /* IPMSecurityLabel */ +static int hf_x420_AuthorizationTime_PDU = -1; /* AuthorizationTime */ +static int hf_x420_CirculationList_PDU = -1; /* CirculationList */ +static int hf_x420_CirculationListIndicator_PDU = -1; /* CirculationListIndicator */ +static int hf_x420_DistributionCodes_PDU = -1; /* DistributionCodes */ +static int hf_x420_ExtendedSubject_PDU = -1; /* ExtendedSubject */ +static int hf_x420_InformationCategories_PDU = -1; /* InformationCategories */ +static int hf_x420_ManualHandlingInstructions_PDU = -1; /* ManualHandlingInstructions */ +static int hf_x420_OriginatorsReference_PDU = -1; /* OriginatorsReference */ +static int hf_x420_PrecedencePolicyIdentifier_PDU = -1; /* PrecedencePolicyIdentifier */ +static int hf_x420_Precedence_PDU = -1; /* Precedence */ +static int hf_x420_GeneralTextParameters_PDU = -1; /* GeneralTextParameters */ +static int hf_x420_GeneralTextData_PDU = -1; /* GeneralTextData */ +static int hf_x420_VoiceParameters_PDU = -1; /* VoiceParameters */ +static int hf_x420_VoiceData_PDU = -1; /* VoiceData */ +static int hf_x420_ForwardedContentParameters_PDU = -1; /* ForwardedContentParameters */ static int hf_x420_ipm = -1; /* IPM */ static int hf_x420_ipn = -1; /* IPN */ static int hf_x420_heading = -1; /* Heading */ @@ -113,7 +181,7 @@ static int hf_x420_g3_facsimile = -1; /* G3FacsimileBodyPart */ static int hf_x420_g4_class1 = -1; /* G4Class1BodyPart */ static int hf_x420_teletex = -1; /* TeletexBodyPart */ static int hf_x420_videotex = -1; /* VideotexBodyPart */ -static int hf_x420_encrypted = -1; /* EncryptedBodyPart */ +static int hf_x420_encrypted_bp = -1; /* EncryptedBodyPart */ static int hf_x420_message = -1; /* MessageBodyPart */ static int hf_x420_mixed_mode = -1; /* MixedModeBodyPart */ static int hf_x420_bilaterally_defined = -1; /* BilaterallyDefinedBodyPart */ @@ -129,8 +197,8 @@ static int hf_x420_g3facsimile_data = -1; /* G3FacsimileData */ static int hf_x420_number_of_pages = -1; /* INTEGER */ static int hf_x420_g3facsimile_non_basic_parameters = -1; /* G3FacsimileNonBasicParameters */ static int hf_x420_G3FacsimileData_item = -1; /* BIT_STRING */ -static int hf_x420_G4Class1BodyPart_item = -1; /* Interchange_Data_Element */ -static int hf_x420_MixedModeBodyPart_item = -1; /* Interchange_Data_Element */ +static int hf_x420_G4Class1Data_item = -1; /* Interchange_Data_Element */ +static int hf_x420_MixedModeData_item = -1; /* Interchange_Data_Element */ static int hf_x420_teletex_parameters = -1; /* TeletexParameters */ static int hf_x420_teletex_data = -1; /* TeletexData */ static int hf_x420_telex_compatible = -1; /* BOOLEAN */ @@ -177,10 +245,48 @@ static int hf_x420_assembly_instructions = -1; /* BodyPartReferences */ static int hf_x420_BodyPartReferences_item = -1; /* BodyPartReference */ static int hf_x420_stored_entry = -1; /* SequenceNumber */ static int hf_x420_stored_content = -1; /* SequenceNumber */ -static int hf_x420_submitted_body_part = -1; /* INTEGER_1_MAX */ +static int hf_x420_submitted_body_part = -1; /* INTEGER */ static int hf_x420_stored_body_part = -1; /* T_stored_body_part */ static int hf_x420_message_entry = -1; /* SequenceNumber */ -static int hf_x420_body_part_number = -1; /* INTEGER_1_MAX */ +static int hf_x420_body_part_number = -1; /* BodyPartNumber */ +static int hf_x420_Languages_item = -1; /* Language */ +static int hf_x420_algorithmIdentifier = -1; /* AlgorithmIdentifier */ +static int hf_x420_encrypted = -1; /* BIT_STRING */ +static int hf_x420_BodyPartSignatures_item = -1; /* BodyPartSignatures_item */ +static int hf_x420_body_part_signature = -1; /* BodyPartSignature */ +static int hf_x420_originator_certificate_selector = -1; /* CertificateAssertion */ +static int hf_x420_content_security_label = -1; /* SecurityLabel */ +static int hf_x420_heading_security_label = -1; /* SecurityLabel */ +static int hf_x420_body_part_security_labels = -1; /* SEQUENCE_OF_BodyPartSecurityLabel */ +static int hf_x420_body_part_security_labels_item = -1; /* BodyPartSecurityLabel */ +static int hf_x420_body_part_unlabelled = -1; /* NULL */ +static int hf_x420_body_part_security_label = -1; /* SecurityLabel */ +static int hf_x420_CirculationList_item = -1; /* CirculationMember */ +static int hf_x420_circulation_recipient = -1; /* RecipientSpecifier */ +static int hf_x420_checked = -1; /* Checkmark */ +static int hf_x420_simple = -1; /* NULL */ +static int hf_x420_timestamped = -1; /* CirculationTime */ +static int hf_x420_signed = -1; /* CirculationSignature */ +static int hf_x420_circulation_signature_algorithm_identifier = -1; /* CirculationSignatureAlgorithmIdentifier */ +static int hf_x420_timestamp = -1; /* CirculationTime */ +static int hf_x420_circulation_signature_data = -1; /* CirculationSignatureData */ +static int hf_x420_DistributionCodes_item = -1; /* DistributionCode */ +static int hf_x420_oid_code = -1; /* OBJECT_IDENTIFIER */ +static int hf_x420_alphanumeric_code = -1; /* AlphaCode */ +static int hf_x420_or_descriptor = -1; /* ORDescriptor */ +static int hf_x420_InformationCategories_item = -1; /* InformationCategory */ +static int hf_x420_reference = -1; /* OBJECT_IDENTIFIER */ +static int hf_x420_description = -1; /* DescriptionString */ +static int hf_x420_ManualHandlingInstructions_item = -1; /* ManualHandlingInstruction */ +static int hf_x420_GeneralTextParameters_item = -1; /* CharacterSetRegistration */ +static int hf_x420_voice_message_duration = -1; /* INTEGER */ +static int hf_x420_voice_encoding_type = -1; /* OBJECT_IDENTIFIER */ +static int hf_x420_supplementary_information = -1; /* IA5String */ +static int hf_x420_mts_identifier = -1; /* MessageDeliveryIdentifier */ +static int hf_x420_submission_proof = -1; /* SubmissionProof */ +static int hf_x420_proof_of_submission = -1; /* ProofOfSubmission */ +static int hf_x420_originating_MTA_certificate = -1; /* OriginatingMTACertificate */ +static int hf_x420_message_submission_envelope = -1; /* MessageSubmissionEnvelope */ /* named bits */ static int hf_x420_NotificationRequests_rn = -1; static int hf_x420_NotificationRequests_nrn = -1; @@ -189,13 +295,13 @@ static int hf_x420_NotificationRequests_an_supported = -1; static int hf_x420_NotificationRequests_suppress_an = -1; /*--- End of included file: packet-x420-hf.c ---*/ - +#line 86 "packet-x420-template.c" /* Initialize the subtree pointers */ static gint ett_x420 = -1; /*--- Included file: packet-x420-ett.c ---*/ - +#line 1 "packet-x420-ett.c" static gint ett_x420_InformationObject = -1; static gint ett_x420_IPM = -1; static gint ett_x420_IPMSExtension = -1; @@ -221,8 +327,8 @@ static gint ett_x420_IA5TextParameters = -1; static gint ett_x420_G3FacsimileBodyPart = -1; static gint ett_x420_G3FacsimileParameters = -1; static gint ett_x420_G3FacsimileData = -1; -static gint ett_x420_G4Class1BodyPart = -1; -static gint ett_x420_MixedModeBodyPart = -1; +static gint ett_x420_G4Class1Data = -1; +static gint ett_x420_MixedModeData = -1; static gint ett_x420_TeletexBodyPart = -1; static gint ett_x420_TeletexParameters = -1; static gint ett_x420_TeletexData = -1; @@ -246,13 +352,34 @@ static gint ett_x420_IPMAssemblyInstructions = -1; static gint ett_x420_BodyPartReferences = -1; static gint ett_x420_BodyPartReference = -1; static gint ett_x420_T_stored_body_part = -1; +static gint ett_x420_Languages = -1; +static gint ett_x420_Signature = -1; +static gint ett_x420_BodyPartSignatures = -1; +static gint ett_x420_BodyPartSignatures_item = -1; +static gint ett_x420_IPMSecurityLabel = -1; +static gint ett_x420_SEQUENCE_OF_BodyPartSecurityLabel = -1; +static gint ett_x420_BodyPartSecurityLabel = -1; +static gint ett_x420_CirculationList = -1; +static gint ett_x420_CirculationMember = -1; +static gint ett_x420_Checkmark = -1; +static gint ett_x420_CirculationSignatureData = -1; +static gint ett_x420_CirculationSignature = -1; +static gint ett_x420_DistributionCodes = -1; +static gint ett_x420_DistributionCode = -1; +static gint ett_x420_InformationCategories = -1; +static gint ett_x420_InformationCategory = -1; +static gint ett_x420_ManualHandlingInstructions = -1; +static gint ett_x420_GeneralTextParameters = -1; +static gint ett_x420_VoiceParameters = -1; +static gint ett_x420_ForwardedContentParameters = -1; +static gint ett_x420_SubmissionProof = -1; /*--- End of included file: packet-x420-ett.c ---*/ - +#line 90 "packet-x420-template.c" /*--- Included file: packet-x420-fn.c ---*/ - +#line 1 "packet-x420-fn.c" /*--- Cyclic dependencies ---*/ /* IPM -> Body -> BodyPart -> MessageBodyPart -> MessageData -> IPM */ @@ -289,12 +416,42 @@ static int dissect_algorithm_identifier(packet_info *pinfo, proto_tree *tree, tv static int dissect_originator_certificates(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { return dissect_x411_ExtendedCertificates(FALSE, tvb, offset, pinfo, tree, hf_x420_originator_certificates); } +static int dissect_originator_certificates_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x411_ExtendedCertificates(TRUE, tvb, offset, pinfo, tree, hf_x420_originator_certificates); +} static int dissect_delivery_time_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { return dissect_x411_MessageDeliveryTime(TRUE, tvb, offset, pinfo, tree, hf_x420_delivery_time); } static int dissect_delivery_envelope_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { return dissect_x411_OtherMessageDeliveryFields(TRUE, tvb, offset, pinfo, tree, hf_x420_delivery_envelope); } +static int dissect_algorithmIdentifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x509af_AlgorithmIdentifier(FALSE, tvb, offset, pinfo, tree, hf_x420_algorithmIdentifier); +} +static int dissect_originator_certificate_selector_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x509ce_CertificateAssertion(TRUE, tvb, offset, pinfo, tree, hf_x420_originator_certificate_selector); +} +static int dissect_content_security_label_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x411_SecurityLabel(TRUE, tvb, offset, pinfo, tree, hf_x420_content_security_label); +} +static int dissect_heading_security_label_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x411_SecurityLabel(TRUE, tvb, offset, pinfo, tree, hf_x420_heading_security_label); +} +static int dissect_body_part_security_label_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x411_SecurityLabel(TRUE, tvb, offset, pinfo, tree, hf_x420_body_part_security_label); +} +static int dissect_mts_identifier_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x411_MessageDeliveryIdentifier(TRUE, tvb, offset, pinfo, tree, hf_x420_mts_identifier); +} +static int dissect_proof_of_submission_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x411_ProofOfSubmission(TRUE, tvb, offset, pinfo, tree, hf_x420_proof_of_submission); +} +static int dissect_originating_MTA_certificate_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x411_OriginatingMTACertificate(TRUE, tvb, offset, pinfo, tree, hf_x420_originating_MTA_certificate); +} +static int dissect_message_submission_envelope(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x411_MessageSubmissionEnvelope(FALSE, tvb, offset, pinfo, tree, hf_x420_message_submission_envelope); +} @@ -403,6 +560,9 @@ static int dissect_recipient_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t static int dissect_new_address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { return dissect_x420_ORDescriptor(TRUE, tvb, offset, pinfo, tree, hf_x420_new_address); } +static int dissect_or_descriptor_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_ORDescriptor(TRUE, tvb, offset, pinfo, tree, hf_x420_or_descriptor); +} @@ -485,6 +645,7 @@ static int dissect_telex_compatible_impl(packet_info *pinfo, proto_tree *tree, t static int dissect_x420_T_type(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 110 "x420.cnf" char *name = NULL; offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_index, &object_identifier_id); @@ -494,6 +655,7 @@ dissect_x420_T_type(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet proto_item_append_text(tree, " (%s)", name ? name : object_identifier_id); + return offset; } static int dissect_type(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -504,10 +666,12 @@ static int dissect_type(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int static int dissect_x420_T_value(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 118 "x420.cnf" offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree); + return offset; } static int dissect_value(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -579,6 +743,9 @@ dissect_x420_RecipientSpecifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int of return offset; } +static int dissect_circulation_recipient(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_RecipientSpecifier(FALSE, tvb, offset, pinfo, tree, hf_x420_circulation_recipient); +} @@ -736,9 +903,18 @@ static int dissect_related_IPMs_impl(packet_info *pinfo, proto_tree *tree, tvbuf static int dissect_x420_SubjectField(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_TeletexString, +#line 140 "x420.cnf" + tvbuff_t *subject=NULL; + + offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString, pinfo, tree, tvb, offset, hf_index, - NULL); + &subject); + + + if(subject && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, " (%s)", tvb_format_text(subject, 0, tvb_length(subject))); + + return offset; } @@ -979,6 +1155,12 @@ dissect_x420_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packe static int dissect_number_of_pages_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { return dissect_x420_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_x420_number_of_pages); } +static int dissect_submitted_body_part_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_x420_submitted_body_part); +} +static int dissect_voice_message_duration_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_x420_voice_message_duration); +} static const ber_sequence_t G3FacsimileParameters_set[] = { @@ -1011,6 +1193,9 @@ dissect_x420_BIT_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, pa static int dissect_G3FacsimileData_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { return dissect_x420_BIT_STRING(FALSE, tvb, offset, pinfo, tree, hf_x420_G3FacsimileData_item); } +static int dissect_encrypted(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_BIT_STRING(FALSE, tvb, offset, pinfo, tree, hf_x420_encrypted); +} static const ber_sequence_t G3FacsimileData_sequence_of[1] = { @@ -1050,28 +1235,38 @@ static int dissect_g3_facsimile_impl(packet_info *pinfo, proto_tree *tree, tvbuf static int dissect_x420_Interchange_Data_Element(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -/*ARGSUSED*/ +#line 159 "x420.cnf" /* XXX Not implemented yet */ + return offset; } -static int dissect_G4Class1BodyPart_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { - return dissect_x420_Interchange_Data_Element(FALSE, tvb, offset, pinfo, tree, hf_x420_G4Class1BodyPart_item); +static int dissect_G4Class1Data_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_Interchange_Data_Element(FALSE, tvb, offset, pinfo, tree, hf_x420_G4Class1Data_item); } -static int dissect_MixedModeBodyPart_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { - return dissect_x420_Interchange_Data_Element(FALSE, tvb, offset, pinfo, tree, hf_x420_MixedModeBodyPart_item); +static int dissect_MixedModeData_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_Interchange_Data_Element(FALSE, tvb, offset, pinfo, tree, hf_x420_MixedModeData_item); } -static const ber_sequence_t G4Class1BodyPart_sequence_of[1] = { - { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_G4Class1BodyPart_item }, +static const ber_sequence_t G4Class1Data_sequence_of[1] = { + { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_G4Class1Data_item }, }; static int -dissect_x420_G4Class1BodyPart(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +dissect_x420_G4Class1Data(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, - G4Class1BodyPart_sequence_of, hf_index, ett_x420_G4Class1BodyPart); + G4Class1Data_sequence_of, hf_index, ett_x420_G4Class1Data); + + return offset; +} + + + +static int +dissect_x420_G4Class1BodyPart(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_x420_G4Class1Data(implicit_tag, tvb, offset, pinfo, tree, hf_index); return offset; } @@ -1262,8 +1457,8 @@ dissect_x420_EncryptedBodyPart(gboolean implicit_tag _U_, tvbuff_t *tvb, int off return offset; } -static int dissect_encrypted_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { - return dissect_x420_EncryptedBodyPart(TRUE, tvb, offset, pinfo, tree, hf_x420_encrypted); +static int dissect_encrypted_bp_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_EncryptedBodyPart(TRUE, tvb, offset, pinfo, tree, hf_x420_encrypted_bp); } @@ -1315,14 +1510,23 @@ static int dissect_message_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t * } -static const ber_sequence_t MixedModeBodyPart_sequence_of[1] = { - { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_MixedModeBodyPart_item }, +static const ber_sequence_t MixedModeData_sequence_of[1] = { + { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_MixedModeData_item }, }; static int -dissect_x420_MixedModeBodyPart(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +dissect_x420_MixedModeData(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, - MixedModeBodyPart_sequence_of, hf_index, ett_x420_MixedModeBodyPart); + MixedModeData_sequence_of, hf_index, ett_x420_MixedModeData); + + return offset; +} + + + +static int +dissect_x420_MixedModeBodyPart(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_x420_MixedModeData(implicit_tag, tvb, offset, pinfo, tree, hf_index); return offset; } @@ -1347,10 +1551,12 @@ static int dissect_bilaterally_defined_impl(packet_info *pinfo, proto_tree *tree static int dissect_x420_NationallyDefinedBodyPart(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -/*ARGSUSED*/ +#line 162 "x420.cnf" /* XXX Not implemented yet */ + + return offset; } static int dissect_nationally_defined_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -1397,7 +1603,7 @@ static const ber_choice_t BodyPart_choice[] = { { 4, BER_CLASS_CON, 4, 0, dissect_g4_class1_impl }, { 5, BER_CLASS_CON, 5, 0, dissect_teletex_impl }, { 6, BER_CLASS_CON, 6, 0, dissect_videotex_impl }, - { 8, BER_CLASS_CON, 8, 0, dissect_encrypted_impl }, + { 8, BER_CLASS_CON, 8, 0, dissect_encrypted_bp_impl }, { 9, BER_CLASS_CON, 9, 0, dissect_message_impl }, { 11, BER_CLASS_CON, 11, 0, dissect_mixed_mode_impl }, { 14, BER_CLASS_CON, 14, 0, dissect_bilaterally_defined_impl }, @@ -1446,12 +1652,15 @@ static const ber_sequence_t IPM_sequence[] = { static int dissect_x420_IPM(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 122 "x420.cnf" + + if((hf_index == hf_x420_ipm) && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, " Message"); offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, IPM_sequence, hf_index, ett_x420_IPM); - if((hf_index == hf_x420_ipm) && check_col(pinfo->cinfo, COL_INFO)) - col_append_fstr(pinfo->cinfo, COL_INFO, " Message"); + @@ -1769,12 +1978,15 @@ static const ber_sequence_t IPN_set[] = { static int dissect_x420_IPN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 130 "x420.cnf" + + if((hf_index == hf_x420_ipn) && check_col(pinfo->cinfo, COL_INFO)) + col_append_fstr(pinfo->cinfo, COL_INFO, " Notification"); offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset, IPN_set, hf_index, ett_x420_IPN); - if((hf_index == hf_x420_ipn) && check_col(pinfo->cinfo, COL_INFO)) - col_append_fstr(pinfo->cinfo, COL_INFO, " Notification"); + return offset; @@ -1857,17 +2069,14 @@ static int dissect_message_entry(packet_info *pinfo, proto_tree *tree, tvbuff_t static int -dissect_x420_INTEGER_1_MAX(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +dissect_x420_BodyPartNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL); return offset; } -static int dissect_submitted_body_part_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { - return dissect_x420_INTEGER_1_MAX(TRUE, tvb, offset, pinfo, tree, hf_x420_submitted_body_part); -} static int dissect_body_part_number(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { - return dissect_x420_INTEGER_1_MAX(FALSE, tvb, offset, pinfo, tree, hf_x420_body_part_number); + return dissect_x420_BodyPartNumber(FALSE, tvb, offset, pinfo, tree, hf_x420_body_part_number); } @@ -1958,175 +2167,1049 @@ dissect_x420_OriginatingUA(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, return offset; } -/*--- PDUs ---*/ -static void dissect_AbsenceAdvice_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { - dissect_x420_AbsenceAdvice(FALSE, tvb, 0, pinfo, tree, hf_x420_AbsenceAdvice_PDU); + +static int +dissect_x420_IncompleteCopy(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_null(implicit_tag, pinfo, tree, tvb, offset, hf_index); + + return offset; } -static void dissect_ChangeOfAddressAdvice_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { - dissect_x420_ChangeOfAddressAdvice(FALSE, tvb, 0, pinfo, tree, hf_x420_ChangeOfAddressAdvice_PDU); + + + +static int +dissect_x420_Language(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 void dissect_IPMAssemblyInstructions_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { - dissect_x420_IPMAssemblyInstructions(FALSE, tvb, 0, pinfo, tree, hf_x420_IPMAssemblyInstructions_PDU); +static int dissect_Languages_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_Language(FALSE, tvb, offset, pinfo, tree, hf_x420_Languages_item); } -static void dissect_OriginatingUA_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { - dissect_x420_OriginatingUA(FALSE, tvb, 0, pinfo, tree, hf_x420_OriginatingUA_PDU); + + +static const ber_sequence_t Languages_set_of[1] = { + { BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_Languages_item }, +}; + +static int +dissect_x420_Languages(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, + Languages_set_of, hf_index, ett_x420_Languages); + + return offset; } -/*--- End of included file: packet-x420-fn.c ---*/ +static const value_string x420_AutoSubmitted_vals[] = { + { 0, "not-auto-submitted" }, + { 1, "auto-generated" }, + { 2, "auto-replied" }, + { 0, NULL } +}; -/* -* Dissect X420 PDUs inside a PPDU. -*/ -static void -dissect_x420(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree) -{ - int offset = 0; - proto_item *item=NULL; - proto_tree *tree=NULL; +static int +dissect_x420_AutoSubmitted(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, + NULL); - if(parent_tree){ - item = proto_tree_add_item(parent_tree, proto_x420, tvb, 0, -1, FALSE); - tree = proto_item_add_subtree(item, ett_x420); - } + return offset; +} - if (check_col(pinfo->cinfo, COL_PROTOCOL)) - col_set_str(pinfo->cinfo, COL_PROTOCOL, "P22"); - if (check_col(pinfo->cinfo, COL_INFO)) - col_add_str(pinfo->cinfo, COL_INFO, "InterPersonal"); - dissect_x420_InformationObject(TRUE, tvb, offset, pinfo , tree, -1); +static const ber_sequence_t Signature_sequence[] = { + { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithmIdentifier }, + { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted }, + { 0, 0, 0, NULL } +}; + +static int +dissect_x420_Signature(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, + Signature_sequence, hf_index, ett_x420_Signature); + + return offset; } -/*--- proto_register_x420 -------------------------------------------*/ -void proto_register_x420(void) { - /* List of fields */ - static hf_register_info hf[] = - { +static int +dissect_x420_BodyPartSignature(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_x420_Signature(implicit_tag, tvb, offset, pinfo, tree, hf_index); -/*--- Included file: packet-x420-hfarr.c ---*/ + return offset; +} +static int dissect_body_part_signature(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_BodyPartSignature(FALSE, tvb, offset, pinfo, tree, hf_x420_body_part_signature); +} - { &hf_x420_AbsenceAdvice_PDU, - { "AbsenceAdvice", "x420.AbsenceAdvice", - FT_NONE, BASE_NONE, NULL, 0, - "AbsenceAdvice", HFILL }}, - { &hf_x420_ChangeOfAddressAdvice_PDU, - { "ChangeOfAddressAdvice", "x420.ChangeOfAddressAdvice", - FT_NONE, BASE_NONE, NULL, 0, - "ChangeOfAddressAdvice", HFILL }}, - { &hf_x420_IPMAssemblyInstructions_PDU, - { "IPMAssemblyInstructions", "x420.IPMAssemblyInstructions", - FT_NONE, BASE_NONE, NULL, 0, - "IPMAssemblyInstructions", HFILL }}, - { &hf_x420_OriginatingUA_PDU, - { "OriginatingUA", "x420.OriginatingUA", - FT_STRING, BASE_NONE, NULL, 0, - "OriginatingUA", HFILL }}, - { &hf_x420_ipm, - { "ipm", "x420.ipm", - FT_NONE, BASE_NONE, NULL, 0, - "InformationObject/ipm", HFILL }}, - { &hf_x420_ipn, - { "ipn", "x420.ipn", - FT_NONE, BASE_NONE, NULL, 0, - "InformationObject/ipn", HFILL }}, - { &hf_x420_heading, - { "heading", "x420.heading", - FT_NONE, BASE_NONE, NULL, 0, - "IPM/heading", HFILL }}, - { &hf_x420_body, - { "body", "x420.body", - FT_UINT32, BASE_DEC, NULL, 0, - "IPM/body", HFILL }}, - { &hf_x420_type, - { "type", "x420.type", - FT_STRING, BASE_NONE, NULL, 0, - "IPMSExtension/type", HFILL }}, - { &hf_x420_value, - { "value", "x420.value", - FT_NONE, BASE_NONE, NULL, 0, - "IPMSExtension/value", HFILL }}, - { &hf_x420_this_IPM, - { "this-IPM", "x420.this_IPM", - FT_NONE, BASE_NONE, NULL, 0, - "Heading/this-IPM", HFILL }}, - { &hf_x420_originator, - { "originator", "x420.originator", - FT_NONE, BASE_NONE, NULL, 0, - "Heading/originator", HFILL }}, - { &hf_x420_authorizing_users, - { "authorizing-users", "x420.authorizing_users", - FT_UINT32, BASE_DEC, NULL, 0, - "Heading/authorizing-users", HFILL }}, - { &hf_x420_primary_recipients, - { "primary-recipients", "x420.primary_recipients", - FT_UINT32, BASE_DEC, NULL, 0, - "Heading/primary-recipients", HFILL }}, - { &hf_x420_copy_recipients, - { "copy-recipients", "x420.copy_recipients", - FT_UINT32, BASE_DEC, NULL, 0, - "Heading/copy-recipients", HFILL }}, - { &hf_x420_blind_copy_recipients, - { "blind-copy-recipients", "x420.blind_copy_recipients", - FT_UINT32, BASE_DEC, NULL, 0, - "Heading/blind-copy-recipients", HFILL }}, - { &hf_x420_replied_to_IPM, - { "replied-to-IPM", "x420.replied_to_IPM", - FT_NONE, BASE_NONE, NULL, 0, - "Heading/replied-to-IPM", HFILL }}, - { &hf_x420_obsoleted_IPMs, - { "obsoleted-IPMs", "x420.obsoleted_IPMs", - FT_UINT32, BASE_DEC, NULL, 0, - "Heading/obsoleted-IPMs", HFILL }}, - { &hf_x420_related_IPMs, - { "related-IPMs", "x420.related_IPMs", - FT_UINT32, BASE_DEC, NULL, 0, - "Heading/related-IPMs", HFILL }}, - { &hf_x420_subject, - { "subject", "x420.subject", - FT_STRING, BASE_NONE, NULL, 0, - "Heading/subject", HFILL }}, - { &hf_x420_expiry_time, - { "expiry-time", "x420.expiry_time", - FT_UINT32, BASE_DEC, VALS(x509af_Time_vals), 0, - "Heading/expiry-time", HFILL }}, - { &hf_x420_reply_time, - { "reply-time", "x420.reply_time", - FT_UINT32, BASE_DEC, VALS(x509af_Time_vals), 0, - "Heading/reply-time", HFILL }}, - { &hf_x420_reply_recipients, - { "reply-recipients", "x420.reply_recipients", - FT_UINT32, BASE_DEC, NULL, 0, - "Heading/reply-recipients", HFILL }}, - { &hf_x420_importance, - { "importance", "x420.importance", - FT_UINT32, BASE_DEC, VALS(x420_ImportanceField_vals), 0, - "Heading/importance", HFILL }}, - { &hf_x420_sensitivity, - { "sensitivity", "x420.sensitivity", - FT_UINT32, BASE_DEC, VALS(x420_SensitivityField_vals), 0, - "Heading/sensitivity", HFILL }}, - { &hf_x420_auto_forwarded, - { "auto-forwarded", "x420.auto_forwarded", - FT_BOOLEAN, 8, NULL, 0, - "Heading/auto-forwarded", HFILL }}, - { &hf_x420_extensions, - { "extensions", "x420.extensions", - FT_UINT32, BASE_DEC, NULL, 0, - "Heading/extensions", HFILL }}, - { &hf_x420_user, - { "user", "x420.user", - FT_NONE, BASE_NONE, NULL, 0, - "IPMIdentifier/user", HFILL }}, - { &hf_x420_user_relative_identifier, - { "user-relative-identifier", "x420.user_relative_identifier", - FT_STRING, BASE_NONE, NULL, 0, - "IPMIdentifier/user-relative-identifier", HFILL }}, - { &hf_x420_recipient, + +static const ber_sequence_t BodyPartSignatures_item_set[] = { + { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_body_part_number }, + { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_body_part_signature }, + { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_originator_certificate_selector_impl }, + { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_originator_certificates_impl }, + { 0, 0, 0, NULL } +}; + +static int +dissect_x420_BodyPartSignatures_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset, + BodyPartSignatures_item_set, hf_index, ett_x420_BodyPartSignatures_item); + + return offset; +} +static int dissect_BodyPartSignatures_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_BodyPartSignatures_item(FALSE, tvb, offset, pinfo, tree, hf_x420_BodyPartSignatures_item); +} + + +static const ber_sequence_t BodyPartSignatures_set_of[1] = { + { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_BodyPartSignatures_item }, +}; + +static int +dissect_x420_BodyPartSignatures(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, + BodyPartSignatures_set_of, hf_index, ett_x420_BodyPartSignatures); + + return offset; +} + + + +static int +dissect_x420_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_null(implicit_tag, pinfo, tree, tvb, offset, hf_index); + + return offset; +} +static int dissect_body_part_unlabelled_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_NULL(TRUE, tvb, offset, pinfo, tree, hf_x420_body_part_unlabelled); +} +static int dissect_simple(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_NULL(FALSE, tvb, offset, pinfo, tree, hf_x420_simple); +} + + +static const value_string x420_BodyPartSecurityLabel_vals[] = { + { 0, "body-part-unlabelled" }, + { 1, "body-part-security-label" }, + { 0, NULL } +}; + +static const ber_choice_t BodyPartSecurityLabel_choice[] = { + { 0, BER_CLASS_CON, 0, 0, dissect_body_part_unlabelled_impl }, + { 1, BER_CLASS_CON, 1, 0, dissect_body_part_security_label_impl }, + { 0, 0, 0, 0, NULL } +}; + +static int +dissect_x420_BodyPartSecurityLabel(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, + BodyPartSecurityLabel_choice, hf_index, ett_x420_BodyPartSecurityLabel, + NULL); + + return offset; +} +static int dissect_body_part_security_labels_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_BodyPartSecurityLabel(FALSE, tvb, offset, pinfo, tree, hf_x420_body_part_security_labels_item); +} + + +static const ber_sequence_t SEQUENCE_OF_BodyPartSecurityLabel_sequence_of[1] = { + { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_body_part_security_labels_item }, +}; + +static int +dissect_x420_SEQUENCE_OF_BodyPartSecurityLabel(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, + SEQUENCE_OF_BodyPartSecurityLabel_sequence_of, hf_index, ett_x420_SEQUENCE_OF_BodyPartSecurityLabel); + + return offset; +} +static int dissect_body_part_security_labels_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_SEQUENCE_OF_BodyPartSecurityLabel(TRUE, tvb, offset, pinfo, tree, hf_x420_body_part_security_labels); +} + + +static const ber_sequence_t IPMSecurityLabel_sequence[] = { + { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_content_security_label_impl }, + { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_heading_security_label_impl }, + { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_body_part_security_labels_impl }, + { 0, 0, 0, NULL } +}; + +static int +dissect_x420_IPMSecurityLabel(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, + IPMSecurityLabel_sequence, hf_index, ett_x420_IPMSecurityLabel); + + return offset; +} + + + +static int +dissect_x420_AuthorizationTime(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_GeneralizedTime(implicit_tag, pinfo, tree, tvb, offset, hf_index); + + return offset; +} + + + +static int +dissect_x420_CirculationTime(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_GeneralizedTime(implicit_tag, pinfo, tree, tvb, offset, hf_index); + + return offset; +} +static int dissect_timestamped(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_CirculationTime(FALSE, tvb, offset, pinfo, tree, hf_x420_timestamped); +} +static int dissect_timestamp(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_CirculationTime(FALSE, tvb, offset, pinfo, tree, hf_x420_timestamp); +} + + + +static int +dissect_x420_CirculationSignatureAlgorithmIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_x509af_AlgorithmIdentifier(implicit_tag, tvb, offset, pinfo, tree, hf_index); + + return offset; +} +static int dissect_circulation_signature_algorithm_identifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_CirculationSignatureAlgorithmIdentifier(FALSE, tvb, offset, pinfo, tree, hf_x420_circulation_signature_algorithm_identifier); +} + + +static const ber_sequence_t CirculationSignatureData_sequence[] = { + { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_circulation_signature_algorithm_identifier }, + { BER_CLASS_APP, 11, BER_FLAGS_NOOWNTAG, dissect_this_IPM }, + { BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_timestamp }, + { 0, 0, 0, NULL } +}; + +static int +dissect_x420_CirculationSignatureData(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, + CirculationSignatureData_sequence, hf_index, ett_x420_CirculationSignatureData); + + return offset; +} +static int dissect_circulation_signature_data(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_CirculationSignatureData(FALSE, tvb, offset, pinfo, tree, hf_x420_circulation_signature_data); +} + + +static const ber_sequence_t CirculationSignature_sequence[] = { + { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_circulation_signature_data }, + { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithm_identifier }, + { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted }, + { 0, 0, 0, NULL } +}; + +static int +dissect_x420_CirculationSignature(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, + CirculationSignature_sequence, hf_index, ett_x420_CirculationSignature); + + return offset; +} +static int dissect_signed(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_CirculationSignature(FALSE, tvb, offset, pinfo, tree, hf_x420_signed); +} + + +static const value_string x420_Checkmark_vals[] = { + { 0, "simple" }, + { 1, "timestamped" }, + { 2, "signed" }, + { 0, NULL } +}; + +static const ber_choice_t Checkmark_choice[] = { + { 0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_simple }, + { 1, BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_timestamped }, + { 2, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signed }, + { 0, 0, 0, 0, NULL } +}; + +static int +dissect_x420_Checkmark(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, + Checkmark_choice, hf_index, ett_x420_Checkmark, + NULL); + + return offset; +} +static int dissect_checked(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_Checkmark(FALSE, tvb, offset, pinfo, tree, hf_x420_checked); +} + + +static const ber_sequence_t CirculationMember_set[] = { + { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_circulation_recipient }, + { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_checked }, + { 0, 0, 0, NULL } +}; + +static int +dissect_x420_CirculationMember(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset, + CirculationMember_set, hf_index, ett_x420_CirculationMember); + + return offset; +} +static int dissect_CirculationList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_CirculationMember(FALSE, tvb, offset, pinfo, tree, hf_x420_CirculationList_item); +} + + +static const ber_sequence_t CirculationList_sequence_of[1] = { + { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_CirculationList_item }, +}; + +static int +dissect_x420_CirculationList(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, + CirculationList_sequence_of, hf_index, ett_x420_CirculationList); + + return offset; +} + + + +static int +dissect_x420_CirculationListIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_null(implicit_tag, pinfo, tree, tvb, offset, hf_index); + + return offset; +} + + + +static int +dissect_x420_OBJECT_IDENTIFIER(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 int dissect_oid_code(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_x420_oid_code); +} +static int dissect_reference_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_OBJECT_IDENTIFIER(TRUE, tvb, offset, pinfo, tree, hf_x420_reference); +} +static int dissect_voice_encoding_type_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_OBJECT_IDENTIFIER(TRUE, tvb, offset, pinfo, tree, hf_x420_voice_encoding_type); +} + + + +static int +dissect_x420_AlphaCode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_x411_UniversalOrBMPString(implicit_tag, tvb, offset, pinfo, tree, hf_index); + + return offset; +} +static int dissect_alphanumeric_code(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_AlphaCode(FALSE, tvb, offset, pinfo, tree, hf_x420_alphanumeric_code); +} + + +static const ber_sequence_t DistributionCode_sequence[] = { + { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_oid_code }, + { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_alphanumeric_code }, + { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_or_descriptor_impl }, + { 0, 0, 0, NULL } +}; + +static int +dissect_x420_DistributionCode(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, + DistributionCode_sequence, hf_index, ett_x420_DistributionCode); + + return offset; +} +static int dissect_DistributionCodes_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_DistributionCode(FALSE, tvb, offset, pinfo, tree, hf_x420_DistributionCodes_item); +} + + +static const ber_sequence_t DistributionCodes_sequence_of[1] = { + { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_DistributionCodes_item }, +}; + +static int +dissect_x420_DistributionCodes(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, + DistributionCodes_sequence_of, hf_index, ett_x420_DistributionCodes); + + return offset; +} + + + +static int +dissect_x420_ExtendedSubject(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_x411_UniversalOrBMPString(implicit_tag, tvb, offset, pinfo, tree, hf_index); + + return offset; +} + + + +static int +dissect_x420_DescriptionString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_x411_UniversalOrBMPString(implicit_tag, tvb, offset, pinfo, tree, hf_index); + + return offset; +} +static int dissect_description_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_DescriptionString(TRUE, tvb, offset, pinfo, tree, hf_x420_description); +} + + +static const ber_sequence_t InformationCategory_sequence[] = { + { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_reference_impl }, + { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_description_impl }, + { 0, 0, 0, NULL } +}; + +static int +dissect_x420_InformationCategory(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, + InformationCategory_sequence, hf_index, ett_x420_InformationCategory); + + return offset; +} +static int dissect_InformationCategories_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_InformationCategory(FALSE, tvb, offset, pinfo, tree, hf_x420_InformationCategories_item); +} + + +static const ber_sequence_t InformationCategories_sequence_of[1] = { + { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_InformationCategories_item }, +}; + +static int +dissect_x420_InformationCategories(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, + InformationCategories_sequence_of, hf_index, ett_x420_InformationCategories); + + return offset; +} + + + +static int +dissect_x420_ManualHandlingInstruction(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_x411_UniversalOrBMPString(implicit_tag, tvb, offset, pinfo, tree, hf_index); + + return offset; +} +static int dissect_ManualHandlingInstructions_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_ManualHandlingInstruction(FALSE, tvb, offset, pinfo, tree, hf_x420_ManualHandlingInstructions_item); +} + + +static const ber_sequence_t ManualHandlingInstructions_sequence_of[1] = { + { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_ManualHandlingInstructions_item }, +}; + +static int +dissect_x420_ManualHandlingInstructions(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, + ManualHandlingInstructions_sequence_of, hf_index, ett_x420_ManualHandlingInstructions); + + return offset; +} + + + +static int +dissect_x420_OriginatorsReference(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_x411_UniversalOrBMPString(implicit_tag, tvb, offset, pinfo, tree, hf_index); + + return offset; +} + + + +static int +dissect_x420_PrecedencePolicyIdentifier(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 int +dissect_x420_Precedence(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_x420_CharacterSetRegistration(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 151 "x420.cnf" + guint32 crs; + proto_item *pi; + offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, + &crs); + + + if((pi = get_ber_last_created_item())) + proto_item_append_text(pi, " (%s)", val_to_str(crs, charsetreg_vals, "unknown")); + + + + return offset; +} +static int dissect_GeneralTextParameters_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_CharacterSetRegistration(FALSE, tvb, offset, pinfo, tree, hf_x420_GeneralTextParameters_item); +} + + +static const ber_sequence_t GeneralTextParameters_set_of[1] = { + { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_GeneralTextParameters_item }, +}; + +static int +dissect_x420_GeneralTextParameters(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, + GeneralTextParameters_set_of, hf_index, ett_x420_GeneralTextParameters); + + return offset; +} + + + +static int +dissect_x420_GeneralTextData(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_GeneralString, + pinfo, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_x420_IA5String(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_IA5String, + pinfo, tree, tvb, offset, hf_index, + NULL); + + return offset; +} +static int dissect_supplementary_information_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_IA5String(TRUE, tvb, offset, pinfo, tree, hf_x420_supplementary_information); +} + + +static const ber_sequence_t VoiceParameters_sequence[] = { + { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_voice_message_duration_impl }, + { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_voice_encoding_type_impl }, + { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supplementary_information_impl }, + { 0, 0, 0, NULL } +}; + +static int +dissect_x420_VoiceParameters(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, + VoiceParameters_sequence, hf_index, ett_x420_VoiceParameters); + + return offset; +} + + + +static int +dissect_x420_VoiceData(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_t SubmissionProof_set[] = { + { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_proof_of_submission_impl }, + { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_originating_MTA_certificate_impl }, + { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_message_submission_envelope }, + { 0, 0, 0, NULL } +}; + +static int +dissect_x420_SubmissionProof(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset, + SubmissionProof_set, hf_index, ett_x420_SubmissionProof); + + return offset; +} +static int dissect_submission_proof_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x420_SubmissionProof(TRUE, tvb, offset, pinfo, tree, hf_x420_submission_proof); +} + + +static const ber_sequence_t ForwardedContentParameters_set[] = { + { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_delivery_time_impl }, + { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_delivery_envelope_impl }, + { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mts_identifier_impl }, + { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_submission_proof_impl }, + { 0, 0, 0, NULL } +}; + +static int +dissect_x420_ForwardedContentParameters(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset, + ForwardedContentParameters_set, hf_index, ett_x420_ForwardedContentParameters); + + return offset; +} + +/*--- PDUs ---*/ + +static void dissect_InformationObject_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_InformationObject(FALSE, tvb, 0, pinfo, tree, hf_x420_InformationObject_PDU); +} +static void dissect_IA5TextParameters_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_IA5TextParameters(FALSE, tvb, 0, pinfo, tree, hf_x420_IA5TextParameters_PDU); +} +static void dissect_IA5TextData_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_IA5TextData(FALSE, tvb, 0, pinfo, tree, hf_x420_IA5TextData_PDU); +} +static void dissect_G3FacsimileParameters_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_G3FacsimileParameters(FALSE, tvb, 0, pinfo, tree, hf_x420_G3FacsimileParameters_PDU); +} +static void dissect_G3FacsimileData_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_G3FacsimileData(FALSE, tvb, 0, pinfo, tree, hf_x420_G3FacsimileData_PDU); +} +static void dissect_G4Class1Data_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_G4Class1Data(FALSE, tvb, 0, pinfo, tree, hf_x420_G4Class1Data_PDU); +} +static void dissect_MixedModeData_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_MixedModeData(FALSE, tvb, 0, pinfo, tree, hf_x420_MixedModeData_PDU); +} +static void dissect_TeletexParameters_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_TeletexParameters(FALSE, tvb, 0, pinfo, tree, hf_x420_TeletexParameters_PDU); +} +static void dissect_TeletexData_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_TeletexData(FALSE, tvb, 0, pinfo, tree, hf_x420_TeletexData_PDU); +} +static void dissect_VideotexParameters_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_VideotexParameters(FALSE, tvb, 0, pinfo, tree, hf_x420_VideotexParameters_PDU); +} +static void dissect_VideotexData_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_VideotexData(FALSE, tvb, 0, pinfo, tree, hf_x420_VideotexData_PDU); +} +static void dissect_EncryptedParameters_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_EncryptedParameters(FALSE, tvb, 0, pinfo, tree, hf_x420_EncryptedParameters_PDU); +} +static void dissect_EncryptedData_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_EncryptedData(FALSE, tvb, 0, pinfo, tree, hf_x420_EncryptedData_PDU); +} +static void dissect_MessageParameters_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_MessageParameters(FALSE, tvb, 0, pinfo, tree, hf_x420_MessageParameters_PDU); +} +static void dissect_MessageData_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_MessageData(FALSE, tvb, 0, pinfo, tree, hf_x420_MessageData_PDU); +} +static void dissect_BilaterallyDefinedBodyPart_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_BilaterallyDefinedBodyPart(FALSE, tvb, 0, pinfo, tree, hf_x420_BilaterallyDefinedBodyPart_PDU); +} +static void dissect_IPN_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_IPN(FALSE, tvb, 0, pinfo, tree, hf_x420_IPN_PDU); +} +static void dissect_AbsenceAdvice_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_AbsenceAdvice(FALSE, tvb, 0, pinfo, tree, hf_x420_AbsenceAdvice_PDU); +} +static void dissect_ChangeOfAddressAdvice_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_ChangeOfAddressAdvice(FALSE, tvb, 0, pinfo, tree, hf_x420_ChangeOfAddressAdvice_PDU); +} +static void dissect_IPMAssemblyInstructions_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_IPMAssemblyInstructions(FALSE, tvb, 0, pinfo, tree, hf_x420_IPMAssemblyInstructions_PDU); +} +static void dissect_OriginatingUA_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_OriginatingUA(FALSE, tvb, 0, pinfo, tree, hf_x420_OriginatingUA_PDU); +} +static void dissect_IncompleteCopy_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_IncompleteCopy(FALSE, tvb, 0, pinfo, tree, hf_x420_IncompleteCopy_PDU); +} +static void dissect_Languages_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_Languages(FALSE, tvb, 0, pinfo, tree, hf_x420_Languages_PDU); +} +static void dissect_AutoSubmitted_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_AutoSubmitted(FALSE, tvb, 0, pinfo, tree, hf_x420_AutoSubmitted_PDU); +} +static void dissect_BodyPartSignatures_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_BodyPartSignatures(FALSE, tvb, 0, pinfo, tree, hf_x420_BodyPartSignatures_PDU); +} +static void dissect_IPMSecurityLabel_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_IPMSecurityLabel(FALSE, tvb, 0, pinfo, tree, hf_x420_IPMSecurityLabel_PDU); +} +static void dissect_AuthorizationTime_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_AuthorizationTime(FALSE, tvb, 0, pinfo, tree, hf_x420_AuthorizationTime_PDU); +} +static void dissect_CirculationList_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_CirculationList(FALSE, tvb, 0, pinfo, tree, hf_x420_CirculationList_PDU); +} +static void dissect_CirculationListIndicator_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_CirculationListIndicator(FALSE, tvb, 0, pinfo, tree, hf_x420_CirculationListIndicator_PDU); +} +static void dissect_DistributionCodes_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_DistributionCodes(FALSE, tvb, 0, pinfo, tree, hf_x420_DistributionCodes_PDU); +} +static void dissect_ExtendedSubject_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_ExtendedSubject(FALSE, tvb, 0, pinfo, tree, hf_x420_ExtendedSubject_PDU); +} +static void dissect_InformationCategories_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_InformationCategories(FALSE, tvb, 0, pinfo, tree, hf_x420_InformationCategories_PDU); +} +static void dissect_ManualHandlingInstructions_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_ManualHandlingInstructions(FALSE, tvb, 0, pinfo, tree, hf_x420_ManualHandlingInstructions_PDU); +} +static void dissect_OriginatorsReference_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_OriginatorsReference(FALSE, tvb, 0, pinfo, tree, hf_x420_OriginatorsReference_PDU); +} +static void dissect_PrecedencePolicyIdentifier_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_PrecedencePolicyIdentifier(FALSE, tvb, 0, pinfo, tree, hf_x420_PrecedencePolicyIdentifier_PDU); +} +static void dissect_Precedence_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_Precedence(FALSE, tvb, 0, pinfo, tree, hf_x420_Precedence_PDU); +} +static void dissect_GeneralTextParameters_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_GeneralTextParameters(FALSE, tvb, 0, pinfo, tree, hf_x420_GeneralTextParameters_PDU); +} +static void dissect_GeneralTextData_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_GeneralTextData(FALSE, tvb, 0, pinfo, tree, hf_x420_GeneralTextData_PDU); +} +static void dissect_VoiceParameters_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_VoiceParameters(FALSE, tvb, 0, pinfo, tree, hf_x420_VoiceParameters_PDU); +} +static void dissect_VoiceData_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_VoiceData(FALSE, tvb, 0, pinfo, tree, hf_x420_VoiceData_PDU); +} +static void dissect_ForwardedContentParameters_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x420_ForwardedContentParameters(FALSE, tvb, 0, pinfo, tree, hf_x420_ForwardedContentParameters_PDU); +} + + +/*--- End of included file: packet-x420-fn.c ---*/ +#line 92 "packet-x420-template.c" + +/* +* Dissect X420 PDUs inside a PPDU. +*/ +static void +dissect_x420(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree) +{ + int offset = 0; + proto_item *item=NULL; + proto_tree *tree=NULL; + + if(parent_tree){ + item = proto_tree_add_item(parent_tree, proto_x420, tvb, 0, -1, FALSE); + tree = proto_item_add_subtree(item, ett_x420); + } + + if (check_col(pinfo->cinfo, COL_PROTOCOL)) + col_set_str(pinfo->cinfo, COL_PROTOCOL, "P22"); + if (check_col(pinfo->cinfo, COL_INFO)) + col_add_str(pinfo->cinfo, COL_INFO, "InterPersonal"); + + dissect_x420_InformationObject(TRUE, tvb, offset, pinfo , tree, -1); +} + + +/*--- proto_register_x420 -------------------------------------------*/ +void proto_register_x420(void) { + + /* List of fields */ + static hf_register_info hf[] = + { + +/*--- Included file: packet-x420-hfarr.c ---*/ +#line 1 "packet-x420-hfarr.c" + { &hf_x420_InformationObject_PDU, + { "InformationObject", "x420.InformationObject", + FT_UINT32, BASE_DEC, VALS(x420_InformationObject_vals), 0, + "InformationObject", HFILL }}, + { &hf_x420_IA5TextParameters_PDU, + { "IA5TextParameters", "x420.IA5TextParameters", + FT_NONE, BASE_NONE, NULL, 0, + "IA5TextParameters", HFILL }}, + { &hf_x420_IA5TextData_PDU, + { "IA5TextData", "x420.IA5TextData", + FT_STRING, BASE_NONE, NULL, 0, + "IA5TextData", HFILL }}, + { &hf_x420_G3FacsimileParameters_PDU, + { "G3FacsimileParameters", "x420.G3FacsimileParameters", + FT_NONE, BASE_NONE, NULL, 0, + "G3FacsimileParameters", HFILL }}, + { &hf_x420_G3FacsimileData_PDU, + { "G3FacsimileData", "x420.G3FacsimileData", + FT_UINT32, BASE_DEC, NULL, 0, + "G3FacsimileData", HFILL }}, + { &hf_x420_G4Class1Data_PDU, + { "G4Class1Data", "x420.G4Class1Data", + FT_UINT32, BASE_DEC, NULL, 0, + "G4Class1Data", HFILL }}, + { &hf_x420_MixedModeData_PDU, + { "MixedModeData", "x420.MixedModeData", + FT_UINT32, BASE_DEC, NULL, 0, + "MixedModeData", HFILL }}, + { &hf_x420_TeletexParameters_PDU, + { "TeletexParameters", "x420.TeletexParameters", + FT_NONE, BASE_NONE, NULL, 0, + "TeletexParameters", HFILL }}, + { &hf_x420_TeletexData_PDU, + { "TeletexData", "x420.TeletexData", + FT_UINT32, BASE_DEC, NULL, 0, + "TeletexData", HFILL }}, + { &hf_x420_VideotexParameters_PDU, + { "VideotexParameters", "x420.VideotexParameters", + FT_NONE, BASE_NONE, NULL, 0, + "VideotexParameters", HFILL }}, + { &hf_x420_VideotexData_PDU, + { "VideotexData", "x420.VideotexData", + FT_STRING, BASE_NONE, NULL, 0, + "VideotexData", HFILL }}, + { &hf_x420_EncryptedParameters_PDU, + { "EncryptedParameters", "x420.EncryptedParameters", + FT_NONE, BASE_NONE, NULL, 0, + "EncryptedParameters", HFILL }}, + { &hf_x420_EncryptedData_PDU, + { "EncryptedData", "x420.EncryptedData", + FT_BYTES, BASE_HEX, NULL, 0, + "EncryptedData", HFILL }}, + { &hf_x420_MessageParameters_PDU, + { "MessageParameters", "x420.MessageParameters", + FT_NONE, BASE_NONE, NULL, 0, + "MessageParameters", HFILL }}, + { &hf_x420_MessageData_PDU, + { "MessageData", "x420.MessageData", + FT_NONE, BASE_NONE, NULL, 0, + "MessageData", HFILL }}, + { &hf_x420_BilaterallyDefinedBodyPart_PDU, + { "BilaterallyDefinedBodyPart", "x420.BilaterallyDefinedBodyPart", + FT_BYTES, BASE_HEX, NULL, 0, + "BilaterallyDefinedBodyPart", HFILL }}, + { &hf_x420_IPN_PDU, + { "IPN", "x420.IPN", + FT_NONE, BASE_NONE, NULL, 0, + "IPN", HFILL }}, + { &hf_x420_AbsenceAdvice_PDU, + { "AbsenceAdvice", "x420.AbsenceAdvice", + FT_NONE, BASE_NONE, NULL, 0, + "AbsenceAdvice", HFILL }}, + { &hf_x420_ChangeOfAddressAdvice_PDU, + { "ChangeOfAddressAdvice", "x420.ChangeOfAddressAdvice", + FT_NONE, BASE_NONE, NULL, 0, + "ChangeOfAddressAdvice", HFILL }}, + { &hf_x420_IPMAssemblyInstructions_PDU, + { "IPMAssemblyInstructions", "x420.IPMAssemblyInstructions", + FT_NONE, BASE_NONE, NULL, 0, + "IPMAssemblyInstructions", HFILL }}, + { &hf_x420_OriginatingUA_PDU, + { "OriginatingUA", "x420.OriginatingUA", + FT_STRING, BASE_NONE, NULL, 0, + "OriginatingUA", HFILL }}, + { &hf_x420_IncompleteCopy_PDU, + { "IncompleteCopy", "x420.IncompleteCopy", + FT_NONE, BASE_NONE, NULL, 0, + "IncompleteCopy", HFILL }}, + { &hf_x420_Languages_PDU, + { "Languages", "x420.Languages", + FT_UINT32, BASE_DEC, NULL, 0, + "Languages", HFILL }}, + { &hf_x420_AutoSubmitted_PDU, + { "AutoSubmitted", "x420.AutoSubmitted", + FT_UINT32, BASE_DEC, VALS(x420_AutoSubmitted_vals), 0, + "AutoSubmitted", HFILL }}, + { &hf_x420_BodyPartSignatures_PDU, + { "BodyPartSignatures", "x420.BodyPartSignatures", + FT_UINT32, BASE_DEC, NULL, 0, + "BodyPartSignatures", HFILL }}, + { &hf_x420_IPMSecurityLabel_PDU, + { "IPMSecurityLabel", "x420.IPMSecurityLabel", + FT_NONE, BASE_NONE, NULL, 0, + "IPMSecurityLabel", HFILL }}, + { &hf_x420_AuthorizationTime_PDU, + { "AuthorizationTime", "x420.AuthorizationTime", + FT_STRING, BASE_NONE, NULL, 0, + "AuthorizationTime", HFILL }}, + { &hf_x420_CirculationList_PDU, + { "CirculationList", "x420.CirculationList", + FT_UINT32, BASE_DEC, NULL, 0, + "CirculationList", HFILL }}, + { &hf_x420_CirculationListIndicator_PDU, + { "CirculationListIndicator", "x420.CirculationListIndicator", + FT_NONE, BASE_NONE, NULL, 0, + "CirculationListIndicator", HFILL }}, + { &hf_x420_DistributionCodes_PDU, + { "DistributionCodes", "x420.DistributionCodes", + FT_UINT32, BASE_DEC, NULL, 0, + "DistributionCodes", HFILL }}, + { &hf_x420_ExtendedSubject_PDU, + { "ExtendedSubject", "x420.ExtendedSubject", + FT_NONE, BASE_NONE, NULL, 0, + "ExtendedSubject", HFILL }}, + { &hf_x420_InformationCategories_PDU, + { "InformationCategories", "x420.InformationCategories", + FT_UINT32, BASE_DEC, NULL, 0, + "InformationCategories", HFILL }}, + { &hf_x420_ManualHandlingInstructions_PDU, + { "ManualHandlingInstructions", "x420.ManualHandlingInstructions", + FT_UINT32, BASE_DEC, NULL, 0, + "ManualHandlingInstructions", HFILL }}, + { &hf_x420_OriginatorsReference_PDU, + { "OriginatorsReference", "x420.OriginatorsReference", + FT_NONE, BASE_NONE, NULL, 0, + "OriginatorsReference", HFILL }}, + { &hf_x420_PrecedencePolicyIdentifier_PDU, + { "PrecedencePolicyIdentifier", "x420.PrecedencePolicyIdentifier", + FT_OID, BASE_NONE, NULL, 0, + "PrecedencePolicyIdentifier", HFILL }}, + { &hf_x420_Precedence_PDU, + { "Precedence", "x420.Precedence", + FT_UINT32, BASE_DEC, NULL, 0, + "Precedence", HFILL }}, + { &hf_x420_GeneralTextParameters_PDU, + { "GeneralTextParameters", "x420.GeneralTextParameters", + FT_UINT32, BASE_DEC, NULL, 0, + "GeneralTextParameters", HFILL }}, + { &hf_x420_GeneralTextData_PDU, + { "GeneralTextData", "x420.GeneralTextData", + FT_STRING, BASE_NONE, NULL, 0, + "GeneralTextData", HFILL }}, + { &hf_x420_VoiceParameters_PDU, + { "VoiceParameters", "x420.VoiceParameters", + FT_NONE, BASE_NONE, NULL, 0, + "VoiceParameters", HFILL }}, + { &hf_x420_VoiceData_PDU, + { "VoiceData", "x420.VoiceData", + FT_BYTES, BASE_HEX, NULL, 0, + "VoiceData", HFILL }}, + { &hf_x420_ForwardedContentParameters_PDU, + { "ForwardedContentParameters", "x420.ForwardedContentParameters", + FT_NONE, BASE_NONE, NULL, 0, + "ForwardedContentParameters", HFILL }}, + { &hf_x420_ipm, + { "ipm", "x420.ipm", + FT_NONE, BASE_NONE, NULL, 0, + "InformationObject/ipm", HFILL }}, + { &hf_x420_ipn, + { "ipn", "x420.ipn", + FT_NONE, BASE_NONE, NULL, 0, + "InformationObject/ipn", HFILL }}, + { &hf_x420_heading, + { "heading", "x420.heading", + FT_NONE, BASE_NONE, NULL, 0, + "IPM/heading", HFILL }}, + { &hf_x420_body, + { "body", "x420.body", + FT_UINT32, BASE_DEC, NULL, 0, + "IPM/body", HFILL }}, + { &hf_x420_type, + { "type", "x420.type", + FT_OID, BASE_NONE, NULL, 0, + "IPMSExtension/type", HFILL }}, + { &hf_x420_value, + { "value", "x420.value", + FT_NONE, BASE_NONE, NULL, 0, + "IPMSExtension/value", HFILL }}, + { &hf_x420_this_IPM, + { "this-IPM", "x420.this_IPM", + FT_NONE, BASE_NONE, NULL, 0, + "", HFILL }}, + { &hf_x420_originator, + { "originator", "x420.originator", + FT_NONE, BASE_NONE, NULL, 0, + "Heading/originator", HFILL }}, + { &hf_x420_authorizing_users, + { "authorizing-users", "x420.authorizing_users", + FT_UINT32, BASE_DEC, NULL, 0, + "Heading/authorizing-users", HFILL }}, + { &hf_x420_primary_recipients, + { "primary-recipients", "x420.primary_recipients", + FT_UINT32, BASE_DEC, NULL, 0, + "Heading/primary-recipients", HFILL }}, + { &hf_x420_copy_recipients, + { "copy-recipients", "x420.copy_recipients", + FT_UINT32, BASE_DEC, NULL, 0, + "Heading/copy-recipients", HFILL }}, + { &hf_x420_blind_copy_recipients, + { "blind-copy-recipients", "x420.blind_copy_recipients", + FT_UINT32, BASE_DEC, NULL, 0, + "Heading/blind-copy-recipients", HFILL }}, + { &hf_x420_replied_to_IPM, + { "replied-to-IPM", "x420.replied_to_IPM", + FT_NONE, BASE_NONE, NULL, 0, + "Heading/replied-to-IPM", HFILL }}, + { &hf_x420_obsoleted_IPMs, + { "obsoleted-IPMs", "x420.obsoleted_IPMs", + FT_UINT32, BASE_DEC, NULL, 0, + "Heading/obsoleted-IPMs", HFILL }}, + { &hf_x420_related_IPMs, + { "related-IPMs", "x420.related_IPMs", + FT_UINT32, BASE_DEC, NULL, 0, + "Heading/related-IPMs", HFILL }}, + { &hf_x420_subject, + { "subject", "x420.subject", + FT_STRING, BASE_NONE, NULL, 0, + "Heading/subject", HFILL }}, + { &hf_x420_expiry_time, + { "expiry-time", "x420.expiry_time", + FT_UINT32, BASE_DEC, VALS(x509af_Time_vals), 0, + "Heading/expiry-time", HFILL }}, + { &hf_x420_reply_time, + { "reply-time", "x420.reply_time", + FT_UINT32, BASE_DEC, VALS(x509af_Time_vals), 0, + "Heading/reply-time", HFILL }}, + { &hf_x420_reply_recipients, + { "reply-recipients", "x420.reply_recipients", + FT_UINT32, BASE_DEC, NULL, 0, + "Heading/reply-recipients", HFILL }}, + { &hf_x420_importance, + { "importance", "x420.importance", + FT_UINT32, BASE_DEC, VALS(x420_ImportanceField_vals), 0, + "Heading/importance", HFILL }}, + { &hf_x420_sensitivity, + { "sensitivity", "x420.sensitivity", + FT_UINT32, BASE_DEC, VALS(x420_SensitivityField_vals), 0, + "Heading/sensitivity", HFILL }}, + { &hf_x420_auto_forwarded, + { "auto-forwarded", "x420.auto_forwarded", + FT_BOOLEAN, 8, NULL, 0, + "Heading/auto-forwarded", HFILL }}, + { &hf_x420_extensions, + { "extensions", "x420.extensions", + FT_UINT32, BASE_DEC, NULL, 0, + "Heading/extensions", HFILL }}, + { &hf_x420_user, + { "user", "x420.user", + FT_NONE, BASE_NONE, NULL, 0, + "IPMIdentifier/user", HFILL }}, + { &hf_x420_user_relative_identifier, + { "user-relative-identifier", "x420.user_relative_identifier", + FT_STRING, BASE_NONE, NULL, 0, + "IPMIdentifier/user-relative-identifier", HFILL }}, + { &hf_x420_recipient, { "recipient", "x420.recipient", FT_NONE, BASE_NONE, NULL, 0, "RecipientSpecifier/recipient", HFILL }}, @@ -2214,7 +3297,7 @@ void proto_register_x420(void) { { "videotex", "x420.videotex", FT_NONE, BASE_NONE, NULL, 0, "BodyPart/videotex", HFILL }}, - { &hf_x420_encrypted, + { &hf_x420_encrypted_bp, { "encrypted", "x420.encrypted", FT_NONE, BASE_NONE, NULL, 0, "BodyPart/encrypted", HFILL }}, @@ -2278,14 +3361,14 @@ void proto_register_x420(void) { { "Item", "x420.G3FacsimileData_item", FT_BYTES, BASE_HEX, NULL, 0, "G3FacsimileData/_item", HFILL }}, - { &hf_x420_G4Class1BodyPart_item, - { "Item", "x420.G4Class1BodyPart_item", + { &hf_x420_G4Class1Data_item, + { "Item", "x420.G4Class1Data_item", FT_NONE, BASE_NONE, NULL, 0, - "G4Class1BodyPart/_item", HFILL }}, - { &hf_x420_MixedModeBodyPart_item, - { "Item", "x420.MixedModeBodyPart_item", + "G4Class1Data/_item", HFILL }}, + { &hf_x420_MixedModeData_item, + { "Item", "x420.MixedModeData_item", FT_NONE, BASE_NONE, NULL, 0, - "MixedModeBodyPart/_item", HFILL }}, + "MixedModeData/_item", HFILL }}, { &hf_x420_teletex_parameters, { "parameters", "x420.parameters", FT_NONE, BASE_NONE, NULL, 0, @@ -2329,11 +3412,11 @@ void proto_register_x420(void) { { &hf_x420_algorithm_identifier, { "algorithm-identifier", "x420.algorithm_identifier", FT_NONE, BASE_NONE, NULL, 0, - "EncryptedParameters/algorithm-identifier", HFILL }}, + "", HFILL }}, { &hf_x420_originator_certificates, { "originator-certificates", "x420.originator_certificates", FT_UINT32, BASE_DEC, NULL, 0, - "EncryptedParameters/originator-certificates", HFILL }}, + "", HFILL }}, { &hf_x420_message_parameters, { "parameters", "x420.parameters", FT_NONE, BASE_NONE, NULL, 0, @@ -2345,11 +3428,11 @@ void proto_register_x420(void) { { &hf_x420_delivery_time, { "delivery-time", "x420.delivery_time", FT_STRING, BASE_NONE, NULL, 0, - "MessageParameters/delivery-time", HFILL }}, + "", HFILL }}, { &hf_x420_delivery_envelope, { "delivery-envelope", "x420.delivery_envelope", FT_NONE, BASE_NONE, NULL, 0, - "MessageParameters/delivery-envelope", HFILL }}, + "", HFILL }}, { &hf_x420_subject_ipm, { "subject-ipm", "x420.subject_ipm", FT_NONE, BASE_NONE, NULL, 0, @@ -2472,7 +3555,7 @@ void proto_register_x420(void) { "BodyPartReference/stored-content", HFILL }}, { &hf_x420_submitted_body_part, { "submitted-body-part", "x420.submitted_body_part", - FT_UINT32, BASE_DEC, NULL, 0, + FT_INT32, BASE_DEC, NULL, 0, "BodyPartReference/submitted-body-part", HFILL }}, { &hf_x420_stored_body_part, { "stored-body-part", "x420.stored_body_part", @@ -2484,8 +3567,160 @@ void proto_register_x420(void) { "BodyPartReference/stored-body-part/message-entry", HFILL }}, { &hf_x420_body_part_number, { "body-part-number", "x420.body_part_number", + FT_INT32, BASE_DEC, NULL, 0, + "", HFILL }}, + { &hf_x420_Languages_item, + { "Item", "x420.Languages_item", + FT_STRING, BASE_NONE, NULL, 0, + "Languages/_item", HFILL }}, + { &hf_x420_algorithmIdentifier, + { "algorithmIdentifier", "x420.algorithmIdentifier", + FT_NONE, BASE_NONE, NULL, 0, + "Signature/algorithmIdentifier", HFILL }}, + { &hf_x420_encrypted, + { "encrypted", "x420.encrypted", + FT_BYTES, BASE_HEX, NULL, 0, + "", HFILL }}, + { &hf_x420_BodyPartSignatures_item, + { "Item", "x420.BodyPartSignatures_item", + FT_NONE, BASE_NONE, NULL, 0, + "BodyPartSignatures/_item", HFILL }}, + { &hf_x420_body_part_signature, + { "body-part-signature", "x420.body_part_signature", + FT_NONE, BASE_NONE, NULL, 0, + "BodyPartSignatures/_item/body-part-signature", HFILL }}, + { &hf_x420_originator_certificate_selector, + { "originator-certificate-selector", "x420.originator_certificate_selector", + FT_NONE, BASE_NONE, NULL, 0, + "BodyPartSignatures/_item/originator-certificate-selector", HFILL }}, + { &hf_x420_content_security_label, + { "content-security-label", "x420.content_security_label", + FT_NONE, BASE_NONE, NULL, 0, + "IPMSecurityLabel/content-security-label", HFILL }}, + { &hf_x420_heading_security_label, + { "heading-security-label", "x420.heading_security_label", + FT_NONE, BASE_NONE, NULL, 0, + "IPMSecurityLabel/heading-security-label", HFILL }}, + { &hf_x420_body_part_security_labels, + { "body-part-security-labels", "x420.body_part_security_labels", + FT_UINT32, BASE_DEC, NULL, 0, + "IPMSecurityLabel/body-part-security-labels", HFILL }}, + { &hf_x420_body_part_security_labels_item, + { "Item", "x420.body_part_security_labels_item", + FT_UINT32, BASE_DEC, VALS(x420_BodyPartSecurityLabel_vals), 0, + "IPMSecurityLabel/body-part-security-labels/_item", HFILL }}, + { &hf_x420_body_part_unlabelled, + { "body-part-unlabelled", "x420.body_part_unlabelled", + FT_NONE, BASE_NONE, NULL, 0, + "BodyPartSecurityLabel/body-part-unlabelled", HFILL }}, + { &hf_x420_body_part_security_label, + { "body-part-security-label", "x420.body_part_security_label", + FT_NONE, BASE_NONE, NULL, 0, + "BodyPartSecurityLabel/body-part-security-label", HFILL }}, + { &hf_x420_CirculationList_item, + { "Item", "x420.CirculationList_item", + FT_NONE, BASE_NONE, NULL, 0, + "CirculationList/_item", HFILL }}, + { &hf_x420_circulation_recipient, + { "circulation-recipient", "x420.circulation_recipient", + FT_NONE, BASE_NONE, NULL, 0, + "CirculationMember/circulation-recipient", HFILL }}, + { &hf_x420_checked, + { "checked", "x420.checked", + FT_UINT32, BASE_DEC, VALS(x420_Checkmark_vals), 0, + "CirculationMember/checked", HFILL }}, + { &hf_x420_simple, + { "simple", "x420.simple", + FT_NONE, BASE_NONE, NULL, 0, + "Checkmark/simple", HFILL }}, + { &hf_x420_timestamped, + { "timestamped", "x420.timestamped", + FT_STRING, BASE_NONE, NULL, 0, + "Checkmark/timestamped", HFILL }}, + { &hf_x420_signed, + { "signed", "x420.signed", + FT_NONE, BASE_NONE, NULL, 0, + "Checkmark/signed", HFILL }}, + { &hf_x420_circulation_signature_algorithm_identifier, + { "algorithm-identifier", "x420.algorithm_identifier", + FT_NONE, BASE_NONE, NULL, 0, + "CirculationSignatureData/algorithm-identifier", HFILL }}, + { &hf_x420_timestamp, + { "timestamp", "x420.timestamp", + FT_STRING, BASE_NONE, NULL, 0, + "CirculationSignatureData/timestamp", HFILL }}, + { &hf_x420_circulation_signature_data, + { "circulation-signature-data", "x420.circulation_signature_data", + FT_NONE, BASE_NONE, NULL, 0, + "CirculationSignature/circulation-signature-data", HFILL }}, + { &hf_x420_DistributionCodes_item, + { "Item", "x420.DistributionCodes_item", + FT_NONE, BASE_NONE, NULL, 0, + "DistributionCodes/_item", HFILL }}, + { &hf_x420_oid_code, + { "oid-code", "x420.oid_code", + FT_OID, BASE_NONE, NULL, 0, + "DistributionCode/oid-code", HFILL }}, + { &hf_x420_alphanumeric_code, + { "alphanumeric-code", "x420.alphanumeric_code", + FT_NONE, BASE_NONE, NULL, 0, + "DistributionCode/alphanumeric-code", HFILL }}, + { &hf_x420_or_descriptor, + { "or-descriptor", "x420.or_descriptor", + FT_NONE, BASE_NONE, NULL, 0, + "DistributionCode/or-descriptor", HFILL }}, + { &hf_x420_InformationCategories_item, + { "Item", "x420.InformationCategories_item", + FT_NONE, BASE_NONE, NULL, 0, + "InformationCategories/_item", HFILL }}, + { &hf_x420_reference, + { "reference", "x420.reference", + FT_OID, BASE_NONE, NULL, 0, + "InformationCategory/reference", HFILL }}, + { &hf_x420_description, + { "description", "x420.description", + FT_NONE, BASE_NONE, NULL, 0, + "InformationCategory/description", HFILL }}, + { &hf_x420_ManualHandlingInstructions_item, + { "Item", "x420.ManualHandlingInstructions_item", + FT_NONE, BASE_NONE, NULL, 0, + "ManualHandlingInstructions/_item", HFILL }}, + { &hf_x420_GeneralTextParameters_item, + { "Item", "x420.GeneralTextParameters_item", FT_UINT32, BASE_DEC, NULL, 0, - "BodyPartReference/stored-body-part/body-part-number", HFILL }}, + "GeneralTextParameters/_item", HFILL }}, + { &hf_x420_voice_message_duration, + { "voice-message-duration", "x420.voice_message_duration", + FT_INT32, BASE_DEC, NULL, 0, + "VoiceParameters/voice-message-duration", HFILL }}, + { &hf_x420_voice_encoding_type, + { "voice-encoding-type", "x420.voice_encoding_type", + FT_OID, BASE_NONE, NULL, 0, + "VoiceParameters/voice-encoding-type", HFILL }}, + { &hf_x420_supplementary_information, + { "supplementary-information", "x420.supplementary_information", + FT_STRING, BASE_NONE, NULL, 0, + "VoiceParameters/supplementary-information", HFILL }}, + { &hf_x420_mts_identifier, + { "mts-identifier", "x420.mts_identifier", + FT_NONE, BASE_NONE, NULL, 0, + "ForwardedContentParameters/mts-identifier", HFILL }}, + { &hf_x420_submission_proof, + { "submission-proof", "x420.submission_proof", + FT_NONE, BASE_NONE, NULL, 0, + "ForwardedContentParameters/submission-proof", HFILL }}, + { &hf_x420_proof_of_submission, + { "proof-of-submission", "x420.proof_of_submission", + FT_NONE, BASE_NONE, NULL, 0, + "SubmissionProof/proof-of-submission", HFILL }}, + { &hf_x420_originating_MTA_certificate, + { "originating-MTA-certificate", "x420.originating_MTA_certificate", + FT_NONE, BASE_NONE, NULL, 0, + "SubmissionProof/originating-MTA-certificate", HFILL }}, + { &hf_x420_message_submission_envelope, + { "message-submission-envelope", "x420.message_submission_envelope", + FT_NONE, BASE_NONE, NULL, 0, + "SubmissionProof/message-submission-envelope", HFILL }}, { &hf_x420_NotificationRequests_rn, { "rn", "x420.rn", FT_BOOLEAN, 8, NULL, 0x80, @@ -2508,7 +3743,7 @@ void proto_register_x420(void) { "", HFILL }}, /*--- End of included file: packet-x420-hfarr.c ---*/ - +#line 124 "packet-x420-template.c" }; /* List of subtrees */ @@ -2516,7 +3751,7 @@ void proto_register_x420(void) { &ett_x420, /*--- Included file: packet-x420-ettarr.c ---*/ - +#line 1 "packet-x420-ettarr.c" &ett_x420_InformationObject, &ett_x420_IPM, &ett_x420_IPMSExtension, @@ -2542,8 +3777,8 @@ void proto_register_x420(void) { &ett_x420_G3FacsimileBodyPart, &ett_x420_G3FacsimileParameters, &ett_x420_G3FacsimileData, - &ett_x420_G4Class1BodyPart, - &ett_x420_MixedModeBodyPart, + &ett_x420_G4Class1Data, + &ett_x420_MixedModeData, &ett_x420_TeletexBodyPart, &ett_x420_TeletexParameters, &ett_x420_TeletexData, @@ -2567,9 +3802,30 @@ void proto_register_x420(void) { &ett_x420_BodyPartReferences, &ett_x420_BodyPartReference, &ett_x420_T_stored_body_part, + &ett_x420_Languages, + &ett_x420_Signature, + &ett_x420_BodyPartSignatures, + &ett_x420_BodyPartSignatures_item, + &ett_x420_IPMSecurityLabel, + &ett_x420_SEQUENCE_OF_BodyPartSecurityLabel, + &ett_x420_BodyPartSecurityLabel, + &ett_x420_CirculationList, + &ett_x420_CirculationMember, + &ett_x420_Checkmark, + &ett_x420_CirculationSignatureData, + &ett_x420_CirculationSignature, + &ett_x420_DistributionCodes, + &ett_x420_DistributionCode, + &ett_x420_InformationCategories, + &ett_x420_InformationCategory, + &ett_x420_ManualHandlingInstructions, + &ett_x420_GeneralTextParameters, + &ett_x420_VoiceParameters, + &ett_x420_ForwardedContentParameters, + &ett_x420_SubmissionProof, /*--- End of included file: packet-x420-ettarr.c ---*/ - +#line 130 "packet-x420-template.c" }; /* Register protocol */ @@ -2587,15 +3843,57 @@ void proto_reg_handoff_x420(void) { /*--- Included file: packet-x420-dis-tab.c ---*/ - +#line 1 "packet-x420-dis-tab.c" register_ber_oid_dissector("1.2.826.0.1004.10.1.1", dissect_OriginatingUA_PDU, proto_x420, "nexor-originating-ua"); register_ber_oid_dissector("2.6.1.19.0", dissect_AbsenceAdvice_PDU, proto_x420, "id-on-absence-advice"); register_ber_oid_dissector("2.6.1.19.1", dissect_ChangeOfAddressAdvice_PDU, proto_x420, "id-on-change-of-address-advice"); register_ber_oid_dissector("2.6.1.17.2", dissect_IPMAssemblyInstructions_PDU, proto_x420, "id-mst-assembly-instructions"); + register_ber_oid_dissector("2.6.1.5.0", dissect_IncompleteCopy_PDU, proto_x420, "id-hex-languages"); + register_ber_oid_dissector("2.6.1.5.1", dissect_Languages_PDU, proto_x420, "id-hex-languages"); + register_ber_oid_dissector("2.6.1.5.2", dissect_AutoSubmitted_PDU, proto_x420, "id-hex-auto-submitted"); + register_ber_oid_dissector("2.6.1.5.3", dissect_BodyPartSignatures_PDU, proto_x420, "id-hex-body-part-signatures"); + register_ber_oid_dissector("2.6.1.5.4", dissect_IPMSecurityLabel_PDU, proto_x420, "id-hex-ipm-security-label"); + register_ber_oid_dissector("2.6.1.5.5", dissect_AuthorizationTime_PDU, proto_x420, "id-hex-authorization-time"); + register_ber_oid_dissector("2.6.1.5.6", dissect_CirculationList_PDU, proto_x420, "id-hex-circulation-list-recipients"); + register_ber_oid_dissector("2.6.1.20.0", dissect_CirculationListIndicator_PDU, proto_x420, "id-rex-circulation-list-indicator"); + register_ber_oid_dissector("2.6.1.5.7", dissect_DistributionCodes_PDU, proto_x420, "id-hex-distribution-codes"); + register_ber_oid_dissector("2.6.1.5.8", dissect_ExtendedSubject_PDU, proto_x420, "id-hex-extended-subject"); + register_ber_oid_dissector("2.6.1.5.9", dissect_InformationCategories_PDU, proto_x420, "id-hex-information-categories"); + register_ber_oid_dissector("2.6.1.5.10", dissect_ManualHandlingInstructions_PDU, proto_x420, "id-hex-manual-handling-instructions"); + register_ber_oid_dissector("2.6.1.5.11", dissect_OriginatorsReference_PDU, proto_x420, "id-hex-originators-reference"); + register_ber_oid_dissector("2.6.1.5.12", dissect_PrecedencePolicyIdentifier_PDU, proto_x420, "id-hex-precedence-policy-id"); + register_ber_oid_dissector("2.6.1.20.1", dissect_Precedence_PDU, proto_x420, "id-rex-precedence"); + register_ber_oid_dissector("2.6.1.4.0", dissect_IA5TextData_PDU, proto_x420, "id-et-ia5-text"); + register_ber_oid_dissector("2.6.1.11.0", dissect_IA5TextParameters_PDU, proto_x420, "id-ep-ia5-text"); + register_ber_oid_dissector("2.6.1.4.2", dissect_G3FacsimileData_PDU, proto_x420, "id-et-g3-facsimile"); + register_ber_oid_dissector("2.6.1.11.2", dissect_G3FacsimileParameters_PDU, proto_x420, "id-ep-g3-facsimile"); + register_ber_oid_dissector("2.6.1.4.3", dissect_G4Class1Data_PDU, proto_x420, "id-et-g4-class1"); + register_ber_oid_dissector("2.6.1.4.4", dissect_TeletexData_PDU, proto_x420, "id-et-teletex"); + register_ber_oid_dissector("2.6.1.11.4", dissect_TeletexParameters_PDU, proto_x420, "id-ep-teletex"); + register_ber_oid_dissector("2.6.1.4.5", dissect_VideotexData_PDU, proto_x420, "id-et-videotex"); + register_ber_oid_dissector("2.6.1.11.5", dissect_VideotexParameters_PDU, proto_x420, "id-ep-videotex"); + register_ber_oid_dissector("2.6.1.4.6", dissect_EncryptedData_PDU, proto_x420, "id-et-encrypted"); + register_ber_oid_dissector("2.6.1.11.6", dissect_EncryptedParameters_PDU, proto_x420, "id-ep-encrypted"); + register_ber_oid_dissector("2.6.1.4.7", dissect_MessageData_PDU, proto_x420, "id-et-message"); + register_ber_oid_dissector("2.6.1.11.7", dissect_MessageParameters_PDU, proto_x420, "id-ep-message"); + register_ber_oid_dissector("2.6.1.4.8", dissect_MixedModeData_PDU, proto_x420, "id-et-mixed-mode"); + register_ber_oid_dissector("2.6.1.4.9", dissect_BilaterallyDefinedBodyPart_PDU, proto_x420, "id-et-bilaterally-defined"); + register_ber_oid_dissector("2.6.1.11.11", dissect_GeneralTextParameters_PDU, proto_x420, "id-ep-general-text"); + register_ber_oid_dissector("2.6.1.4.11", dissect_GeneralTextData_PDU, proto_x420, "id-et-general-text"); + register_ber_oid_dissector("2.6.1.11.15", dissect_MessageParameters_PDU, proto_x420, "id-ep-notification"); + register_ber_oid_dissector("2.6.1.4.15", dissect_IPN_PDU, proto_x420, "id-et-notification"); + register_ber_oid_dissector("2.6.1.11.16", dissect_VoiceParameters_PDU, proto_x420, "id-ep-voice"); + register_ber_oid_dissector("2.6.1.4.16", dissect_VoiceData_PDU, proto_x420, "id-et-voice"); + register_ber_oid_dissector("2.6.1.11.17.2.6.1.10.1", dissect_ForwardedContentParameters_PDU, proto_x420, "id-ep-content-p22"); + register_ber_oid_dissector("2.6.1.4.17.2.6.1.10.1", dissect_InformationObject_PDU, proto_x420, "id-et-content-p22"); + register_ber_oid_dissector("2.6.1.11.17.2.6.1.10.0", dissect_ForwardedContentParameters_PDU, proto_x420, "id-ep-content-p2"); + register_ber_oid_dissector("2.6.1.4.17.2.6.1.10.0", dissect_InformationObject_PDU, proto_x420, "id-et-content-p2"); + register_ber_oid_dissector("2.6.1.11.17.1.3.26.0.4406.0.4.1", dissect_ForwardedContentParameters_PDU, proto_x420, "id-ep-content-p772"); + register_ber_oid_dissector("2.6.1.4.17.1.3.26.0.4406.0.4.1", dissect_InformationObject_PDU, proto_x420, "id-et-content-p772"); /*--- End of included file: packet-x420-dis-tab.c ---*/ - +#line 146 "packet-x420-template.c" register_ber_oid_dissector("2.6.1.10.0", dissect_x420, proto_x420, "InterPersonal Message (1984)"); register_ber_oid_dissector("2.6.1.10.1", dissect_x420, proto_x420, "InterPersonal Message (1988)"); diff --git a/epan/dissectors/packet-x420.h b/epan/dissectors/packet-x420.h index df407149af..7f3e1a9711 100644 --- a/epan/dissectors/packet-x420.h +++ b/epan/dissectors/packet-x420.h @@ -5,6 +5,7 @@ /* Input file: packet-x420-template.h */ +#line 1 "packet-x420-template.h" /* packet-x420.h * Routines for X.420 (X.400 Message Transfer) packet dissection * Graeme Lunt 2005 @@ -35,13 +36,13 @@ /*--- Included file: packet-x420-exp.h ---*/ - +#line 1 "packet-x420-exp.h" extern const value_string x420_InformationObject_vals[]; int dissect_x420_InformationObject(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); int dissect_x420_ORDescriptor(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); int dissect_x420_ExtensionsField(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index); /*--- End of included file: packet-x420-exp.h ---*/ - +#line 30 "packet-x420-template.h" #endif /* PACKET_X420_H */ -- cgit v1.2.3