From Grame Lunt:
authoretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>
Mon, 5 Dec 2005 23:00:03 +0000 (23:00 +0000)
committeretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>
Mon, 5 Dec 2005 23:00:03 +0000 (23:00 +0000)
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

16 files changed:
asn1/Makefile.nmake [new file with mode: 0644]
asn1/cms/cms-exp.cnf
asn1/cms/cms.cnf
asn1/x411/x411-exp.cnf
asn1/x411/x411.asn
asn1/x411/x411.cnf
asn1/x420/Makefile.nmake
asn1/x420/packet-x420-template.c
asn1/x420/x420.asn
asn1/x420/x420.cnf
epan/dissectors/packet-cms.c
epan/dissectors/packet-cms.h
epan/dissectors/packet-x411.c
epan/dissectors/packet-x411.h
epan/dissectors/packet-x420.c
epan/dissectors/packet-x420.h

diff --git a/asn1/Makefile.nmake b/asn1/Makefile.nmake
new file mode 100644 (file)
index 0000000..3daa479
--- /dev/null
@@ -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..
index 4cb6434014792213da918d4b32fbe8139aec4f07..a721605a36ce672d818a812e1652a7619605a161 100644 (file)
@@ -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
index 95e29b91c1e15e6812766fd754d13caca38e7cca..da70832aee45fbbc45af31ede46e3811ec39101e 100644 (file)
@@ -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
index 7e11a6392403e67f35a02939b5ea17c46ecd2fbb..20032c013e3c38085b2a8c771fb328fd85bdd627 100644 (file)
@@ -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
index a33d32bf139cbe4e9833e5ad819ebcb6f55e369d..b4c642d48c0070c3bf70554e484b3ff0abc84c01 100644 (file)
@@ -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,
index 6fc533a9458030d8bfba03f1403a81c8fba319b0..5e87310b243318dffec1acbb12885708e87d708f 100644 (file)
@@ -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;
index 7b8e686be15193bc9054e374dddde0dd9936513c..787c3c3ac3e42c1d13e8f689e6cbddd0fb0c9a4f 100644 (file)
@@ -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
 
index f0be929410aff05a3d9a807223607dc59a393703..d1ca50cbb155eadc9e267142e1c79cb383ad6a87 100644 (file)
@@ -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 */
index 70e0d93052eaaa69df8318765a330afcb6c4c257..8a58ecd4fa5a510fcc86247bb0b3a34e5b7bae97 100644 (file)
@@ -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
 
+
index 1ea117d1dc2555669ba13728170ce920749820c0..84d23123fd7bca1b4df81a7329792d813908a54d 100644 (file)
@@ -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 */
 
+
index 563e62dc0bdadbd90a9af8bc02ac30378c9affc6..80d0d6eb8c4c589f4a468d5bb09440ec715c1cd7 100644 (file)
@@ -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"
 }
 
index d6a776050c401ecfaaa3fd23f6f6fd297c8198e8..f6d28fdf81a8cd681408c0c109c786a4606a5848 100644 (file)
@@ -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 */
 
index 12bf47b5bd579e14086b1d4eb977695234f0ab14..1555473499d75a00abf1d0483e64152f3cf3fb8a 100644 (file)
@@ -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 */
 
index 00fb366a9609cf4c6a04f48f29fa1b571cb05c08..632a6358e4a79b52b1137a7f913a99f04c3497b3 100644 (file)
@@ -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
 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 */
index d786dbe90fb14197f681cce9d02e61176cec913a..f17746c8fa94a669afc65cbd2124d9fedac7c6eb 100644 (file)
@@ -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)");
index df407149af97f50190c345a55f053ca99d148b88..7f3e1a97116be075223760cc346f7e23127f41a8 100644 (file)
@@ -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
 
 
 /*--- 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 */