7e189ea79b88687bee339f07a61530e9df44853a
[obnox/wireshark/wip.git] / epan / dissectors / packet-x420.c
1 /* Do not modify this file.                                                   */
2 /* It is created automatically by the ASN.1 to Wireshark dissector compiler   */
3 /* packet-x420.c                                                              */
4 /* ../../tools/asn2wrs.py -b -e -p x420 -c x420.cnf -s packet-x420-template IPMSInformationObjects.asn IPMSHeadingExtensions.asn IPMSExtendedBodyPartTypes2.asn IPMSFileTransferBodyPartType.asn IPMSExtendedVoiceBodyPartType.asn IPMSForwardedContentBodyPartType.asn IPMSMessageStoreAttributes.asn IPMSSecurityExtensions.asn IPMSObjectIdentifiers.asn */
5
6 /* Input file: packet-x420-template.c */
7
8 #line 1 "packet-x420-template.c"
9 /* packet-x420.c
10  * Routines for X.420 (X.400 Message Transfer)  packet dissection
11  * Graeme Lunt 2005
12  *
13  * $Id$
14  *
15  * Wireshark - Network traffic analyzer
16  * By Gerald Combs <gerald@wireshark.org>
17  * Copyright 1998 Gerald Combs
18  *
19  * This program is free software; you can redistribute it and/or
20  * modify it under the terms of the GNU General Public License
21  * as published by the Free Software Foundation; either version 2
22  * of the License, or (at your option) any later version.
23  *
24  * This program is distributed in the hope that it will be useful,
25  * but WITHOUT ANY WARRANTY; without even the implied warranty of
26  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
27  * GNU General Public License for more details.
28  *
29  * You should have received a copy of the GNU General Public License
30  * along with this program; if not, write to the Free Software
31  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
32  */
33
34 #ifdef HAVE_CONFIG_H
35 # include "config.h"
36 #endif
37
38 #include <glib.h>
39 #include <epan/packet.h>
40 #include <epan/conversation.h>
41 #include <epan/oids.h>
42 #include <epan/asn1.h>
43
44 #include <stdio.h>
45 #include <string.h>
46
47 #include "packet-ber.h"
48 #include "packet-acse.h"
49 #include "packet-ros.h"
50
51 #include "packet-x509af.h"
52 #include "packet-x509ce.h"
53 #include "packet-ftam.h"
54 #include "packet-x411.h"
55 #include "packet-p7.h"
56
57 #include "packet-x420.h"
58
59 #define PNAME  "X.420 Information Object"
60 #define PSNAME "X420"
61 #define PFNAME "x420"
62
63 /* Initialize the protocol and registered fields */
64 int proto_x420 = -1;
65
66 static const char *object_identifier_id; /* content type identifier */
67
68 static const value_string charsetreg_vals [] = {
69   { 1, "C0: (ISO/IEC 6429)"},
70   { 6, "G0: ASCII (ISO/IEC 646)"},
71   { 77, "C1: (ISO/IEC 6429)"},
72   { 100, "Gn: Latin Alphabet No.1, Western European Supplementary Set (GR area of ISO-8859-1)"},
73   { 101, "Gn: Latin Alphabet No.2, Central EuropeanSupplementary Set (GR area of ISO-8859-2)"},
74   { 104, "C0: (ISO/IEC 4873)"},
75   { 105, "C1: (ISO/IEC 4873)"},
76   { 106, "C0: Teletex (CCITT T.61)"},
77   { 107, "C1: Teletex (CCITT T.61)"},
78   { 109, "Gn: Latin Alphabet No.3, Southern European Supplementary Set (GR area of ISO-8859-3)"},
79   { 110, "Gn: Latin Alphabet No.4, Baltic Supplementary Set (GR area of ISO-8859-4)"},
80   { 126, "Gn: Greek Supplementary Set (GR area of ISO-8859-7)"},
81   { 127, "Gn: Arabic Supplementary Set (GR area of ISO-8859-6)"},
82   { 138, "Gn: Hebrew Supplementary Set (GR area of ISO-8859-8)"},
83   { 144, "Gn: Cyrillic Supplementary Set (GR area of ISO-8859-5)"},
84   { 148, "Gn: Latin Alphabet No.5, Cyrillic Supplementary Set (GR area of ISO-8859-9)"},
85   { 154, "Gn: Supplementary Set for Latin Alphabets No.1 or No.5, and No.2"},
86   { 157, "Gn: Latin Alphabet No.6, Arabic Supplementary Set (GR area of ISO-8859-10)"},
87   { 158, "Gn: Supplementary Set for Sami (Lappish) to complement Latin Alphabet No.6 (from Annex A  of ISO-8859-10)"},
88   { 166, "Gn: Thai Supplementary Set (GR area of ISO-8859-11)"},
89   { 179, "Gn: Latin Alphabet No.7, Baltic Rim Supplementary Set (GR area of ISO-8859-13)"},
90   { 182, "Gn: Welsh Variant of Latin Alphabet No.1, Supplementary Set (GR area of ISO-8859-1)"},
91   { 197, "Gn: Supplementary Set for Sami to complement Latin Alphabet No.6 (from Annex A  of ISO-8859-10)"},
92   { 199, "Gn: Latin Alphabet No.8, Celtic Supplementary Set (GR area of ISO-8859-14)"},
93   { 203, "Gn: Latin Alphabet No.9, European Rim Supplementary Set (GR area of ISO-8859-15)"},
94   { 0, NULL}
95 };
96
97
98 /*--- Included file: packet-x420-hf.c ---*/
99 #line 1 "packet-x420-hf.c"
100 static int hf_x420_InformationObject_PDU = -1;    /* InformationObject */
101 static int hf_x420_Heading_PDU = -1;              /* Heading */
102 static int hf_x420_ORDescriptor_PDU = -1;         /* ORDescriptor */
103 static int hf_x420_ThisIPMField_PDU = -1;         /* ThisIPMField */
104 static int hf_x420_OriginatorField_PDU = -1;      /* OriginatorField */
105 static int hf_x420_AuthorizingUsersSubfield_PDU = -1;  /* AuthorizingUsersSubfield */
106 static int hf_x420_PrimaryRecipientsSubfield_PDU = -1;  /* PrimaryRecipientsSubfield */
107 static int hf_x420_CopyRecipientsSubfield_PDU = -1;  /* CopyRecipientsSubfield */
108 static int hf_x420_BlindCopyRecipientsSubfield_PDU = -1;  /* BlindCopyRecipientsSubfield */
109 static int hf_x420_RepliedToIPMField_PDU = -1;    /* RepliedToIPMField */
110 static int hf_x420_ObsoletedIPMsSubfield_PDU = -1;  /* ObsoletedIPMsSubfield */
111 static int hf_x420_RelatedIPMsSubfield_PDU = -1;  /* RelatedIPMsSubfield */
112 static int hf_x420_SubjectField_PDU = -1;         /* SubjectField */
113 static int hf_x420_ExpiryTimeField_PDU = -1;      /* ExpiryTimeField */
114 static int hf_x420_ReplyTimeField_PDU = -1;       /* ReplyTimeField */
115 static int hf_x420_ReplyRecipientsSubfield_PDU = -1;  /* ReplyRecipientsSubfield */
116 static int hf_x420_ImportanceField_PDU = -1;      /* ImportanceField */
117 static int hf_x420_SensitivityField_PDU = -1;     /* SensitivityField */
118 static int hf_x420_AutoForwardedField_PDU = -1;   /* AutoForwardedField */
119 static int hf_x420_Body_PDU = -1;                 /* Body */
120 static int hf_x420_IA5TextParameters_PDU = -1;    /* IA5TextParameters */
121 static int hf_x420_IA5TextData_PDU = -1;          /* IA5TextData */
122 static int hf_x420_G3FacsimileParameters_PDU = -1;  /* G3FacsimileParameters */
123 static int hf_x420_G3FacsimileData_PDU = -1;      /* G3FacsimileData */
124 static int hf_x420_G4Class1BodyPart_PDU = -1;     /* G4Class1BodyPart */
125 static int hf_x420_MixedModeBodyPart_PDU = -1;    /* MixedModeBodyPart */
126 static int hf_x420_TeletexParameters_PDU = -1;    /* TeletexParameters */
127 static int hf_x420_TeletexData_PDU = -1;          /* TeletexData */
128 static int hf_x420_VideotexParameters_PDU = -1;   /* VideotexParameters */
129 static int hf_x420_VideotexData_PDU = -1;         /* VideotexData */
130 static int hf_x420_EncryptedParameters_PDU = -1;  /* EncryptedParameters */
131 static int hf_x420_EncryptedData_PDU = -1;        /* EncryptedData */
132 static int hf_x420_MessageParameters_PDU = -1;    /* MessageParameters */
133 static int hf_x420_MessageData_PDU = -1;          /* MessageData */
134 static int hf_x420_BilaterallyDefinedBodyPart_PDU = -1;  /* BilaterallyDefinedBodyPart */
135 static int hf_x420_IPN_PDU = -1;                  /* IPN */
136 static int hf_x420_AbsenceAdvice_PDU = -1;        /* AbsenceAdvice */
137 static int hf_x420_ChangeOfAddressAdvice_PDU = -1;  /* ChangeOfAddressAdvice */
138 static int hf_x420_IPMAssemblyInstructions_PDU = -1;  /* IPMAssemblyInstructions */
139 static int hf_x420_IncompleteCopy_PDU = -1;       /* IncompleteCopy */
140 static int hf_x420_Languages_PDU = -1;            /* Languages */
141 static int hf_x420_Language_PDU = -1;             /* Language */
142 static int hf_x420_AutoSubmitted_PDU = -1;        /* AutoSubmitted */
143 static int hf_x420_BodyPartSignatures_PDU = -1;   /* BodyPartSignatures */
144 static int hf_x420_IPMSecurityLabel_PDU = -1;     /* IPMSecurityLabel */
145 static int hf_x420_BodyPartSecurityLabel_PDU = -1;  /* BodyPartSecurityLabel */
146 static int hf_x420_AuthorizationTime_PDU = -1;    /* AuthorizationTime */
147 static int hf_x420_CirculationList_PDU = -1;      /* CirculationList */
148 static int hf_x420_CirculationMember_PDU = -1;    /* CirculationMember */
149 static int hf_x420_CirculationListIndicator_PDU = -1;  /* CirculationListIndicator */
150 static int hf_x420_DistributionCodes_PDU = -1;    /* DistributionCodes */
151 static int hf_x420_DistributionCode_PDU = -1;     /* DistributionCode */
152 static int hf_x420_ExtendedSubject_PDU = -1;      /* ExtendedSubject */
153 static int hf_x420_InformationCategories_PDU = -1;  /* InformationCategories */
154 static int hf_x420_InformationCategory_PDU = -1;  /* InformationCategory */
155 static int hf_x420_ManualHandlingInstructions_PDU = -1;  /* ManualHandlingInstructions */
156 static int hf_x420_ManualHandlingInstruction_PDU = -1;  /* ManualHandlingInstruction */
157 static int hf_x420_OriginatorsReference_PDU = -1;  /* OriginatorsReference */
158 static int hf_x420_PrecedencePolicyIdentifier_PDU = -1;  /* PrecedencePolicyIdentifier */
159 static int hf_x420_Precedence_PDU = -1;           /* Precedence */
160 static int hf_x420_GeneralTextParameters_PDU = -1;  /* GeneralTextParameters */
161 static int hf_x420_GeneralTextData_PDU = -1;      /* GeneralTextData */
162 static int hf_x420_FileTransferParameters_PDU = -1;  /* FileTransferParameters */
163 static int hf_x420_FileTransferData_PDU = -1;     /* FileTransferData */
164 static int hf_x420_VoiceParameters_PDU = -1;      /* VoiceParameters */
165 static int hf_x420_VoiceData_PDU = -1;            /* VoiceData */
166 static int hf_x420_ForwardedContentParameters_PDU = -1;  /* ForwardedContentParameters */
167 static int hf_x420_IPMEntryType_PDU = -1;         /* IPMEntryType */
168 static int hf_x420_IPMSynopsis_PDU = -1;          /* IPMSynopsis */
169 static int hf_x420_BodyPartDescriptor_PDU = -1;   /* BodyPartDescriptor */
170 static int hf_x420_BodyPartSignatureVerification_PDU = -1;  /* BodyPartSignatureVerification */
171 static int hf_x420_IPMLocation_PDU = -1;          /* IPMLocation */
172 static int hf_x420_DeliveredReplyStatus_PDU = -1;  /* DeliveredReplyStatus */
173 static int hf_x420_CorrelatedDeliveredReplies_PDU = -1;  /* CorrelatedDeliveredReplies */
174 static int hf_x420_DeliveredIPNStatus_PDU = -1;   /* DeliveredIPNStatus */
175 static int hf_x420_CorrelatedDeliveredIPNs_PDU = -1;  /* CorrelatedDeliveredIPNs */
176 static int hf_x420_SubmittedReplyStatus_PDU = -1;  /* SubmittedReplyStatus */
177 static int hf_x420_SubmittedIPNStatus_PDU = -1;   /* SubmittedIPNStatus */
178 static int hf_x420_RecipientCategory_PDU = -1;    /* RecipientCategory */
179 static int hf_x420_RecipientSecurityRequest_PDU = -1;  /* RecipientSecurityRequest */
180 static int hf_x420_IpnSecurityResponse_PDU = -1;  /* IpnSecurityResponse */
181 static int hf_x420_BodyPartTokens_PDU = -1;       /* BodyPartTokens */
182 static int hf_x420_ForwardedContentToken_PDU = -1;  /* ForwardedContentToken */
183 static int hf_x420_ipm = -1;                      /* IPM */
184 static int hf_x420_ipn = -1;                      /* IPN */
185 static int hf_x420_heading = -1;                  /* Heading */
186 static int hf_x420_body = -1;                     /* Body */
187 static int hf_x420_type = -1;                     /* T_type */
188 static int hf_x420_value = -1;                    /* T_value */
189 static int hf_x420_this_IPM = -1;                 /* ThisIPMField */
190 static int hf_x420_originator = -1;               /* OriginatorField */
191 static int hf_x420_authorizing_users = -1;        /* AuthorizingUsersField */
192 static int hf_x420_primary_recipients = -1;       /* PrimaryRecipientsField */
193 static int hf_x420_copy_recipients = -1;          /* CopyRecipientsField */
194 static int hf_x420_blind_copy_recipients = -1;    /* BlindCopyRecipientsField */
195 static int hf_x420_replied_to_IPM = -1;           /* RepliedToIPMField */
196 static int hf_x420_obsoleted_IPMs = -1;           /* ObsoletedIPMsField */
197 static int hf_x420_related_IPMs = -1;             /* RelatedIPMsField */
198 static int hf_x420_subject = -1;                  /* SubjectField */
199 static int hf_x420_expiry_time = -1;              /* ExpiryTimeField */
200 static int hf_x420_reply_time = -1;               /* ReplyTimeField */
201 static int hf_x420_reply_recipients = -1;         /* ReplyRecipientsField */
202 static int hf_x420_importance = -1;               /* ImportanceField */
203 static int hf_x420_sensitivity = -1;              /* SensitivityField */
204 static int hf_x420_auto_forwarded = -1;           /* AutoForwardedField */
205 static int hf_x420_extensions = -1;               /* ExtensionsField */
206 static int hf_x420_user = -1;                     /* ORName */
207 static int hf_x420_user_relative_identifier = -1;  /* LocalIPMIdentifier */
208 static int hf_x420_recipient = -1;                /* ORDescriptor */
209 static int hf_x420_notification_requests = -1;    /* NotificationRequests */
210 static int hf_x420_reply_requested = -1;          /* BOOLEAN */
211 static int hf_x420_recipient_extensions = -1;     /* RecipientExtensionsField */
212 static int hf_x420_formal_name = -1;              /* ORName */
213 static int hf_x420_free_form_name = -1;           /* FreeFormName */
214 static int hf_x420_telephone_number = -1;         /* TelephoneNumber */
215 static int hf_x420_RecipientExtensionsField_item = -1;  /* IPMSExtension */
216 static int hf_x420_AuthorizingUsersField_item = -1;  /* AuthorizingUsersSubfield */
217 static int hf_x420_PrimaryRecipientsField_item = -1;  /* PrimaryRecipientsSubfield */
218 static int hf_x420_CopyRecipientsField_item = -1;  /* CopyRecipientsSubfield */
219 static int hf_x420_BlindCopyRecipientsField_item = -1;  /* BlindCopyRecipientsSubfield */
220 static int hf_x420_ObsoletedIPMsField_item = -1;  /* ObsoletedIPMsSubfield */
221 static int hf_x420_RelatedIPMsField_item = -1;    /* RelatedIPMsSubfield */
222 static int hf_x420_ReplyRecipientsField_item = -1;  /* ReplyRecipientsSubfield */
223 static int hf_x420_ExtensionsField_item = -1;     /* IPMSExtension */
224 static int hf_x420_Body_item = -1;                /* BodyPart */
225 static int hf_x420_basic = -1;                    /* T_basic */
226 static int hf_x420_ia5_text = -1;                 /* IA5TextBodyPart */
227 static int hf_x420_g3_facsimile = -1;             /* G3FacsimileBodyPart */
228 static int hf_x420_g4_class1 = -1;                /* G4Class1BodyPart */
229 static int hf_x420_teletex = -1;                  /* TeletexBodyPart */
230 static int hf_x420_videotex = -1;                 /* VideotexBodyPart */
231 static int hf_x420_encrypted_bp = -1;             /* EncryptedBodyPart */
232 static int hf_x420_message = -1;                  /* MessageBodyPart */
233 static int hf_x420_mixed_mode = -1;               /* MixedModeBodyPart */
234 static int hf_x420_bilaterally_defined = -1;      /* BilaterallyDefinedBodyPart */
235 static int hf_x420_nationally_defined = -1;       /* NationallyDefinedBodyPart */
236 static int hf_x420_extended = -1;                 /* ExtendedBodyPart */
237 static int hf_x420_extended_parameters = -1;      /* INSTANCE_OF */
238 static int hf_x420_extended_data = -1;            /* INSTANCE_OF */
239 static int hf_x420_ia5text_parameters = -1;       /* IA5TextParameters */
240 static int hf_x420_ia5text_data = -1;             /* IA5TextData */
241 static int hf_x420_repertoire = -1;               /* Repertoire */
242 static int hf_x420_g3facsimile_parameters = -1;   /* G3FacsimileParameters */
243 static int hf_x420_g3facsimile_data = -1;         /* G3FacsimileData */
244 static int hf_x420_number_of_pages = -1;          /* INTEGER */
245 static int hf_x420_g3facsimile_non_basic_parameters = -1;  /* G3FacsimileNonBasicParameters */
246 static int hf_x420_G3FacsimileData_item = -1;     /* BIT_STRING */
247 static int hf_x420_G4Class1BodyPart_item = -1;    /* Interchange_Data_Element */
248 static int hf_x420_MixedModeBodyPart_item = -1;   /* Interchange_Data_Element */
249 static int hf_x420_teletex_parameters = -1;       /* TeletexParameters */
250 static int hf_x420_teletex_data = -1;             /* TeletexData */
251 static int hf_x420_telex_compatible = -1;         /* BOOLEAN */
252 static int hf_x420_teletex_non_basic_parameters = -1;  /* TeletexNonBasicParameters */
253 static int hf_x420_TeletexData_item = -1;         /* TeletexString */
254 static int hf_x420_videotex_parameters = -1;      /* VideotexParameters */
255 static int hf_x420_videotex_data = -1;            /* VideotexData */
256 static int hf_x420_syntax = -1;                   /* VideotexSyntax */
257 static int hf_x420_encrypted_parameters = -1;     /* EncryptedParameters */
258 static int hf_x420_encrypted_data = -1;           /* EncryptedData */
259 static int hf_x420_algorithm_identifier = -1;     /* AlgorithmIdentifier */
260 static int hf_x420_originator_certificates = -1;  /* ExtendedCertificates */
261 static int hf_x420_message_parameters = -1;       /* MessageParameters */
262 static int hf_x420_message_data = -1;             /* MessageData */
263 static int hf_x420_delivery_time = -1;            /* MessageDeliveryTime */
264 static int hf_x420_delivery_envelope = -1;        /* OtherMessageDeliveryFields */
265 static int hf_x420_subject_ipm = -1;              /* SubjectIPMField */
266 static int hf_x420_ipn_originator = -1;           /* IPNOriginatorField */
267 static int hf_x420_ipm_intended_recipient = -1;   /* IPMIntendedRecipientField */
268 static int hf_x420_conversion_eits = -1;          /* ConversionEITsField */
269 static int hf_x420_notification_extensions = -1;  /* NotificationExtensionsField */
270 static int hf_x420_non_receipt_reason = -1;       /* NonReceiptReasonField */
271 static int hf_x420_discard_reason = -1;           /* DiscardReasonField */
272 static int hf_x420_auto_forward_comment = -1;     /* AutoForwardCommentField */
273 static int hf_x420_returned_ipm = -1;             /* ReturnedIPMField */
274 static int hf_x420_nrn_extensions = -1;           /* NRNExtensionsField */
275 static int hf_x420_receipt_time = -1;             /* ReceiptTimeField */
276 static int hf_x420_acknowledgment_mode = -1;      /* AcknowledgmentModeField */
277 static int hf_x420_suppl_receipt_info = -1;       /* SupplReceiptInfoField */
278 static int hf_x420_rn_extensions = -1;            /* RNExtensionsField */
279 static int hf_x420_NotificationExtensionsField_item = -1;  /* IPMSExtension */
280 static int hf_x420_NRNExtensionsField_item = -1;  /* IPMSExtension */
281 static int hf_x420_RNExtensionsField_item = -1;   /* IPMSExtension */
282 static int hf_x420_OtherNotificationTypeFields_item = -1;  /* IPMSExtension */
283 static int hf_x420_advice = -1;                   /* BodyPart */
284 static int hf_x420_next_available = -1;           /* Time */
285 static int hf_x420_new_address = -1;              /* ORDescriptor */
286 static int hf_x420_effective_from = -1;           /* Time */
287 static int hf_x420_assembly_instructions = -1;    /* BodyPartReferences */
288 static int hf_x420_BodyPartReferences_item = -1;  /* BodyPartReference */
289 static int hf_x420_stored_entry = -1;             /* SequenceNumber */
290 static int hf_x420_stored_content = -1;           /* SequenceNumber */
291 static int hf_x420_submitted_body_part = -1;      /* INTEGER_1_MAX */
292 static int hf_x420_stored_body_part = -1;         /* T_stored_body_part */
293 static int hf_x420_message_entry = -1;            /* SequenceNumber */
294 static int hf_x420_body_part_number = -1;         /* BodyPartNumber */
295 static int hf_x420_Languages_item = -1;           /* Language */
296 static int hf_x420_BodyPartSignatures_item = -1;  /* BodyPartSignatures_item */
297 static int hf_x420_body_part_signature = -1;      /* BodyPartSignature */
298 static int hf_x420_originator_certificate_selector = -1;  /* CertificateAssertion */
299 static int hf_x420_algorithmIdentifier = -1;      /* AlgorithmIdentifier */
300 static int hf_x420_encrypted = -1;                /* BIT_STRING */
301 static int hf_x420_content_security_label = -1;   /* SecurityLabel */
302 static int hf_x420_heading_security_label = -1;   /* SecurityLabel */
303 static int hf_x420_body_part_security_labels = -1;  /* SEQUENCE_OF_BodyPartSecurityLabel */
304 static int hf_x420_body_part_security_labels_item = -1;  /* BodyPartSecurityLabel */
305 static int hf_x420_body_part_unlabelled = -1;     /* NULL */
306 static int hf_x420_body_part_security_label = -1;  /* SecurityLabel */
307 static int hf_x420_CirculationList_item = -1;     /* CirculationMember */
308 static int hf_x420_circulation_recipient = -1;    /* RecipientSpecifier */
309 static int hf_x420_checked = -1;                  /* Checkmark */
310 static int hf_x420_simple = -1;                   /* NULL */
311 static int hf_x420_timestamped = -1;              /* CirculationTime */
312 static int hf_x420_signed = -1;                   /* CirculationSignature */
313 static int hf_x420_circulation_signature_algorithm_identifier = -1;  /* CirculationSignatureAlgorithmIdentifier */
314 static int hf_x420_timestamp = -1;                /* CirculationTime */
315 static int hf_x420_circulation_signature_data = -1;  /* CirculationSignatureData */
316 static int hf_x420_DistributionCodes_item = -1;   /* DistributionCode */
317 static int hf_x420_oid_code = -1;                 /* OBJECT_IDENTIFIER */
318 static int hf_x420_alphanumeric_code = -1;        /* AlphaCode */
319 static int hf_x420_or_descriptor = -1;            /* ORDescriptor */
320 static int hf_x420_InformationCategories_item = -1;  /* InformationCategory */
321 static int hf_x420_reference = -1;                /* OBJECT_IDENTIFIER */
322 static int hf_x420_description = -1;              /* DescriptionString */
323 static int hf_x420_ManualHandlingInstructions_item = -1;  /* ManualHandlingInstruction */
324 static int hf_x420_GeneralTextParameters_item = -1;  /* CharacterSetRegistration */
325 static int hf_x420_related_stored_file = -1;      /* RelatedStoredFile */
326 static int hf_x420_contents_type = -1;            /* ContentsTypeParameter */
327 static int hf_x420_environment = -1;              /* EnvironmentParameter */
328 static int hf_x420_compression = -1;              /* CompressionParameter */
329 static int hf_x420_file_attributes = -1;          /* FileAttributes */
330 static int hf_x420_FileTransferData_item = -1;    /* EXTERNAL */
331 static int hf_x420_RelatedStoredFile_item = -1;   /* RelatedStoredFile_item */
332 static int hf_x420_file_identifier = -1;          /* FileIdentifier */
333 static int hf_x420_relationship = -1;             /* Relationship */
334 static int hf_x420_pathname_and_version = -1;     /* PathnameandVersion */
335 static int hf_x420_cross_reference = -1;          /* CrossReference */
336 static int hf_x420_pathname = -1;                 /* Pathname_Attribute */
337 static int hf_x420_file_version = -1;             /* GraphicString */
338 static int hf_x420_application_cross_reference = -1;  /* OCTET_STRING */
339 static int hf_x420_message_reference = -1;        /* MessageReference */
340 static int hf_x420_body_part_reference = -1;      /* INTEGER */
341 static int hf_x420_user_relative_identifier_ref = -1;  /* PrintableString */
342 static int hf_x420_explicit_relationship = -1;    /* ExplicitRelationship */
343 static int hf_x420_descriptive_relationship = -1;  /* GraphicString */
344 static int hf_x420_document_type = -1;            /* T_document_type */
345 static int hf_x420_document_type_name = -1;       /* Document_Type_Name */
346 static int hf_x420_parameter = -1;                /* T_parameter */
347 static int hf_x420_constraint_set_and_abstract_syntax = -1;  /* T_constraint_set_and_abstract_syntax */
348 static int hf_x420_constraint_set_name = -1;      /* Constraint_Set_Name */
349 static int hf_x420_abstract_syntax_name = -1;     /* Abstract_Syntax_Name */
350 static int hf_x420_application_reference = -1;    /* GeneralIdentifier */
351 static int hf_x420_machine = -1;                  /* GeneralIdentifier */
352 static int hf_x420_operating_system = -1;         /* OBJECT_IDENTIFIER */
353 static int hf_x420_user_visible_string = -1;      /* T_user_visible_string */
354 static int hf_x420_user_visible_string_item = -1;  /* GraphicString */
355 static int hf_x420_registered_identifier = -1;    /* OBJECT_IDENTIFIER */
356 static int hf_x420_descriptive_identifier = -1;   /* T_descriptive_identifier */
357 static int hf_x420_descriptive_identifier_item = -1;  /* GraphicString */
358 static int hf_x420_compression_algorithm_id = -1;  /* T_compression_algorithm_id */
359 static int hf_x420_compression_algorithm_param = -1;  /* T_compression_algorithm_param */
360 static int hf_x420_permitted_actions = -1;        /* Permitted_Actions_Attribute */
361 static int hf_x420_storage_account = -1;          /* Account_Attribute */
362 static int hf_x420_date_and_time_of_creation = -1;  /* Date_and_Time_Attribute */
363 static int hf_x420_date_and_time_of_last_modification = -1;  /* Date_and_Time_Attribute */
364 static int hf_x420_date_and_time_of_last_read_access = -1;  /* Date_and_Time_Attribute */
365 static int hf_x420_date_and_time_of_last_attribute_modification = -1;  /* Date_and_Time_Attribute */
366 static int hf_x420_identity_of_creator = -1;      /* User_Identity_Attribute */
367 static int hf_x420_identity_of_last_modifier = -1;  /* User_Identity_Attribute */
368 static int hf_x420_identity_of_last_reader = -1;  /* User_Identity_Attribute */
369 static int hf_x420_identity_of_last_attribute_modifier = -1;  /* User_Identity_Attribute */
370 static int hf_x420_object_availability = -1;      /* Object_Availability_Attribute */
371 static int hf_x420_object_size = -1;              /* Object_Size_Attribute */
372 static int hf_x420_future_object_size = -1;       /* Object_Size_Attribute */
373 static int hf_x420_access_control = -1;           /* Access_Control_Attribute */
374 static int hf_x420_legal_qualifications = -1;     /* Legal_Qualification_Attribute */
375 static int hf_x420_private_use = -1;              /* Private_Use_Attribute */
376 static int hf_x420_attribute_extensions = -1;     /* Attribute_Extensions */
377 static int hf_x420_incomplete_pathname = -1;      /* Pathname */
378 static int hf_x420_complete_pathname = -1;        /* Pathname */
379 static int hf_x420_no_value_available = -1;       /* NULL */
380 static int hf_x420_account_actual_values = -1;    /* Account */
381 static int hf_x420_identity_actual_values = -1;   /* User_Identity */
382 static int hf_x420_actual_values = -1;            /* SET_OF_Access_Control_Element */
383 static int hf_x420_actual_values_item = -1;       /* Access_Control_Element */
384 static int hf_x420_action_list = -1;              /* Access_Request */
385 static int hf_x420_concurrency_access = -1;       /* Concurrency_Access */
386 static int hf_x420_identity = -1;                 /* User_Identity */
387 static int hf_x420_passwords = -1;                /* Access_Passwords */
388 static int hf_x420_location = -1;                 /* Application_Entity_Title */
389 static int hf_x420_read_password = -1;            /* Password */
390 static int hf_x420_insert_password = -1;          /* Password */
391 static int hf_x420_replace_password = -1;         /* Password */
392 static int hf_x420_extend_password = -1;          /* Password */
393 static int hf_x420_erase_password = -1;           /* Password */
394 static int hf_x420_read_attribute_password = -1;  /* Password */
395 static int hf_x420_change_attribute_password = -1;  /* Password */
396 static int hf_x420_delete_password = -1;          /* Password */
397 static int hf_x420_pass_passwords = -1;           /* Pass_Passwords */
398 static int hf_x420_link_password = -1;            /* Password */
399 static int hf_x420_graphic_string = -1;           /* GraphicString */
400 static int hf_x420_octet_string = -1;             /* OCTET_STRING */
401 static int hf_x420_Pass_Passwords_item = -1;      /* Password */
402 static int hf_x420_ap_title = -1;                 /* AP_title */
403 static int hf_x420_ae_qualifier = -1;             /* AE_qualifier */
404 static int hf_x420_voice_message_duration = -1;   /* INTEGER */
405 static int hf_x420_voice_encoding_type = -1;      /* OBJECT_IDENTIFIER */
406 static int hf_x420_supplementary_information = -1;  /* IA5String */
407 static int hf_x420_mts_identifier = -1;           /* MessageDeliveryIdentifier */
408 static int hf_x420_submission_proof = -1;         /* SubmissionProof */
409 static int hf_x420_proof_of_submission = -1;      /* ProofOfSubmission */
410 static int hf_x420_originating_MTA_certificate = -1;  /* OriginatingMTACertificate */
411 static int hf_x420_message_submission_envelope = -1;  /* MessageSubmissionEnvelope */
412 static int hf_x420_IPMSynopsis_item = -1;         /* BodyPartSynopsis */
413 static int hf_x420_message_synopsis = -1;         /* MessageBodyPartSynopsis */
414 static int hf_x420_non_message = -1;              /* NonMessageBodyPartSynopsis */
415 static int hf_x420_number = -1;                   /* SequenceNumber */
416 static int hf_x420_synopsis = -1;                 /* IPMSynopsis */
417 static int hf_x420_bp_type = -1;                  /* OBJECT_IDENTIFIER */
418 static int hf_x420_bp_parameters = -1;            /* INSTANCE_OF */
419 static int hf_x420_size = -1;                     /* INTEGER */
420 static int hf_x420_processed = -1;                /* BOOLEAN */
421 static int hf_x420_data = -1;                     /* OBJECT_IDENTIFIER */
422 static int hf_x420_parameters = -1;               /* OBJECT_IDENTIFIER */
423 static int hf_x420_this_child_entry = -1;         /* SequenceNumber */
424 static int hf_x420_position = -1;                 /* INTEGER */
425 static int hf_x420_BodyPartSignatureVerification_item = -1;  /* BodyPartSignatureVerification_item */
426 static int hf_x420_body_part_sequence_number = -1;  /* BodyPartNumber */
427 static int hf_x420_body_part_signature_status = -1;  /* SignatureStatus */
428 static int hf_x420_stored = -1;                   /* SET_OF_SequenceNumber */
429 static int hf_x420_stored_item = -1;              /* SequenceNumber */
430 static int hf_x420_absent = -1;                   /* NULL */
431 static int hf_x420_no_reply_received = -1;        /* NULL */
432 static int hf_x420_received_replies = -1;         /* SEQUENCE_OF_SequenceNumber */
433 static int hf_x420_received_replies_item = -1;    /* SequenceNumber */
434 static int hf_x420_no_ipn_received = -1;          /* NULL */
435 static int hf_x420_ipns_received = -1;            /* SEQUENCE_OF_SequenceNumber */
436 static int hf_x420_ipns_received_item = -1;       /* SequenceNumber */
437 static int hf_x420_content_or_arguments = -1;     /* T_content_or_arguments */
438 static int hf_x420_original_content = -1;         /* OriginalContent */
439 static int hf_x420_original_security_arguments = -1;  /* T_original_security_arguments */
440 static int hf_x420_original_content_integrity_check = -1;  /* OriginalContentIntegrityCheck */
441 static int hf_x420_original_message_origin_authentication_check = -1;  /* OriginalMessageOriginAuthenticationCheck */
442 static int hf_x420_original_message_token = -1;   /* OriginalMessageToken */
443 static int hf_x420_security_diagnostic_code = -1;  /* SecurityDiagnosticCode */
444 static int hf_x420_BodyPartTokens_item = -1;      /* BodyPartTokens_item */
445 static int hf_x420_body_part_choice = -1;         /* T_body_part_choice */
446 static int hf_x420_encryption_token = -1;         /* EncryptionToken */
447 static int hf_x420_message_or_content_body_part = -1;  /* BodyPartTokens */
448 static int hf_x420_encryption_algorithm_identifier = -1;  /* AlgorithmIdentifier */
449 static int hf_x420_encrypted_key = -1;            /* BIT_STRING */
450 static int hf_x420_recipient_certificate_selector = -1;  /* CertificateAssertion */
451 static int hf_x420_recipient_certificate = -1;    /* Certificates */
452 static int hf_x420_ForwardedContentToken_item = -1;  /* ForwardedContentToken_item */
453 static int hf_x420_body_part_token_choice = -1;   /* T_body_part_token_choice */
454 static int hf_x420_forwarding_token = -1;         /* MessageToken */
455 static int hf_x420_forwarded_content_token = -1;  /* ForwardedContentToken */
456 static int hf_x420_choice = -1;                   /* T_choice */
457 static int hf_x420_non_receipt_fields = -1;       /* NonReceiptFields */
458 static int hf_x420_receipt_fields = -1;           /* ReceiptFields */
459 static int hf_x420_other_notification_type_fields = -1;  /* OtherNotificationTypeFields */
460 /* named bits */
461 static int hf_x420_NotificationRequests_rn = -1;
462 static int hf_x420_NotificationRequests_nrn = -1;
463 static int hf_x420_NotificationRequests_ipm_return = -1;
464 static int hf_x420_NotificationRequests_an_supported = -1;
465 static int hf_x420_NotificationRequests_suppress_an = -1;
466 static int hf_x420_Access_Request_read = -1;
467 static int hf_x420_Access_Request_insert = -1;
468 static int hf_x420_Access_Request_replace = -1;
469 static int hf_x420_Access_Request_extend = -1;
470 static int hf_x420_Access_Request_erase = -1;
471 static int hf_x420_Access_Request_read_attribute = -1;
472 static int hf_x420_Access_Request_change_attribute = -1;
473 static int hf_x420_Access_Request_delete_object = -1;
474 static int hf_x420_RecipientSecurityRequest_content_non_repudiation = -1;
475 static int hf_x420_RecipientSecurityRequest_content_proof = -1;
476 static int hf_x420_RecipientSecurityRequest_ipn_non_repudiation = -1;
477 static int hf_x420_RecipientSecurityRequest_ipn_proof = -1;
478
479 /*--- End of included file: packet-x420-hf.c ---*/
480 #line 90 "packet-x420-template.c"
481
482 /* Initialize the subtree pointers */
483 static gint ett_x420 = -1;
484
485 /*--- Included file: packet-x420-ett.c ---*/
486 #line 1 "packet-x420-ett.c"
487 static gint ett_x420_InformationObject = -1;
488 static gint ett_x420_IPM = -1;
489 static gint ett_x420_IPMSExtension = -1;
490 static gint ett_x420_Heading = -1;
491 static gint ett_x420_IPMIdentifier_U = -1;
492 static gint ett_x420_RecipientSpecifier = -1;
493 static gint ett_x420_ORDescriptor = -1;
494 static gint ett_x420_NotificationRequests = -1;
495 static gint ett_x420_RecipientExtensionsField = -1;
496 static gint ett_x420_AuthorizingUsersField = -1;
497 static gint ett_x420_PrimaryRecipientsField = -1;
498 static gint ett_x420_CopyRecipientsField = -1;
499 static gint ett_x420_BlindCopyRecipientsField = -1;
500 static gint ett_x420_ObsoletedIPMsField = -1;
501 static gint ett_x420_RelatedIPMsField = -1;
502 static gint ett_x420_ReplyRecipientsField = -1;
503 static gint ett_x420_ExtensionsField = -1;
504 static gint ett_x420_Body = -1;
505 static gint ett_x420_BodyPart = -1;
506 static gint ett_x420_T_basic = -1;
507 static gint ett_x420_ExtendedBodyPart = -1;
508 static gint ett_x420_IA5TextBodyPart = -1;
509 static gint ett_x420_IA5TextParameters = -1;
510 static gint ett_x420_G3FacsimileBodyPart = -1;
511 static gint ett_x420_G3FacsimileParameters = -1;
512 static gint ett_x420_G3FacsimileData = -1;
513 static gint ett_x420_G4Class1BodyPart = -1;
514 static gint ett_x420_MixedModeBodyPart = -1;
515 static gint ett_x420_TeletexBodyPart = -1;
516 static gint ett_x420_TeletexParameters = -1;
517 static gint ett_x420_TeletexData = -1;
518 static gint ett_x420_VideotexBodyPart = -1;
519 static gint ett_x420_VideotexParameters = -1;
520 static gint ett_x420_EncryptedBodyPart = -1;
521 static gint ett_x420_EncryptedParameters = -1;
522 static gint ett_x420_MessageBodyPart = -1;
523 static gint ett_x420_MessageParameters = -1;
524 static gint ett_x420_IPN = -1;
525 static gint ett_x420_CommonFields = -1;
526 static gint ett_x420_NonReceiptFields = -1;
527 static gint ett_x420_ReceiptFields = -1;
528 static gint ett_x420_NotificationExtensionsField = -1;
529 static gint ett_x420_NRNExtensionsField = -1;
530 static gint ett_x420_RNExtensionsField = -1;
531 static gint ett_x420_OtherNotificationTypeFields = -1;
532 static gint ett_x420_AbsenceAdvice = -1;
533 static gint ett_x420_ChangeOfAddressAdvice = -1;
534 static gint ett_x420_IPMAssemblyInstructions = -1;
535 static gint ett_x420_BodyPartReferences = -1;
536 static gint ett_x420_BodyPartReference = -1;
537 static gint ett_x420_T_stored_body_part = -1;
538 static gint ett_x420_Languages = -1;
539 static gint ett_x420_BodyPartSignatures = -1;
540 static gint ett_x420_BodyPartSignatures_item = -1;
541 static gint ett_x420_Signature = -1;
542 static gint ett_x420_IPMSecurityLabel = -1;
543 static gint ett_x420_SEQUENCE_OF_BodyPartSecurityLabel = -1;
544 static gint ett_x420_BodyPartSecurityLabel = -1;
545 static gint ett_x420_CirculationList = -1;
546 static gint ett_x420_CirculationMember = -1;
547 static gint ett_x420_Checkmark = -1;
548 static gint ett_x420_CirculationSignatureData = -1;
549 static gint ett_x420_CirculationSignature = -1;
550 static gint ett_x420_DistributionCodes = -1;
551 static gint ett_x420_DistributionCode = -1;
552 static gint ett_x420_InformationCategories = -1;
553 static gint ett_x420_InformationCategory = -1;
554 static gint ett_x420_ManualHandlingInstructions = -1;
555 static gint ett_x420_GeneralTextParameters = -1;
556 static gint ett_x420_FileTransferParameters = -1;
557 static gint ett_x420_FileTransferData = -1;
558 static gint ett_x420_RelatedStoredFile = -1;
559 static gint ett_x420_RelatedStoredFile_item = -1;
560 static gint ett_x420_FileIdentifier = -1;
561 static gint ett_x420_PathnameandVersion = -1;
562 static gint ett_x420_CrossReference = -1;
563 static gint ett_x420_MessageReference = -1;
564 static gint ett_x420_Relationship = -1;
565 static gint ett_x420_Contents_Type_Attribute = -1;
566 static gint ett_x420_T_document_type = -1;
567 static gint ett_x420_T_constraint_set_and_abstract_syntax = -1;
568 static gint ett_x420_EnvironmentParameter = -1;
569 static gint ett_x420_T_user_visible_string = -1;
570 static gint ett_x420_GeneralIdentifier = -1;
571 static gint ett_x420_T_descriptive_identifier = -1;
572 static gint ett_x420_CompressionParameter = -1;
573 static gint ett_x420_FileAttributes = -1;
574 static gint ett_x420_Pathname_Attribute = -1;
575 static gint ett_x420_Account_Attribute = -1;
576 static gint ett_x420_User_Identity_Attribute = -1;
577 static gint ett_x420_Access_Control_Attribute = -1;
578 static gint ett_x420_SET_OF_Access_Control_Element = -1;
579 static gint ett_x420_Access_Control_Element = -1;
580 static gint ett_x420_Access_Request = -1;
581 static gint ett_x420_Access_Passwords = -1;
582 static gint ett_x420_Password = -1;
583 static gint ett_x420_Pass_Passwords = -1;
584 static gint ett_x420_Application_Entity_Title = -1;
585 static gint ett_x420_VoiceParameters = -1;
586 static gint ett_x420_ForwardedContentParameters = -1;
587 static gint ett_x420_SubmissionProof = -1;
588 static gint ett_x420_IPMSynopsis = -1;
589 static gint ett_x420_BodyPartSynopsis = -1;
590 static gint ett_x420_MessageBodyPartSynopsis = -1;
591 static gint ett_x420_NonMessageBodyPartSynopsis = -1;
592 static gint ett_x420_BodyPartDescriptor = -1;
593 static gint ett_x420_BodyPartSignatureVerification = -1;
594 static gint ett_x420_BodyPartSignatureVerification_item = -1;
595 static gint ett_x420_IPMLocation = -1;
596 static gint ett_x420_SET_OF_SequenceNumber = -1;
597 static gint ett_x420_CorrelatedDeliveredReplies = -1;
598 static gint ett_x420_SEQUENCE_OF_SequenceNumber = -1;
599 static gint ett_x420_CorrelatedDeliveredIPNs = -1;
600 static gint ett_x420_RecipientSecurityRequest = -1;
601 static gint ett_x420_IpnSecurityResponse = -1;
602 static gint ett_x420_T_content_or_arguments = -1;
603 static gint ett_x420_T_original_security_arguments = -1;
604 static gint ett_x420_BodyPartTokens = -1;
605 static gint ett_x420_BodyPartTokens_item = -1;
606 static gint ett_x420_T_body_part_choice = -1;
607 static gint ett_x420_EncryptionToken = -1;
608 static gint ett_x420_ForwardedContentToken = -1;
609 static gint ett_x420_ForwardedContentToken_item = -1;
610 static gint ett_x420_T_body_part_token_choice = -1;
611 static gint ett_x420_T_choice = -1;
612
613 /*--- End of included file: packet-x420-ett.c ---*/
614 #line 94 "packet-x420-template.c"
615
616
617 /*--- Included file: packet-x420-fn.c ---*/
618 #line 1 "packet-x420-fn.c"
619 /*--- Cyclic dependencies ---*/
620
621 /* IPM -> Body -> BodyPart -> BodyPart/basic -> MessageBodyPart -> MessageData -> IPM */
622 int dissect_x420_IPM(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
623
624 /* IPMSynopsis -> BodyPartSynopsis -> MessageBodyPartSynopsis -> IPMSynopsis */
625 static int dissect_x420_IPMSynopsis(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
626
627 /* BodyPartTokens -> BodyPartTokens/_item -> BodyPartTokens/_item/body-part-choice -> BodyPartTokens */
628 static int dissect_x420_BodyPartTokens(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
629
630 /* ForwardedContentToken -> ForwardedContentToken/_item -> ForwardedContentToken/_item/body-part-choice -> ForwardedContentToken */
631 static int dissect_x420_ForwardedContentToken(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
632
633
634
635
636 static int
637 dissect_x420_Time(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
638   offset = dissect_ber_UTCTime(implicit_tag, actx, tree, tvb, offset, hf_index);
639
640   return offset;
641 }
642
643
644
645 static int
646 dissect_x420_LocalIPMIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
647   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
648                                             actx, tree, tvb, offset, hf_index,
649                                             NULL);
650
651   return offset;
652 }
653
654
655 static const ber_sequence_t IPMIdentifier_U_set[] = {
656   { &hf_x420_user           , BER_CLASS_APP, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_x411_ORName },
657   { &hf_x420_user_relative_identifier, BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_x420_LocalIPMIdentifier },
658   { NULL, 0, 0, 0, NULL }
659 };
660
661 static int
662 dissect_x420_IPMIdentifier_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
663   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
664                               IPMIdentifier_U_set, hf_index, ett_x420_IPMIdentifier_U);
665
666   return offset;
667 }
668
669
670
671 static int
672 dissect_x420_IPMIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
673   offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
674                                       hf_index, BER_CLASS_APP, 11, TRUE, dissect_x420_IPMIdentifier_U);
675
676   return offset;
677 }
678
679
680
681 static int
682 dissect_x420_ThisIPMField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
683   offset = dissect_x420_IPMIdentifier(implicit_tag, tvb, offset, actx, tree, hf_index);
684
685   return offset;
686 }
687
688
689
690 static int
691 dissect_x420_FreeFormName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
692   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString,
693                                             actx, tree, tvb, offset, hf_index,
694                                             NULL);
695
696   return offset;
697 }
698
699
700
701 static int
702 dissect_x420_TelephoneNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
703   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
704                                             actx, tree, tvb, offset, hf_index,
705                                             NULL);
706
707   return offset;
708 }
709
710
711 static const ber_sequence_t ORDescriptor_set[] = {
712   { &hf_x420_formal_name    , BER_CLASS_APP, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_x411_ORName },
713   { &hf_x420_free_form_name , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_FreeFormName },
714   { &hf_x420_telephone_number, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_TelephoneNumber },
715   { NULL, 0, 0, 0, NULL }
716 };
717
718 int
719 dissect_x420_ORDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
720   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
721                               ORDescriptor_set, hf_index, ett_x420_ORDescriptor);
722
723   return offset;
724 }
725
726
727
728 static int
729 dissect_x420_OriginatorField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
730   offset = dissect_x420_ORDescriptor(implicit_tag, tvb, offset, actx, tree, hf_index);
731
732   return offset;
733 }
734
735
736
737 static int
738 dissect_x420_AuthorizingUsersSubfield(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
739   offset = dissect_x420_ORDescriptor(implicit_tag, tvb, offset, actx, tree, hf_index);
740
741   return offset;
742 }
743
744
745 static const ber_sequence_t AuthorizingUsersField_sequence_of[1] = {
746   { &hf_x420_AuthorizingUsersField_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x420_AuthorizingUsersSubfield },
747 };
748
749 static int
750 dissect_x420_AuthorizingUsersField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
751   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
752                                       AuthorizingUsersField_sequence_of, hf_index, ett_x420_AuthorizingUsersField);
753
754   return offset;
755 }
756
757
758 static const asn_namedbit NotificationRequests_bits[] = {
759   {  0, &hf_x420_NotificationRequests_rn, -1, -1, "rn", NULL },
760   {  1, &hf_x420_NotificationRequests_nrn, -1, -1, "nrn", NULL },
761   {  2, &hf_x420_NotificationRequests_ipm_return, -1, -1, "ipm-return", NULL },
762   {  3, &hf_x420_NotificationRequests_an_supported, -1, -1, "an-supported", NULL },
763   {  4, &hf_x420_NotificationRequests_suppress_an, -1, -1, "suppress-an", NULL },
764   { 0, NULL, 0, 0, NULL, NULL }
765 };
766
767 static int
768 dissect_x420_NotificationRequests(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
769   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
770                                     NotificationRequests_bits, hf_index, ett_x420_NotificationRequests,
771                                     NULL);
772
773   return offset;
774 }
775
776
777
778 static int
779 dissect_x420_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
780   offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
781
782   return offset;
783 }
784
785
786
787 static int
788 dissect_x420_T_type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
789 #line 208 "x420.cnf"
790   const char *name = NULL;
791
792     offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_index, &object_identifier_id);
793
794   
795   name = oid_resolved_from_string(object_identifier_id);
796   proto_item_append_text(tree, " (%s)", name ? name : object_identifier_id); 
797
798
799
800   return offset;
801 }
802
803
804
805 static int
806 dissect_x420_T_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
807 #line 216 "x420.cnf"
808
809   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree);
810
811
812
813   return offset;
814 }
815
816
817 static const ber_sequence_t IPMSExtension_sequence[] = {
818   { &hf_x420_type           , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x420_T_type },
819   { &hf_x420_value          , BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_x420_T_value },
820   { NULL, 0, 0, 0, NULL }
821 };
822
823 static int
824 dissect_x420_IPMSExtension(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
825   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
826                                    IPMSExtension_sequence, hf_index, ett_x420_IPMSExtension);
827
828   return offset;
829 }
830
831
832 static const ber_sequence_t RecipientExtensionsField_set_of[1] = {
833   { &hf_x420_RecipientExtensionsField_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x420_IPMSExtension },
834 };
835
836 static int
837 dissect_x420_RecipientExtensionsField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
838   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
839                                  RecipientExtensionsField_set_of, hf_index, ett_x420_RecipientExtensionsField);
840
841   return offset;
842 }
843
844
845 static const ber_sequence_t RecipientSpecifier_set[] = {
846   { &hf_x420_recipient      , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x420_ORDescriptor },
847   { &hf_x420_notification_requests, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_NotificationRequests },
848   { &hf_x420_reply_requested, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_BOOLEAN },
849   { &hf_x420_recipient_extensions, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_RecipientExtensionsField },
850   { NULL, 0, 0, 0, NULL }
851 };
852
853 static int
854 dissect_x420_RecipientSpecifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
855   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
856                               RecipientSpecifier_set, hf_index, ett_x420_RecipientSpecifier);
857
858   return offset;
859 }
860
861
862
863 static int
864 dissect_x420_PrimaryRecipientsSubfield(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
865   offset = dissect_x420_RecipientSpecifier(implicit_tag, tvb, offset, actx, tree, hf_index);
866
867   return offset;
868 }
869
870
871 static const ber_sequence_t PrimaryRecipientsField_sequence_of[1] = {
872   { &hf_x420_PrimaryRecipientsField_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x420_PrimaryRecipientsSubfield },
873 };
874
875 static int
876 dissect_x420_PrimaryRecipientsField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
877   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
878                                       PrimaryRecipientsField_sequence_of, hf_index, ett_x420_PrimaryRecipientsField);
879
880   return offset;
881 }
882
883
884
885 static int
886 dissect_x420_CopyRecipientsSubfield(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
887   offset = dissect_x420_RecipientSpecifier(implicit_tag, tvb, offset, actx, tree, hf_index);
888
889   return offset;
890 }
891
892
893 static const ber_sequence_t CopyRecipientsField_sequence_of[1] = {
894   { &hf_x420_CopyRecipientsField_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x420_CopyRecipientsSubfield },
895 };
896
897 static int
898 dissect_x420_CopyRecipientsField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
899   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
900                                       CopyRecipientsField_sequence_of, hf_index, ett_x420_CopyRecipientsField);
901
902   return offset;
903 }
904
905
906
907 static int
908 dissect_x420_BlindCopyRecipientsSubfield(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
909   offset = dissect_x420_RecipientSpecifier(implicit_tag, tvb, offset, actx, tree, hf_index);
910
911   return offset;
912 }
913
914
915 static const ber_sequence_t BlindCopyRecipientsField_sequence_of[1] = {
916   { &hf_x420_BlindCopyRecipientsField_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x420_BlindCopyRecipientsSubfield },
917 };
918
919 static int
920 dissect_x420_BlindCopyRecipientsField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
921   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
922                                       BlindCopyRecipientsField_sequence_of, hf_index, ett_x420_BlindCopyRecipientsField);
923
924   return offset;
925 }
926
927
928
929 static int
930 dissect_x420_RepliedToIPMField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
931   offset = dissect_x420_IPMIdentifier(implicit_tag, tvb, offset, actx, tree, hf_index);
932
933   return offset;
934 }
935
936
937
938 static int
939 dissect_x420_ObsoletedIPMsSubfield(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
940   offset = dissect_x420_IPMIdentifier(implicit_tag, tvb, offset, actx, tree, hf_index);
941
942   return offset;
943 }
944
945
946 static const ber_sequence_t ObsoletedIPMsField_sequence_of[1] = {
947   { &hf_x420_ObsoletedIPMsField_item, BER_CLASS_APP, 11, BER_FLAGS_NOOWNTAG, dissect_x420_ObsoletedIPMsSubfield },
948 };
949
950 static int
951 dissect_x420_ObsoletedIPMsField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
952   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
953                                       ObsoletedIPMsField_sequence_of, hf_index, ett_x420_ObsoletedIPMsField);
954
955   return offset;
956 }
957
958
959
960 static int
961 dissect_x420_RelatedIPMsSubfield(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
962   offset = dissect_x420_IPMIdentifier(implicit_tag, tvb, offset, actx, tree, hf_index);
963
964   return offset;
965 }
966
967
968 static const ber_sequence_t RelatedIPMsField_sequence_of[1] = {
969   { &hf_x420_RelatedIPMsField_item, BER_CLASS_APP, 11, BER_FLAGS_NOOWNTAG, dissect_x420_RelatedIPMsSubfield },
970 };
971
972 static int
973 dissect_x420_RelatedIPMsField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
974   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
975                                       RelatedIPMsField_sequence_of, hf_index, ett_x420_RelatedIPMsField);
976
977   return offset;
978 }
979
980
981
982 static int
983 dissect_x420_SubjectField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
984 #line 238 "x420.cnf"
985   tvbuff_t *subject=NULL;
986
987     offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString,
988                                             actx, tree, tvb, offset, hf_index,
989                                             &subject);
990
991
992   if(subject && check_col(actx->pinfo->cinfo, COL_INFO))
993    col_append_fstr(actx->pinfo->cinfo, COL_INFO, " (%s)", tvb_format_text(subject, 0, tvb_length(subject)));
994
995
996
997   return offset;
998 }
999
1000
1001
1002 static int
1003 dissect_x420_ExpiryTimeField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1004   offset = dissect_x420_Time(implicit_tag, tvb, offset, actx, tree, hf_index);
1005
1006   return offset;
1007 }
1008
1009
1010
1011 static int
1012 dissect_x420_ReplyTimeField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1013   offset = dissect_x420_Time(implicit_tag, tvb, offset, actx, tree, hf_index);
1014
1015   return offset;
1016 }
1017
1018
1019
1020 static int
1021 dissect_x420_ReplyRecipientsSubfield(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1022   offset = dissect_x420_ORDescriptor(implicit_tag, tvb, offset, actx, tree, hf_index);
1023
1024   return offset;
1025 }
1026
1027
1028 static const ber_sequence_t ReplyRecipientsField_sequence_of[1] = {
1029   { &hf_x420_ReplyRecipientsField_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x420_ReplyRecipientsSubfield },
1030 };
1031
1032 static int
1033 dissect_x420_ReplyRecipientsField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1034   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1035                                       ReplyRecipientsField_sequence_of, hf_index, ett_x420_ReplyRecipientsField);
1036
1037   return offset;
1038 }
1039
1040
1041 static const value_string x420_ImportanceField_vals[] = {
1042   {   0, "low" },
1043   {   1, "normal" },
1044   {   2, "high" },
1045   { 0, NULL }
1046 };
1047
1048
1049 static int
1050 dissect_x420_ImportanceField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1051   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1052                                   NULL);
1053
1054   return offset;
1055 }
1056
1057
1058 static const value_string x420_SensitivityField_vals[] = {
1059   {   1, "personal" },
1060   {   2, "private" },
1061   {   3, "company-confidential" },
1062   { 0, NULL }
1063 };
1064
1065
1066 static int
1067 dissect_x420_SensitivityField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1068   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1069                                   NULL);
1070
1071   return offset;
1072 }
1073
1074
1075
1076 static int
1077 dissect_x420_AutoForwardedField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1078   offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
1079
1080   return offset;
1081 }
1082
1083
1084 static const ber_sequence_t ExtensionsField_set_of[1] = {
1085   { &hf_x420_ExtensionsField_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x420_IPMSExtension },
1086 };
1087
1088 int
1089 dissect_x420_ExtensionsField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1090   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1091                                  ExtensionsField_set_of, hf_index, ett_x420_ExtensionsField);
1092
1093   return offset;
1094 }
1095
1096
1097 static const ber_sequence_t Heading_set[] = {
1098   { &hf_x420_this_IPM       , BER_CLASS_APP, 11, BER_FLAGS_NOOWNTAG, dissect_x420_ThisIPMField },
1099   { &hf_x420_originator     , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_OriginatorField },
1100   { &hf_x420_authorizing_users, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_AuthorizingUsersField },
1101   { &hf_x420_primary_recipients, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_PrimaryRecipientsField },
1102   { &hf_x420_copy_recipients, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_CopyRecipientsField },
1103   { &hf_x420_blind_copy_recipients, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_BlindCopyRecipientsField },
1104   { &hf_x420_replied_to_IPM , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_RepliedToIPMField },
1105   { &hf_x420_obsoleted_IPMs , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_ObsoletedIPMsField },
1106   { &hf_x420_related_IPMs   , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_RelatedIPMsField },
1107   { &hf_x420_subject        , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_x420_SubjectField },
1108   { &hf_x420_expiry_time    , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_ExpiryTimeField },
1109   { &hf_x420_reply_time     , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_ReplyTimeField },
1110   { &hf_x420_reply_recipients, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_ReplyRecipientsField },
1111   { &hf_x420_importance     , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_ImportanceField },
1112   { &hf_x420_sensitivity    , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_SensitivityField },
1113   { &hf_x420_auto_forwarded , BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_AutoForwardedField },
1114   { &hf_x420_extensions     , BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_ExtensionsField },
1115   { NULL, 0, 0, 0, NULL }
1116 };
1117
1118 static int
1119 dissect_x420_Heading(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1120   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1121                               Heading_set, hf_index, ett_x420_Heading);
1122
1123   return offset;
1124 }
1125
1126
1127 static const value_string x420_Repertoire_vals[] = {
1128   {   2, "ita2" },
1129   {   5, "ia5" },
1130   { 0, NULL }
1131 };
1132
1133
1134 static int
1135 dissect_x420_Repertoire(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1136   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1137                                   NULL);
1138
1139   return offset;
1140 }
1141
1142
1143 static const ber_sequence_t IA5TextParameters_set[] = {
1144   { &hf_x420_repertoire     , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_Repertoire },
1145   { NULL, 0, 0, 0, NULL }
1146 };
1147
1148 static int
1149 dissect_x420_IA5TextParameters(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1150   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1151                               IA5TextParameters_set, hf_index, ett_x420_IA5TextParameters);
1152
1153   return offset;
1154 }
1155
1156
1157
1158 static int
1159 dissect_x420_IA5TextData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1160   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
1161                                             actx, tree, tvb, offset, hf_index,
1162                                             NULL);
1163
1164   return offset;
1165 }
1166
1167
1168 static const ber_sequence_t IA5TextBodyPart_sequence[] = {
1169   { &hf_x420_ia5text_parameters, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x420_IA5TextParameters },
1170   { &hf_x420_ia5text_data   , BER_CLASS_UNI, BER_UNI_TAG_IA5String, BER_FLAGS_NOOWNTAG, dissect_x420_IA5TextData },
1171   { NULL, 0, 0, 0, NULL }
1172 };
1173
1174 static int
1175 dissect_x420_IA5TextBodyPart(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1176   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1177                                    IA5TextBodyPart_sequence, hf_index, ett_x420_IA5TextBodyPart);
1178
1179   return offset;
1180 }
1181
1182
1183
1184 static int
1185 dissect_x420_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1186   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1187                                                 NULL);
1188
1189   return offset;
1190 }
1191
1192
1193 static const ber_sequence_t G3FacsimileParameters_set[] = {
1194   { &hf_x420_number_of_pages, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_INTEGER },
1195   { &hf_x420_g3facsimile_non_basic_parameters, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x411_G3FacsimileNonBasicParameters },
1196   { NULL, 0, 0, 0, NULL }
1197 };
1198
1199 static int
1200 dissect_x420_G3FacsimileParameters(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1201   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1202                               G3FacsimileParameters_set, hf_index, ett_x420_G3FacsimileParameters);
1203
1204   return offset;
1205 }
1206
1207
1208
1209 static int
1210 dissect_x420_BIT_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1211   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
1212                                     NULL, hf_index, -1,
1213                                     NULL);
1214
1215   return offset;
1216 }
1217
1218
1219 static const ber_sequence_t G3FacsimileData_sequence_of[1] = {
1220   { &hf_x420_G3FacsimileData_item, BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_x420_BIT_STRING },
1221 };
1222
1223 static int
1224 dissect_x420_G3FacsimileData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1225   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1226                                       G3FacsimileData_sequence_of, hf_index, ett_x420_G3FacsimileData);
1227
1228   return offset;
1229 }
1230
1231
1232 static const ber_sequence_t G3FacsimileBodyPart_sequence[] = {
1233   { &hf_x420_g3facsimile_parameters, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x420_G3FacsimileParameters },
1234   { &hf_x420_g3facsimile_data, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x420_G3FacsimileData },
1235   { NULL, 0, 0, 0, NULL }
1236 };
1237
1238 static int
1239 dissect_x420_G3FacsimileBodyPart(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1240   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1241                                    G3FacsimileBodyPart_sequence, hf_index, ett_x420_G3FacsimileBodyPart);
1242
1243   return offset;
1244 }
1245
1246
1247
1248 static int
1249 dissect_x420_Interchange_Data_Element(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1250 #line 256 "x420.cnf"
1251 /* XXX Not implemented yet */
1252
1253
1254
1255   return offset;
1256 }
1257
1258
1259 static const ber_sequence_t G4Class1BodyPart_sequence_of[1] = {
1260   { &hf_x420_G4Class1BodyPart_item, BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_x420_Interchange_Data_Element },
1261 };
1262
1263 static int
1264 dissect_x420_G4Class1BodyPart(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1265   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1266                                       G4Class1BodyPart_sequence_of, hf_index, ett_x420_G4Class1BodyPart);
1267
1268   return offset;
1269 }
1270
1271
1272 static const ber_sequence_t TeletexParameters_set[] = {
1273   { &hf_x420_number_of_pages, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_INTEGER },
1274   { &hf_x420_telex_compatible, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_BOOLEAN },
1275   { &hf_x420_teletex_non_basic_parameters, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x411_TeletexNonBasicParameters },
1276   { NULL, 0, 0, 0, NULL }
1277 };
1278
1279 static int
1280 dissect_x420_TeletexParameters(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1281   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1282                               TeletexParameters_set, hf_index, ett_x420_TeletexParameters);
1283
1284   return offset;
1285 }
1286
1287
1288
1289 static int
1290 dissect_x420_TeletexString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1291   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString,
1292                                             actx, tree, tvb, offset, hf_index,
1293                                             NULL);
1294
1295   return offset;
1296 }
1297
1298
1299 static const ber_sequence_t TeletexData_sequence_of[1] = {
1300   { &hf_x420_TeletexData_item, BER_CLASS_UNI, BER_UNI_TAG_TeletexString, BER_FLAGS_NOOWNTAG, dissect_x420_TeletexString },
1301 };
1302
1303 static int
1304 dissect_x420_TeletexData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1305   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1306                                       TeletexData_sequence_of, hf_index, ett_x420_TeletexData);
1307
1308   return offset;
1309 }
1310
1311
1312 static const ber_sequence_t TeletexBodyPart_sequence[] = {
1313   { &hf_x420_teletex_parameters, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x420_TeletexParameters },
1314   { &hf_x420_teletex_data   , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x420_TeletexData },
1315   { NULL, 0, 0, 0, NULL }
1316 };
1317
1318 static int
1319 dissect_x420_TeletexBodyPart(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1320   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1321                                    TeletexBodyPart_sequence, hf_index, ett_x420_TeletexBodyPart);
1322
1323   return offset;
1324 }
1325
1326
1327 static const value_string x420_VideotexSyntax_vals[] = {
1328   {   0, "ids" },
1329   {   1, "data-syntax1" },
1330   {   2, "data-syntax2" },
1331   {   3, "data-syntax3" },
1332   { 0, NULL }
1333 };
1334
1335
1336 static int
1337 dissect_x420_VideotexSyntax(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1338   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1339                                                 NULL);
1340
1341   return offset;
1342 }
1343
1344
1345 static const ber_sequence_t VideotexParameters_set[] = {
1346   { &hf_x420_syntax         , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_VideotexSyntax },
1347   { NULL, 0, 0, 0, NULL }
1348 };
1349
1350 static int
1351 dissect_x420_VideotexParameters(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1352   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1353                               VideotexParameters_set, hf_index, ett_x420_VideotexParameters);
1354
1355   return offset;
1356 }
1357
1358
1359
1360 static int
1361 dissect_x420_VideotexData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1362   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_VideotexString,
1363                                             actx, tree, tvb, offset, hf_index,
1364                                             NULL);
1365
1366   return offset;
1367 }
1368
1369
1370 static const ber_sequence_t VideotexBodyPart_sequence[] = {
1371   { &hf_x420_videotex_parameters, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x420_VideotexParameters },
1372   { &hf_x420_videotex_data  , BER_CLASS_UNI, BER_UNI_TAG_VideotexString, BER_FLAGS_NOOWNTAG, dissect_x420_VideotexData },
1373   { NULL, 0, 0, 0, NULL }
1374 };
1375
1376 static int
1377 dissect_x420_VideotexBodyPart(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1378   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1379                                    VideotexBodyPart_sequence, hf_index, ett_x420_VideotexBodyPart);
1380
1381   return offset;
1382 }
1383
1384
1385 static const ber_sequence_t EncryptedParameters_set[] = {
1386   { &hf_x420_algorithm_identifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1387   { &hf_x420_originator_certificates, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_x411_ExtendedCertificates },
1388   { NULL, 0, 0, 0, NULL }
1389 };
1390
1391 static int
1392 dissect_x420_EncryptedParameters(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1393   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1394                               EncryptedParameters_set, hf_index, ett_x420_EncryptedParameters);
1395
1396   return offset;
1397 }
1398
1399
1400
1401 static int
1402 dissect_x420_EncryptedData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1403   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
1404                                     NULL, hf_index, -1,
1405                                     NULL);
1406
1407   return offset;
1408 }
1409
1410
1411 static const ber_sequence_t EncryptedBodyPart_sequence[] = {
1412   { &hf_x420_encrypted_parameters, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x420_EncryptedParameters },
1413   { &hf_x420_encrypted_data , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_x420_EncryptedData },
1414   { NULL, 0, 0, 0, NULL }
1415 };
1416
1417 static int
1418 dissect_x420_EncryptedBodyPart(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1419   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1420                                    EncryptedBodyPart_sequence, hf_index, ett_x420_EncryptedBodyPart);
1421
1422   return offset;
1423 }
1424
1425
1426 static const ber_sequence_t MessageParameters_set[] = {
1427   { &hf_x420_delivery_time  , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x411_MessageDeliveryTime },
1428   { &hf_x420_delivery_envelope, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x411_OtherMessageDeliveryFields },
1429   { NULL, 0, 0, 0, NULL }
1430 };
1431
1432 int
1433 dissect_x420_MessageParameters(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1434   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1435                               MessageParameters_set, hf_index, ett_x420_MessageParameters);
1436
1437   return offset;
1438 }
1439
1440
1441
1442 static int
1443 dissect_x420_MessageData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1444   offset = dissect_x420_IPM(implicit_tag, tvb, offset, actx, tree, hf_index);
1445
1446   return offset;
1447 }
1448
1449
1450 static const ber_sequence_t MessageBodyPart_sequence[] = {
1451   { &hf_x420_message_parameters, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x420_MessageParameters },
1452   { &hf_x420_message_data   , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x420_MessageData },
1453   { NULL, 0, 0, 0, NULL }
1454 };
1455
1456 static int
1457 dissect_x420_MessageBodyPart(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1458   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1459                                    MessageBodyPart_sequence, hf_index, ett_x420_MessageBodyPart);
1460
1461   return offset;
1462 }
1463
1464
1465 static const ber_sequence_t MixedModeBodyPart_sequence_of[1] = {
1466   { &hf_x420_MixedModeBodyPart_item, BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_x420_Interchange_Data_Element },
1467 };
1468
1469 static int
1470 dissect_x420_MixedModeBodyPart(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1471   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1472                                       MixedModeBodyPart_sequence_of, hf_index, ett_x420_MixedModeBodyPart);
1473
1474   return offset;
1475 }
1476
1477
1478
1479 static int
1480 dissect_x420_BilaterallyDefinedBodyPart(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1481   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1482                                        NULL);
1483
1484   return offset;
1485 }
1486
1487
1488
1489 static int
1490 dissect_x420_NationallyDefinedBodyPart(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1491 #line 259 "x420.cnf"
1492 /* XXX Not implemented yet */
1493
1494
1495
1496   return offset;
1497 }
1498
1499
1500 static const value_string x420_T_basic_vals[] = {
1501   {   0, "ia5-text" },
1502   {   3, "g3-facsimile" },
1503   {   4, "g4-class1" },
1504   {   5, "teletex" },
1505   {   6, "videotex" },
1506   {   8, "encrypted" },
1507   {   9, "message" },
1508   {  11, "mixed-mode" },
1509   {  14, "bilaterally-defined" },
1510   {   7, "nationally-defined" },
1511   { 0, NULL }
1512 };
1513
1514 static const ber_choice_t T_basic_choice[] = {
1515   {   0, &hf_x420_ia5_text       , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x420_IA5TextBodyPart },
1516   {   3, &hf_x420_g3_facsimile   , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_x420_G3FacsimileBodyPart },
1517   {   4, &hf_x420_g4_class1      , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_x420_G4Class1BodyPart },
1518   {   5, &hf_x420_teletex        , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_x420_TeletexBodyPart },
1519   {   6, &hf_x420_videotex       , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_x420_VideotexBodyPart },
1520   {   8, &hf_x420_encrypted_bp   , BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_x420_EncryptedBodyPart },
1521   {   9, &hf_x420_message        , BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_x420_MessageBodyPart },
1522   {  11, &hf_x420_mixed_mode     , BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_x420_MixedModeBodyPart },
1523   {  14, &hf_x420_bilaterally_defined, BER_CLASS_CON, 14, BER_FLAGS_IMPLTAG, dissect_x420_BilaterallyDefinedBodyPart },
1524   {   7, &hf_x420_nationally_defined, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_x420_NationallyDefinedBodyPart },
1525   { 0, NULL, 0, 0, 0, NULL }
1526 };
1527
1528 static int
1529 dissect_x420_T_basic(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1530   offset = dissect_ber_choice(actx, tree, tvb, offset,
1531                                  T_basic_choice, hf_index, ett_x420_T_basic,
1532                                  NULL);
1533
1534   return offset;
1535 }
1536
1537
1538
1539 static int
1540 dissect_x420_INSTANCE_OF(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1541   offset = dissect_ber_external_type(implicit_tag, tree, tvb, offset, actx, hf_index, NULL);
1542
1543   return offset;
1544 }
1545
1546
1547 static const ber_sequence_t ExtendedBodyPart_sequence[] = {
1548   { &hf_x420_extended_parameters, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_INSTANCE_OF },
1549   { &hf_x420_extended_data  , BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, BER_FLAGS_NOOWNTAG, dissect_x420_INSTANCE_OF },
1550   { NULL, 0, 0, 0, NULL }
1551 };
1552
1553 static int
1554 dissect_x420_ExtendedBodyPart(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1555   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1556                                    ExtendedBodyPart_sequence, hf_index, ett_x420_ExtendedBodyPart);
1557
1558   return offset;
1559 }
1560
1561
1562 static const value_string x420_BodyPart_vals[] = {
1563   {   0, "basic" },
1564   {   1, "extended" },
1565   { 0, NULL }
1566 };
1567
1568 static const ber_choice_t BodyPart_choice[] = {
1569   {   0, &hf_x420_basic          , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_x420_T_basic },
1570   {   1, &hf_x420_extended       , BER_CLASS_CON, 15, BER_FLAGS_IMPLTAG, dissect_x420_ExtendedBodyPart },
1571   { 0, NULL, 0, 0, 0, NULL }
1572 };
1573
1574 static int
1575 dissect_x420_BodyPart(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1576   offset = dissect_ber_choice(actx, tree, tvb, offset,
1577                                  BodyPart_choice, hf_index, ett_x420_BodyPart,
1578                                  NULL);
1579
1580   return offset;
1581 }
1582
1583
1584 static const ber_sequence_t Body_sequence_of[1] = {
1585   { &hf_x420_Body_item      , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_BodyPart },
1586 };
1587
1588 static int
1589 dissect_x420_Body(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1590   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1591                                       Body_sequence_of, hf_index, ett_x420_Body);
1592
1593   return offset;
1594 }
1595
1596
1597 static const ber_sequence_t IPM_sequence[] = {
1598   { &hf_x420_heading        , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x420_Heading },
1599   { &hf_x420_body           , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x420_Body },
1600   { NULL, 0, 0, 0, NULL }
1601 };
1602
1603 int
1604 dissect_x420_IPM(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1605 #line 220 "x420.cnf"
1606
1607  if(check_col(actx->pinfo->cinfo, COL_INFO))
1608    col_append_str(actx->pinfo->cinfo, COL_INFO, " Message");
1609
1610     offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1611                                    IPM_sequence, hf_index, ett_x420_IPM);
1612
1613
1614
1615
1616
1617   return offset;
1618 }
1619
1620
1621
1622 static int
1623 dissect_x420_SubjectIPMField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1624   offset = dissect_x420_IPMIdentifier(implicit_tag, tvb, offset, actx, tree, hf_index);
1625
1626   return offset;
1627 }
1628
1629
1630
1631 static int
1632 dissect_x420_IPNOriginatorField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1633   offset = dissect_x420_ORDescriptor(implicit_tag, tvb, offset, actx, tree, hf_index);
1634
1635   return offset;
1636 }
1637
1638
1639
1640 static int
1641 dissect_x420_IPMIntendedRecipientField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1642   offset = dissect_x420_ORDescriptor(implicit_tag, tvb, offset, actx, tree, hf_index);
1643
1644   return offset;
1645 }
1646
1647
1648
1649 static int
1650 dissect_x420_ConversionEITsField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1651   offset = dissect_x411_EncodedInformationTypes(implicit_tag, tvb, offset, actx, tree, hf_index);
1652
1653   return offset;
1654 }
1655
1656
1657 static const ber_sequence_t NotificationExtensionsField_set_of[1] = {
1658   { &hf_x420_NotificationExtensionsField_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x420_IPMSExtension },
1659 };
1660
1661 static int
1662 dissect_x420_NotificationExtensionsField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1663   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1664                                  NotificationExtensionsField_set_of, hf_index, ett_x420_NotificationExtensionsField);
1665
1666   return offset;
1667 }
1668
1669
1670 const value_string x420_NonReceiptReasonField_vals[] = {
1671   {   0, "ipm-discarded" },
1672   {   1, "ipm-auto-forwarded" },
1673   { 0, NULL }
1674 };
1675
1676
1677 int
1678 dissect_x420_NonReceiptReasonField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1679   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1680                                   NULL);
1681
1682   return offset;
1683 }
1684
1685
1686 const value_string x420_DiscardReasonField_vals[] = {
1687   {   0, "ipm-expired" },
1688   {   1, "ipm-obsoleted" },
1689   {   2, "user-subscription-terminated" },
1690   {   3, "not-used" },
1691   { 0, NULL }
1692 };
1693
1694
1695 int
1696 dissect_x420_DiscardReasonField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1697   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1698                                   NULL);
1699
1700   return offset;
1701 }
1702
1703
1704
1705 static int
1706 dissect_x420_AutoForwardComment(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1707   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
1708                                             actx, tree, tvb, offset, hf_index,
1709                                             NULL);
1710
1711   return offset;
1712 }
1713
1714
1715
1716 static int
1717 dissect_x420_AutoForwardCommentField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1718   offset = dissect_x420_AutoForwardComment(implicit_tag, tvb, offset, actx, tree, hf_index);
1719
1720   return offset;
1721 }
1722
1723
1724
1725 static int
1726 dissect_x420_ReturnedIPMField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1727   offset = dissect_x420_IPM(implicit_tag, tvb, offset, actx, tree, hf_index);
1728
1729   return offset;
1730 }
1731
1732
1733 static const ber_sequence_t NRNExtensionsField_set_of[1] = {
1734   { &hf_x420_NRNExtensionsField_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x420_IPMSExtension },
1735 };
1736
1737 static int
1738 dissect_x420_NRNExtensionsField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1739   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1740                                  NRNExtensionsField_set_of, hf_index, ett_x420_NRNExtensionsField);
1741
1742   return offset;
1743 }
1744
1745
1746 static const ber_sequence_t NonReceiptFields_set[] = {
1747   { &hf_x420_non_receipt_reason, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x420_NonReceiptReasonField },
1748   { &hf_x420_discard_reason , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_DiscardReasonField },
1749   { &hf_x420_auto_forward_comment, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_AutoForwardCommentField },
1750   { &hf_x420_returned_ipm   , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_ReturnedIPMField },
1751   { &hf_x420_nrn_extensions , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_NRNExtensionsField },
1752   { NULL, 0, 0, 0, NULL }
1753 };
1754
1755 static int
1756 dissect_x420_NonReceiptFields(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1757   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1758                               NonReceiptFields_set, hf_index, ett_x420_NonReceiptFields);
1759
1760   return offset;
1761 }
1762
1763
1764
1765 static int
1766 dissect_x420_ReceiptTimeField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1767   offset = dissect_x420_Time(implicit_tag, tvb, offset, actx, tree, hf_index);
1768
1769   return offset;
1770 }
1771
1772
1773 static const value_string x420_AcknowledgmentModeField_vals[] = {
1774   {   0, "manual" },
1775   {   1, "automatic" },
1776   { 0, NULL }
1777 };
1778
1779
1780 static int
1781 dissect_x420_AcknowledgmentModeField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1782   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1783                                   NULL);
1784
1785   return offset;
1786 }
1787
1788
1789
1790 static int
1791 dissect_x420_SupplReceiptInfoField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1792   offset = dissect_x411_SupplementaryInformation(implicit_tag, tvb, offset, actx, tree, hf_index);
1793
1794   return offset;
1795 }
1796
1797
1798 static const ber_sequence_t RNExtensionsField_set_of[1] = {
1799   { &hf_x420_RNExtensionsField_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x420_IPMSExtension },
1800 };
1801
1802 static int
1803 dissect_x420_RNExtensionsField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1804   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1805                                  RNExtensionsField_set_of, hf_index, ett_x420_RNExtensionsField);
1806
1807   return offset;
1808 }
1809
1810
1811 static const ber_sequence_t ReceiptFields_set[] = {
1812   { &hf_x420_receipt_time   , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x420_ReceiptTimeField },
1813   { &hf_x420_acknowledgment_mode, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_AcknowledgmentModeField },
1814   { &hf_x420_suppl_receipt_info, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_SupplReceiptInfoField },
1815   { &hf_x420_rn_extensions  , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_RNExtensionsField },
1816   { NULL, 0, 0, 0, NULL }
1817 };
1818
1819 static int
1820 dissect_x420_ReceiptFields(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1821   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1822                               ReceiptFields_set, hf_index, ett_x420_ReceiptFields);
1823
1824   return offset;
1825 }
1826
1827
1828 static const ber_sequence_t OtherNotificationTypeFields_set_of[1] = {
1829   { &hf_x420_OtherNotificationTypeFields_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x420_IPMSExtension },
1830 };
1831
1832 static int
1833 dissect_x420_OtherNotificationTypeFields(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1834   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1835                                  OtherNotificationTypeFields_set_of, hf_index, ett_x420_OtherNotificationTypeFields);
1836
1837   return offset;
1838 }
1839
1840
1841 static const value_string x420_T_choice_vals[] = {
1842   {   0, "non-receipt-fields" },
1843   {   1, "receipt-fields" },
1844   {   2, "other-notification-type-fields" },
1845   { 0, NULL }
1846 };
1847
1848 static const ber_choice_t T_choice_choice[] = {
1849   {   0, &hf_x420_non_receipt_fields, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x420_NonReceiptFields },
1850   {   1, &hf_x420_receipt_fields , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_x420_ReceiptFields },
1851   {   2, &hf_x420_other_notification_type_fields, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_x420_OtherNotificationTypeFields },
1852   { 0, NULL, 0, 0, 0, NULL }
1853 };
1854
1855 static int
1856 dissect_x420_T_choice(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1857   offset = dissect_ber_choice(actx, tree, tvb, offset,
1858                                  T_choice_choice, hf_index, ett_x420_T_choice,
1859                                  NULL);
1860
1861   return offset;
1862 }
1863
1864
1865 static const ber_sequence_t IPN_set[] = {
1866   { &hf_x420_subject_ipm    , BER_CLASS_APP, 11, BER_FLAGS_NOOWNTAG, dissect_x420_SubjectIPMField },
1867   { &hf_x420_ipn_originator , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_IPNOriginatorField },
1868   { &hf_x420_ipm_intended_recipient, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_IPMIntendedRecipientField },
1869   { &hf_x420_conversion_eits, BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_x420_ConversionEITsField },
1870   { &hf_x420_notification_extensions, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_NotificationExtensionsField },
1871   { &hf_x420_choice         , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x420_T_choice },
1872   { NULL, 0, 0, 0, NULL }
1873 };
1874
1875 int
1876 dissect_x420_IPN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1877 #line 228 "x420.cnf"
1878
1879  if(check_col(actx->pinfo->cinfo, COL_INFO))
1880    col_append_str(actx->pinfo->cinfo, COL_INFO, " Notification");
1881
1882     offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1883                               IPN_set, hf_index, ett_x420_IPN);
1884
1885
1886
1887
1888   return offset;
1889 }
1890
1891
1892 const value_string x420_InformationObject_vals[] = {
1893   {   0, "ipm" },
1894   {   1, "ipn" },
1895   { 0, NULL }
1896 };
1897
1898 static const ber_choice_t InformationObject_choice[] = {
1899   {   0, &hf_x420_ipm            , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x420_IPM },
1900   {   1, &hf_x420_ipn            , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_x420_IPN },
1901   { 0, NULL, 0, 0, 0, NULL }
1902 };
1903
1904 int
1905 dissect_x420_InformationObject(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1906   offset = dissect_ber_choice(actx, tree, tvb, offset,
1907                                  InformationObject_choice, hf_index, ett_x420_InformationObject,
1908                                  NULL);
1909
1910   return offset;
1911 }
1912
1913
1914 static const ber_sequence_t CommonFields_set[] = {
1915   { &hf_x420_subject_ipm    , BER_CLASS_APP, 11, BER_FLAGS_NOOWNTAG, dissect_x420_SubjectIPMField },
1916   { &hf_x420_ipn_originator , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_IPNOriginatorField },
1917   { &hf_x420_ipm_intended_recipient, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_IPMIntendedRecipientField },
1918   { &hf_x420_conversion_eits, BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_x420_ConversionEITsField },
1919   { &hf_x420_notification_extensions, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_NotificationExtensionsField },
1920   { NULL, 0, 0, 0, NULL }
1921 };
1922
1923 static int
1924 dissect_x420_CommonFields(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1925   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1926                               CommonFields_set, hf_index, ett_x420_CommonFields);
1927
1928   return offset;
1929 }
1930
1931
1932 static const ber_sequence_t AbsenceAdvice_sequence[] = {
1933   { &hf_x420_advice         , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_BodyPart },
1934   { &hf_x420_next_available , BER_CLASS_UNI, BER_UNI_TAG_UTCTime, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_x420_Time },
1935   { NULL, 0, 0, 0, NULL }
1936 };
1937
1938 static int
1939 dissect_x420_AbsenceAdvice(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1940   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1941                                    AbsenceAdvice_sequence, hf_index, ett_x420_AbsenceAdvice);
1942
1943   return offset;
1944 }
1945
1946
1947 static const ber_sequence_t ChangeOfAddressAdvice_sequence[] = {
1948   { &hf_x420_new_address    , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x420_ORDescriptor },
1949   { &hf_x420_effective_from , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_Time },
1950   { NULL, 0, 0, 0, NULL }
1951 };
1952
1953 static int
1954 dissect_x420_ChangeOfAddressAdvice(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1955   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1956                                    ChangeOfAddressAdvice_sequence, hf_index, ett_x420_ChangeOfAddressAdvice);
1957
1958   return offset;
1959 }
1960
1961
1962
1963 static int
1964 dissect_x420_INTEGER_1_MAX(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1965   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1966                                                 NULL);
1967
1968   return offset;
1969 }
1970
1971
1972
1973 static int
1974 dissect_x420_BodyPartNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1975   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1976                                                 NULL);
1977
1978   return offset;
1979 }
1980
1981
1982 static const ber_sequence_t T_stored_body_part_sequence[] = {
1983   { &hf_x420_message_entry  , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_p7_SequenceNumber },
1984   { &hf_x420_body_part_number, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_x420_BodyPartNumber },
1985   { NULL, 0, 0, 0, NULL }
1986 };
1987
1988 static int
1989 dissect_x420_T_stored_body_part(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1990   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1991                                    T_stored_body_part_sequence, hf_index, ett_x420_T_stored_body_part);
1992
1993   return offset;
1994 }
1995
1996
1997 static const value_string x420_BodyPartReference_vals[] = {
1998   {   0, "stored-entry" },
1999   {   1, "stored-content" },
2000   {   2, "submitted-body-part" },
2001   {   3, "stored-body-part" },
2002   { 0, NULL }
2003 };
2004
2005 static const ber_choice_t BodyPartReference_choice[] = {
2006   {   0, &hf_x420_stored_entry   , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p7_SequenceNumber },
2007   {   1, &hf_x420_stored_content , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_p7_SequenceNumber },
2008   {   2, &hf_x420_submitted_body_part, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_x420_INTEGER_1_MAX },
2009   {   3, &hf_x420_stored_body_part, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_x420_T_stored_body_part },
2010   { 0, NULL, 0, 0, 0, NULL }
2011 };
2012
2013 static int
2014 dissect_x420_BodyPartReference(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2015   offset = dissect_ber_choice(actx, tree, tvb, offset,
2016                                  BodyPartReference_choice, hf_index, ett_x420_BodyPartReference,
2017                                  NULL);
2018
2019   return offset;
2020 }
2021
2022
2023 static const ber_sequence_t BodyPartReferences_sequence_of[1] = {
2024   { &hf_x420_BodyPartReferences_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_BodyPartReference },
2025 };
2026
2027 static int
2028 dissect_x420_BodyPartReferences(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2029   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2030                                       BodyPartReferences_sequence_of, hf_index, ett_x420_BodyPartReferences);
2031
2032   return offset;
2033 }
2034
2035
2036 static const ber_sequence_t IPMAssemblyInstructions_set[] = {
2037   { &hf_x420_assembly_instructions, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x420_BodyPartReferences },
2038   { NULL, 0, 0, 0, NULL }
2039 };
2040
2041 static int
2042 dissect_x420_IPMAssemblyInstructions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2043   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
2044                               IPMAssemblyInstructions_set, hf_index, ett_x420_IPMAssemblyInstructions);
2045
2046   return offset;
2047 }
2048
2049
2050
2051 static int
2052 dissect_x420_IncompleteCopy(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2053   offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
2054
2055   return offset;
2056 }
2057
2058
2059
2060 static int
2061 dissect_x420_Language(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2062   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
2063                                             actx, tree, tvb, offset, hf_index,
2064                                             NULL);
2065
2066   return offset;
2067 }
2068
2069
2070 static const ber_sequence_t Languages_set_of[1] = {
2071   { &hf_x420_Languages_item , BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_x420_Language },
2072 };
2073
2074 static int
2075 dissect_x420_Languages(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2076   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
2077                                  Languages_set_of, hf_index, ett_x420_Languages);
2078
2079   return offset;
2080 }
2081
2082
2083 static const value_string x420_AutoSubmitted_vals[] = {
2084   {   0, "not-auto-submitted" },
2085   {   1, "auto-generated" },
2086   {   2, "auto-replied" },
2087   { 0, NULL }
2088 };
2089
2090
2091 static int
2092 dissect_x420_AutoSubmitted(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2093   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2094                                   NULL);
2095
2096   return offset;
2097 }
2098
2099
2100 static const ber_sequence_t Signature_sequence[] = {
2101   { &hf_x420_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
2102   { &hf_x420_encrypted      , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_x420_BIT_STRING },
2103   { NULL, 0, 0, 0, NULL }
2104 };
2105
2106 static int
2107 dissect_x420_Signature(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2108   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2109                                    Signature_sequence, hf_index, ett_x420_Signature);
2110
2111   return offset;
2112 }
2113
2114
2115
2116 static int
2117 dissect_x420_BodyPartSignature(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2118   offset = dissect_x420_Signature(implicit_tag, tvb, offset, actx, tree, hf_index);
2119
2120   return offset;
2121 }
2122
2123
2124 static const ber_sequence_t BodyPartSignatures_item_set[] = {
2125   { &hf_x420_body_part_number, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_x420_BodyPartNumber },
2126   { &hf_x420_body_part_signature, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x420_BodyPartSignature },
2127   { &hf_x420_originator_certificate_selector, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x509ce_CertificateAssertion },
2128   { &hf_x420_originator_certificates, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x411_ExtendedCertificates },
2129   { NULL, 0, 0, 0, NULL }
2130 };
2131
2132 static int
2133 dissect_x420_BodyPartSignatures_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2134   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
2135                               BodyPartSignatures_item_set, hf_index, ett_x420_BodyPartSignatures_item);
2136
2137   return offset;
2138 }
2139
2140
2141 static const ber_sequence_t BodyPartSignatures_set_of[1] = {
2142   { &hf_x420_BodyPartSignatures_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x420_BodyPartSignatures_item },
2143 };
2144
2145 static int
2146 dissect_x420_BodyPartSignatures(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2147   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
2148                                  BodyPartSignatures_set_of, hf_index, ett_x420_BodyPartSignatures);
2149
2150   return offset;
2151 }
2152
2153
2154
2155 static int
2156 dissect_x420_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2157   offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
2158
2159   return offset;
2160 }
2161
2162
2163 static const value_string x420_BodyPartSecurityLabel_vals[] = {
2164   {   0, "body-part-unlabelled" },
2165   {   1, "body-part-security-label" },
2166   { 0, NULL }
2167 };
2168
2169 static const ber_choice_t BodyPartSecurityLabel_choice[] = {
2170   {   0, &hf_x420_body_part_unlabelled, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x420_NULL },
2171   {   1, &hf_x420_body_part_security_label, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_x411_SecurityLabel },
2172   { 0, NULL, 0, 0, 0, NULL }
2173 };
2174
2175 static int
2176 dissect_x420_BodyPartSecurityLabel(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2177   offset = dissect_ber_choice(actx, tree, tvb, offset,
2178                                  BodyPartSecurityLabel_choice, hf_index, ett_x420_BodyPartSecurityLabel,
2179                                  NULL);
2180
2181   return offset;
2182 }
2183
2184
2185 static const ber_sequence_t SEQUENCE_OF_BodyPartSecurityLabel_sequence_of[1] = {
2186   { &hf_x420_body_part_security_labels_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_BodyPartSecurityLabel },
2187 };
2188
2189 static int
2190 dissect_x420_SEQUENCE_OF_BodyPartSecurityLabel(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2191   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2192                                       SEQUENCE_OF_BodyPartSecurityLabel_sequence_of, hf_index, ett_x420_SEQUENCE_OF_BodyPartSecurityLabel);
2193
2194   return offset;
2195 }
2196
2197
2198 static const ber_sequence_t IPMSecurityLabel_sequence[] = {
2199   { &hf_x420_content_security_label, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x411_SecurityLabel },
2200   { &hf_x420_heading_security_label, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x411_SecurityLabel },
2201   { &hf_x420_body_part_security_labels, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_SEQUENCE_OF_BodyPartSecurityLabel },
2202   { NULL, 0, 0, 0, NULL }
2203 };
2204
2205 static int
2206 dissect_x420_IPMSecurityLabel(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2207   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2208                                    IPMSecurityLabel_sequence, hf_index, ett_x420_IPMSecurityLabel);
2209
2210   return offset;
2211 }
2212
2213
2214
2215 static int
2216 dissect_x420_AuthorizationTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2217   offset = dissect_ber_GeneralizedTime(implicit_tag, actx, tree, tvb, offset, hf_index);
2218
2219   return offset;
2220 }
2221
2222
2223
2224 static int
2225 dissect_x420_CirculationTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2226   offset = dissect_ber_GeneralizedTime(implicit_tag, actx, tree, tvb, offset, hf_index);
2227
2228   return offset;
2229 }
2230
2231
2232
2233 static int
2234 dissect_x420_CirculationSignatureAlgorithmIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2235   offset = dissect_x509af_AlgorithmIdentifier(implicit_tag, tvb, offset, actx, tree, hf_index);
2236
2237   return offset;
2238 }
2239
2240
2241 static const ber_sequence_t CirculationSignatureData_sequence[] = {
2242   { &hf_x420_circulation_signature_algorithm_identifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x420_CirculationSignatureAlgorithmIdentifier },
2243   { &hf_x420_this_IPM       , BER_CLASS_APP, 11, BER_FLAGS_NOOWNTAG, dissect_x420_ThisIPMField },
2244   { &hf_x420_timestamp      , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_x420_CirculationTime },
2245   { NULL, 0, 0, 0, NULL }
2246 };
2247
2248 static int
2249 dissect_x420_CirculationSignatureData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2250   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2251                                    CirculationSignatureData_sequence, hf_index, ett_x420_CirculationSignatureData);
2252
2253   return offset;
2254 }
2255
2256
2257 static const ber_sequence_t CirculationSignature_sequence[] = {
2258   { &hf_x420_circulation_signature_data, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x420_CirculationSignatureData },
2259   { &hf_x420_algorithm_identifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
2260   { &hf_x420_encrypted      , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_x420_BIT_STRING },
2261   { NULL, 0, 0, 0, NULL }
2262 };
2263
2264 static int
2265 dissect_x420_CirculationSignature(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2266   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2267                                    CirculationSignature_sequence, hf_index, ett_x420_CirculationSignature);
2268
2269   return offset;
2270 }
2271
2272
2273 static const value_string x420_Checkmark_vals[] = {
2274   {   0, "simple" },
2275   {   1, "timestamped" },
2276   {   2, "signed" },
2277   { 0, NULL }
2278 };
2279
2280 static const ber_choice_t Checkmark_choice[] = {
2281   {   0, &hf_x420_simple         , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_x420_NULL },
2282   {   1, &hf_x420_timestamped    , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_x420_CirculationTime },
2283   {   2, &hf_x420_signed         , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x420_CirculationSignature },
2284   { 0, NULL, 0, 0, 0, NULL }
2285 };
2286
2287 static int
2288 dissect_x420_Checkmark(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2289   offset = dissect_ber_choice(actx, tree, tvb, offset,
2290                                  Checkmark_choice, hf_index, ett_x420_Checkmark,
2291                                  NULL);
2292
2293   return offset;
2294 }
2295
2296
2297 static const ber_sequence_t CirculationMember_set[] = {
2298   { &hf_x420_circulation_recipient, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x420_RecipientSpecifier },
2299   { &hf_x420_checked        , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_Checkmark },
2300   { NULL, 0, 0, 0, NULL }
2301 };
2302
2303 static int
2304 dissect_x420_CirculationMember(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2305   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
2306                               CirculationMember_set, hf_index, ett_x420_CirculationMember);
2307
2308   return offset;
2309 }
2310
2311
2312 static const ber_sequence_t CirculationList_sequence_of[1] = {
2313   { &hf_x420_CirculationList_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x420_CirculationMember },
2314 };
2315
2316 static int
2317 dissect_x420_CirculationList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2318   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2319                                       CirculationList_sequence_of, hf_index, ett_x420_CirculationList);
2320
2321   return offset;
2322 }
2323
2324
2325
2326 static int
2327 dissect_x420_CirculationListIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2328   offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
2329
2330   return offset;
2331 }
2332
2333
2334
2335 static int
2336 dissect_x420_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2337   offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
2338
2339   return offset;
2340 }
2341
2342
2343
2344 static int
2345 dissect_x420_AlphaCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2346   offset = dissect_x411_UniversalOrBMPString(implicit_tag, tvb, offset, actx, tree, hf_index);
2347
2348   return offset;
2349 }
2350
2351
2352 static const ber_sequence_t DistributionCode_sequence[] = {
2353   { &hf_x420_oid_code       , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_x420_OBJECT_IDENTIFIER },
2354   { &hf_x420_alphanumeric_code, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_x420_AlphaCode },
2355   { &hf_x420_or_descriptor  , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_ORDescriptor },
2356   { NULL, 0, 0, 0, NULL }
2357 };
2358
2359 static int
2360 dissect_x420_DistributionCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2361   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2362                                    DistributionCode_sequence, hf_index, ett_x420_DistributionCode);
2363
2364   return offset;
2365 }
2366
2367
2368 static const ber_sequence_t DistributionCodes_sequence_of[1] = {
2369   { &hf_x420_DistributionCodes_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x420_DistributionCode },
2370 };
2371
2372 static int
2373 dissect_x420_DistributionCodes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2374   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2375                                       DistributionCodes_sequence_of, hf_index, ett_x420_DistributionCodes);
2376
2377   return offset;
2378 }
2379
2380
2381
2382 static int
2383 dissect_x420_ExtendedSubject(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2384   offset = dissect_x411_UniversalOrBMPString(implicit_tag, tvb, offset, actx, tree, hf_index);
2385
2386   return offset;
2387 }
2388
2389
2390
2391 static int
2392 dissect_x420_DescriptionString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2393   offset = dissect_x411_UniversalOrBMPString(implicit_tag, tvb, offset, actx, tree, hf_index);
2394
2395   return offset;
2396 }
2397
2398
2399 static const ber_sequence_t InformationCategory_sequence[] = {
2400   { &hf_x420_reference      , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_OBJECT_IDENTIFIER },
2401   { &hf_x420_description    , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_DescriptionString },
2402   { NULL, 0, 0, 0, NULL }
2403 };
2404
2405 static int
2406 dissect_x420_InformationCategory(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2407   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2408                                    InformationCategory_sequence, hf_index, ett_x420_InformationCategory);
2409
2410   return offset;
2411 }
2412
2413
2414 static const ber_sequence_t InformationCategories_sequence_of[1] = {
2415   { &hf_x420_InformationCategories_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x420_InformationCategory },
2416 };
2417
2418 static int
2419 dissect_x420_InformationCategories(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2420   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2421                                       InformationCategories_sequence_of, hf_index, ett_x420_InformationCategories);
2422
2423   return offset;
2424 }
2425
2426
2427
2428 static int
2429 dissect_x420_ManualHandlingInstruction(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2430   offset = dissect_x411_UniversalOrBMPString(implicit_tag, tvb, offset, actx, tree, hf_index);
2431
2432   return offset;
2433 }
2434
2435
2436 static const ber_sequence_t ManualHandlingInstructions_sequence_of[1] = {
2437   { &hf_x420_ManualHandlingInstructions_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x420_ManualHandlingInstruction },
2438 };
2439
2440 static int
2441 dissect_x420_ManualHandlingInstructions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2442   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2443                                       ManualHandlingInstructions_sequence_of, hf_index, ett_x420_ManualHandlingInstructions);
2444
2445   return offset;
2446 }
2447
2448
2449
2450 static int
2451 dissect_x420_OriginatorsReference(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2452   offset = dissect_x411_UniversalOrBMPString(implicit_tag, tvb, offset, actx, tree, hf_index);
2453
2454   return offset;
2455 }
2456
2457
2458
2459 static int
2460 dissect_x420_PrecedencePolicyIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2461   offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
2462
2463   return offset;
2464 }
2465
2466
2467
2468 static int
2469 dissect_x420_Precedence(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2470   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2471                                                 NULL);
2472
2473   return offset;
2474 }
2475
2476
2477
2478 static int
2479 dissect_x420_CharacterSetRegistration(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2480 #line 249 "x420.cnf"
2481   guint32 crs;
2482     offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2483                                                 &crs);
2484
2485
2486   if(actx->created_item)
2487     proto_item_append_text(actx->created_item, " (%s)", val_to_str(crs, charsetreg_vals, "unknown"));
2488
2489
2490
2491   return offset;
2492 }
2493
2494
2495 static const ber_sequence_t GeneralTextParameters_set_of[1] = {
2496   { &hf_x420_GeneralTextParameters_item, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_x420_CharacterSetRegistration },
2497 };
2498
2499 static int
2500 dissect_x420_GeneralTextParameters(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2501   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
2502                                  GeneralTextParameters_set_of, hf_index, ett_x420_GeneralTextParameters);
2503
2504   return offset;
2505 }
2506
2507
2508
2509 static int
2510 dissect_x420_GeneralTextData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2511   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_GeneralString,
2512                                             actx, tree, tvb, offset, hf_index,
2513                                             NULL);
2514
2515   return offset;
2516 }
2517
2518
2519 static const value_string x420_Pathname_Attribute_vals[] = {
2520   {   0, "incomplete-pathname" },
2521   {  23, "complete-pathname" },
2522   { 0, NULL }
2523 };
2524
2525 static const ber_choice_t Pathname_Attribute_choice[] = {
2526   {   0, &hf_x420_incomplete_pathname, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ftam_Pathname },
2527   {  23, &hf_x420_complete_pathname, BER_CLASS_CON, 23, BER_FLAGS_IMPLTAG, dissect_ftam_Pathname },
2528   { 0, NULL, 0, 0, 0, NULL }
2529 };
2530
2531 static int
2532 dissect_x420_Pathname_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2533   offset = dissect_ber_choice(actx, tree, tvb, offset,
2534                                  Pathname_Attribute_choice, hf_index, ett_x420_Pathname_Attribute,
2535                                  NULL);
2536
2537   return offset;
2538 }
2539
2540
2541
2542 static int
2543 dissect_x420_GraphicString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2544   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_GraphicString,
2545                                             actx, tree, tvb, offset, hf_index,
2546                                             NULL);
2547
2548   return offset;
2549 }
2550
2551
2552 static const ber_sequence_t PathnameandVersion_sequence[] = {
2553   { &hf_x420_pathname       , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_Pathname_Attribute },
2554   { &hf_x420_file_version   , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_GraphicString },
2555   { NULL, 0, 0, 0, NULL }
2556 };
2557
2558 static int
2559 dissect_x420_PathnameandVersion(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2560   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2561                                    PathnameandVersion_sequence, hf_index, ett_x420_PathnameandVersion);
2562
2563   return offset;
2564 }
2565
2566
2567
2568 static int
2569 dissect_x420_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2570   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
2571                                        NULL);
2572
2573   return offset;
2574 }
2575
2576
2577
2578 static int
2579 dissect_x420_PrintableString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2580   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
2581                                             actx, tree, tvb, offset, hf_index,
2582                                             NULL);
2583
2584   return offset;
2585 }
2586
2587
2588 static const ber_sequence_t MessageReference_set[] = {
2589   { &hf_x420_user           , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x411_ORName },
2590   { &hf_x420_user_relative_identifier_ref, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_x420_PrintableString },
2591   { NULL, 0, 0, 0, NULL }
2592 };
2593
2594 static int
2595 dissect_x420_MessageReference(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2596   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
2597                               MessageReference_set, hf_index, ett_x420_MessageReference);
2598
2599   return offset;
2600 }
2601
2602
2603 static const ber_sequence_t CrossReference_sequence[] = {
2604   { &hf_x420_application_cross_reference, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x420_OCTET_STRING },
2605   { &hf_x420_message_reference, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_MessageReference },
2606   { &hf_x420_body_part_reference, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_INTEGER },
2607   { NULL, 0, 0, 0, NULL }
2608 };
2609
2610 static int
2611 dissect_x420_CrossReference(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2612   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2613                                    CrossReference_sequence, hf_index, ett_x420_CrossReference);
2614
2615   return offset;
2616 }
2617
2618
2619 static const value_string x420_FileIdentifier_vals[] = {
2620   {   0, "pathname-and-version" },
2621   {   1, "cross-reference" },
2622   { 0, NULL }
2623 };
2624
2625 static const ber_choice_t FileIdentifier_choice[] = {
2626   {   0, &hf_x420_pathname_and_version, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x420_PathnameandVersion },
2627   {   1, &hf_x420_cross_reference, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_x420_CrossReference },
2628   { 0, NULL, 0, 0, 0, NULL }
2629 };
2630
2631 static int
2632 dissect_x420_FileIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2633   offset = dissect_ber_choice(actx, tree, tvb, offset,
2634                                  FileIdentifier_choice, hf_index, ett_x420_FileIdentifier,
2635                                  NULL);
2636
2637   return offset;
2638 }
2639
2640
2641 static const value_string x420_ExplicitRelationship_vals[] = {
2642   {   0, "unspecified" },
2643   {   1, "new-file" },
2644   {   2, "replacement" },
2645   {   3, "extension" },
2646   { 0, NULL }
2647 };
2648
2649
2650 static int
2651 dissect_x420_ExplicitRelationship(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2652   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2653                                                 NULL);
2654
2655   return offset;
2656 }
2657
2658
2659 static const value_string x420_Relationship_vals[] = {
2660   {   0, "explicit-relationship" },
2661   {   1, "descriptive-relationship" },
2662   { 0, NULL }
2663 };
2664
2665 static const ber_choice_t Relationship_choice[] = {
2666   {   0, &hf_x420_explicit_relationship, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x420_ExplicitRelationship },
2667   {   1, &hf_x420_descriptive_relationship, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_x420_GraphicString },
2668   { 0, NULL, 0, 0, 0, NULL }
2669 };
2670
2671 static int
2672 dissect_x420_Relationship(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2673   offset = dissect_ber_choice(actx, tree, tvb, offset,
2674                                  Relationship_choice, hf_index, ett_x420_Relationship,
2675                                  NULL);
2676
2677   return offset;
2678 }
2679
2680
2681 static const ber_sequence_t RelatedStoredFile_item_sequence[] = {
2682   { &hf_x420_file_identifier, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_FileIdentifier },
2683   { &hf_x420_relationship   , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_Relationship },
2684   { NULL, 0, 0, 0, NULL }
2685 };
2686
2687 static int
2688 dissect_x420_RelatedStoredFile_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2689   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2690                                    RelatedStoredFile_item_sequence, hf_index, ett_x420_RelatedStoredFile_item);
2691
2692   return offset;
2693 }
2694
2695
2696 static const ber_sequence_t RelatedStoredFile_set_of[1] = {
2697   { &hf_x420_RelatedStoredFile_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x420_RelatedStoredFile_item },
2698 };
2699
2700 static int
2701 dissect_x420_RelatedStoredFile(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2702   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
2703                                  RelatedStoredFile_set_of, hf_index, ett_x420_RelatedStoredFile);
2704
2705   return offset;
2706 }
2707
2708
2709
2710 static int
2711 dissect_x420_Document_Type_Name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2712   offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
2713
2714   return offset;
2715 }
2716
2717
2718
2719 static int
2720 dissect_x420_T_parameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2721 #line 262 "x420.cnf"
2722 /* XXX: Not implemented yet */
2723
2724
2725
2726   return offset;
2727 }
2728
2729
2730 static const ber_sequence_t T_document_type_sequence[] = {
2731   { &hf_x420_document_type_name, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x420_Document_Type_Name },
2732   { &hf_x420_parameter      , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_T_parameter },
2733   { NULL, 0, 0, 0, NULL }
2734 };
2735
2736 static int
2737 dissect_x420_T_document_type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2738   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2739                                    T_document_type_sequence, hf_index, ett_x420_T_document_type);
2740
2741   return offset;
2742 }
2743
2744
2745
2746 static int
2747 dissect_x420_Constraint_Set_Name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2748   offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
2749
2750   return offset;
2751 }
2752
2753
2754
2755 static int
2756 dissect_x420_Abstract_Syntax_Name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2757   offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
2758
2759   return offset;
2760 }
2761
2762
2763 static const ber_sequence_t T_constraint_set_and_abstract_syntax_sequence[] = {
2764   { &hf_x420_constraint_set_name, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x420_Constraint_Set_Name },
2765   { &hf_x420_abstract_syntax_name, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x420_Abstract_Syntax_Name },
2766   { NULL, 0, 0, 0, NULL }
2767 };
2768
2769 static int
2770 dissect_x420_T_constraint_set_and_abstract_syntax(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2771   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2772                                    T_constraint_set_and_abstract_syntax_sequence, hf_index, ett_x420_T_constraint_set_and_abstract_syntax);
2773
2774   return offset;
2775 }
2776
2777
2778 static const value_string x420_Contents_Type_Attribute_vals[] = {
2779   {   0, "document-type" },
2780   {   1, "constraint-set-and-abstract-syntax" },
2781   { 0, NULL }
2782 };
2783
2784 static const ber_choice_t Contents_Type_Attribute_choice[] = {
2785   {   0, &hf_x420_document_type  , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x420_T_document_type },
2786   {   1, &hf_x420_constraint_set_and_abstract_syntax, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_x420_T_constraint_set_and_abstract_syntax },
2787   { 0, NULL, 0, 0, 0, NULL }
2788 };
2789
2790 static int
2791 dissect_x420_Contents_Type_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2792   offset = dissect_ber_choice(actx, tree, tvb, offset,
2793                                  Contents_Type_Attribute_choice, hf_index, ett_x420_Contents_Type_Attribute,
2794                                  NULL);
2795
2796   return offset;
2797 }
2798
2799
2800
2801 static int
2802 dissect_x420_ContentsTypeParameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2803   offset = dissect_x420_Contents_Type_Attribute(implicit_tag, tvb, offset, actx, tree, hf_index);
2804
2805   return offset;
2806 }
2807
2808
2809 static const ber_sequence_t T_descriptive_identifier_sequence_of[1] = {
2810   { &hf_x420_descriptive_identifier_item, BER_CLASS_UNI, BER_UNI_TAG_GraphicString, BER_FLAGS_NOOWNTAG, dissect_x420_GraphicString },
2811 };
2812
2813 static int
2814 dissect_x420_T_descriptive_identifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2815   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2816                                       T_descriptive_identifier_sequence_of, hf_index, ett_x420_T_descriptive_identifier);
2817
2818   return offset;
2819 }
2820
2821
2822 static const value_string x420_GeneralIdentifier_vals[] = {
2823   {   0, "registered-identifier" },
2824   {   1, "descriptive-identifier" },
2825   { 0, NULL }
2826 };
2827
2828 static const ber_choice_t GeneralIdentifier_choice[] = {
2829   {   0, &hf_x420_registered_identifier, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x420_OBJECT_IDENTIFIER },
2830   {   1, &hf_x420_descriptive_identifier, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_x420_T_descriptive_identifier },
2831   { 0, NULL, 0, 0, 0, NULL }
2832 };
2833
2834 static int
2835 dissect_x420_GeneralIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2836   offset = dissect_ber_choice(actx, tree, tvb, offset,
2837                                  GeneralIdentifier_choice, hf_index, ett_x420_GeneralIdentifier,
2838                                  NULL);
2839
2840   return offset;
2841 }
2842
2843
2844 static const ber_sequence_t T_user_visible_string_sequence_of[1] = {
2845   { &hf_x420_user_visible_string_item, BER_CLASS_UNI, BER_UNI_TAG_GraphicString, BER_FLAGS_NOOWNTAG, dissect_x420_GraphicString },
2846 };
2847
2848 static int
2849 dissect_x420_T_user_visible_string(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2850   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2851                                       T_user_visible_string_sequence_of, hf_index, ett_x420_T_user_visible_string);
2852
2853   return offset;
2854 }
2855
2856
2857 static const ber_sequence_t EnvironmentParameter_sequence[] = {
2858   { &hf_x420_application_reference, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_GeneralIdentifier },
2859   { &hf_x420_machine        , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_GeneralIdentifier },
2860   { &hf_x420_operating_system, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_OBJECT_IDENTIFIER },
2861   { &hf_x420_user_visible_string, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_T_user_visible_string },
2862   { NULL, 0, 0, 0, NULL }
2863 };
2864
2865 static int
2866 dissect_x420_EnvironmentParameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2867   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2868                                    EnvironmentParameter_sequence, hf_index, ett_x420_EnvironmentParameter);
2869
2870   return offset;
2871 }
2872
2873
2874
2875 static int
2876 dissect_x420_T_compression_algorithm_id(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2877 #line 265 "x420.cnf"
2878     offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_index, &object_identifier_id);
2879
2880
2881
2882   return offset;
2883 }
2884
2885
2886
2887 static int
2888 dissect_x420_T_compression_algorithm_param(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2889 #line 268 "x420.cnf"
2890 /* XXX: Not implemented yet */
2891
2892
2893
2894   return offset;
2895 }
2896
2897
2898 static const ber_sequence_t CompressionParameter_sequence[] = {
2899   { &hf_x420_compression_algorithm_id, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x420_T_compression_algorithm_id },
2900   { &hf_x420_compression_algorithm_param, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_x420_T_compression_algorithm_param },
2901   { NULL, 0, 0, 0, NULL }
2902 };
2903
2904 static int
2905 dissect_x420_CompressionParameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2906   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2907                                    CompressionParameter_sequence, hf_index, ett_x420_CompressionParameter);
2908
2909   return offset;
2910 }
2911
2912
2913
2914 static int
2915 dissect_x420_Account(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2916   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_GraphicString,
2917                                             actx, tree, tvb, offset, hf_index,
2918                                             NULL);
2919
2920   return offset;
2921 }
2922
2923
2924 static const value_string x420_Account_Attribute_vals[] = {
2925   {   0, "no-value-available" },
2926   {   1, "actual-values" },
2927   { 0, NULL }
2928 };
2929
2930 static const ber_choice_t Account_Attribute_choice[] = {
2931   {   0, &hf_x420_no_value_available, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x420_NULL },
2932   {   1, &hf_x420_account_actual_values, BER_CLASS_UNI, BER_UNI_TAG_GraphicString, BER_FLAGS_NOOWNTAG, dissect_x420_Account },
2933   { 0, NULL, 0, 0, 0, NULL }
2934 };
2935
2936 static int
2937 dissect_x420_Account_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2938   offset = dissect_ber_choice(actx, tree, tvb, offset,
2939                                  Account_Attribute_choice, hf_index, ett_x420_Account_Attribute,
2940                                  NULL);
2941
2942   return offset;
2943 }
2944
2945
2946
2947 static int
2948 dissect_x420_User_Identity(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2949   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_GraphicString,
2950                                             actx, tree, tvb, offset, hf_index,
2951                                             NULL);
2952
2953   return offset;
2954 }
2955
2956
2957 static const value_string x420_User_Identity_Attribute_vals[] = {
2958   {   0, "no-value-available" },
2959   {   1, "actual-values" },
2960   { 0, NULL }
2961 };
2962
2963 static const ber_choice_t User_Identity_Attribute_choice[] = {
2964   {   0, &hf_x420_no_value_available, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x420_NULL },
2965   {   1, &hf_x420_identity_actual_values, BER_CLASS_UNI, BER_UNI_TAG_GraphicString, BER_FLAGS_NOOWNTAG, dissect_x420_User_Identity },
2966   { 0, NULL, 0, 0, 0, NULL }
2967 };
2968
2969 static int
2970 dissect_x420_User_Identity_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2971   offset = dissect_ber_choice(actx, tree, tvb, offset,
2972                                  User_Identity_Attribute_choice, hf_index, ett_x420_User_Identity_Attribute,
2973                                  NULL);
2974
2975   return offset;
2976 }
2977
2978
2979 static const asn_namedbit Access_Request_bits[] = {
2980   {  0, &hf_x420_Access_Request_read, -1, -1, "read", NULL },
2981   {  1, &hf_x420_Access_Request_insert, -1, -1, "insert", NULL },
2982   {  2, &hf_x420_Access_Request_replace, -1, -1, "replace", NULL },
2983   {  3, &hf_x420_Access_Request_extend, -1, -1, "extend", NULL },
2984   {  4, &hf_x420_Access_Request_erase, -1, -1, "erase", NULL },
2985   {  5, &hf_x420_Access_Request_read_attribute, -1, -1, "read-attribute", NULL },
2986   {  6, &hf_x420_Access_Request_change_attribute, -1, -1, "change-attribute", NULL },
2987   {  7, &hf_x420_Access_Request_delete_object, -1, -1, "delete-object", NULL },
2988   { 0, NULL, 0, 0, NULL, NULL }
2989 };
2990
2991 static int
2992 dissect_x420_Access_Request(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2993   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
2994                                     Access_Request_bits, hf_index, ett_x420_Access_Request,
2995                                     NULL);
2996
2997   return offset;
2998 }
2999
3000
3001 static const value_string x420_Password_vals[] = {
3002   {   0, "graphic-string" },
3003   {   1, "octet-string" },
3004   { 0, NULL }
3005 };
3006
3007 static const ber_choice_t Password_choice[] = {
3008   {   0, &hf_x420_graphic_string , BER_CLASS_UNI, BER_UNI_TAG_GraphicString, BER_FLAGS_NOOWNTAG, dissect_x420_GraphicString },
3009   {   1, &hf_x420_octet_string   , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_x420_OCTET_STRING },
3010   { 0, NULL, 0, 0, 0, NULL }
3011 };
3012
3013 static int
3014 dissect_x420_Password(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3015   offset = dissect_ber_choice(actx, tree, tvb, offset,
3016                                  Password_choice, hf_index, ett_x420_Password,
3017                                  NULL);
3018
3019   return offset;
3020 }
3021
3022
3023 static const ber_sequence_t Pass_Passwords_sequence_of[1] = {
3024   { &hf_x420_Pass_Passwords_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_Password },
3025 };
3026
3027 static int
3028 dissect_x420_Pass_Passwords(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3029   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3030                                       Pass_Passwords_sequence_of, hf_index, ett_x420_Pass_Passwords);
3031
3032   return offset;
3033 }
3034
3035
3036 static const ber_sequence_t Access_Passwords_sequence[] = {
3037   { &hf_x420_read_password  , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_Password },
3038   { &hf_x420_insert_password, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_Password },
3039   { &hf_x420_replace_password, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_Password },
3040   { &hf_x420_extend_password, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_Password },
3041   { &hf_x420_erase_password , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_Password },
3042   { &hf_x420_read_attribute_password, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_Password },
3043   { &hf_x420_change_attribute_password, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_Password },
3044   { &hf_x420_delete_password, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_Password },
3045   { &hf_x420_pass_passwords , BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_x420_Pass_Passwords },
3046   { &hf_x420_link_password  , BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_Password },
3047   { NULL, 0, 0, 0, NULL }
3048 };
3049
3050 static int
3051 dissect_x420_Access_Passwords(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3052   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3053                                    Access_Passwords_sequence, hf_index, ett_x420_Access_Passwords);
3054
3055   return offset;
3056 }
3057
3058
3059 static const ber_sequence_t Application_Entity_Title_sequence[] = {
3060   { &hf_x420_ap_title       , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_acse_AP_title },
3061   { &hf_x420_ae_qualifier   , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_acse_AE_qualifier },
3062   { NULL, 0, 0, 0, NULL }
3063 };
3064
3065 static int
3066 dissect_x420_Application_Entity_Title(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3067   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3068                                    Application_Entity_Title_sequence, hf_index, ett_x420_Application_Entity_Title);
3069
3070   return offset;
3071 }
3072
3073
3074 static const ber_sequence_t Access_Control_Element_sequence[] = {
3075   { &hf_x420_action_list    , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x420_Access_Request },
3076   { &hf_x420_concurrency_access, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ftam_Concurrency_Access },
3077   { &hf_x420_identity       , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_User_Identity },
3078   { &hf_x420_passwords      , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_Access_Passwords },
3079   { &hf_x420_location       , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_Application_Entity_Title },
3080   { NULL, 0, 0, 0, NULL }
3081 };
3082
3083 static int
3084 dissect_x420_Access_Control_Element(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3085   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3086                                    Access_Control_Element_sequence, hf_index, ett_x420_Access_Control_Element);
3087
3088   return offset;
3089 }
3090
3091
3092 static const ber_sequence_t SET_OF_Access_Control_Element_set_of[1] = {
3093   { &hf_x420_actual_values_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x420_Access_Control_Element },
3094 };
3095
3096 static int
3097 dissect_x420_SET_OF_Access_Control_Element(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3098   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
3099                                  SET_OF_Access_Control_Element_set_of, hf_index, ett_x420_SET_OF_Access_Control_Element);
3100
3101   return offset;
3102 }
3103
3104
3105 static const value_string x420_Access_Control_Attribute_vals[] = {
3106   {   0, "no-value-available" },
3107   {   1, "actual-values" },
3108   { 0, NULL }
3109 };
3110
3111 static const ber_choice_t Access_Control_Attribute_choice[] = {
3112   {   0, &hf_x420_no_value_available, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x420_NULL },
3113   {   1, &hf_x420_actual_values  , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_x420_SET_OF_Access_Control_Element },
3114   { 0, NULL, 0, 0, 0, NULL }
3115 };
3116
3117 static int
3118 dissect_x420_Access_Control_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3119   offset = dissect_ber_choice(actx, tree, tvb, offset,
3120                                  Access_Control_Attribute_choice, hf_index, ett_x420_Access_Control_Attribute,
3121                                  NULL);
3122
3123   return offset;
3124 }
3125
3126
3127 static const ber_sequence_t FileAttributes_sequence[] = {
3128   { &hf_x420_pathname       , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_Pathname_Attribute },
3129   { &hf_x420_permitted_actions, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ftam_Permitted_Actions_Attribute },
3130   { &hf_x420_storage_account, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_Account_Attribute },
3131   { &hf_x420_date_and_time_of_creation, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ftam_Date_and_Time_Attribute },
3132   { &hf_x420_date_and_time_of_last_modification, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ftam_Date_and_Time_Attribute },
3133   { &hf_x420_date_and_time_of_last_read_access, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ftam_Date_and_Time_Attribute },
3134   { &hf_x420_date_and_time_of_last_attribute_modification, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ftam_Date_and_Time_Attribute },
3135   { &hf_x420_identity_of_creator, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_User_Identity_Attribute },
3136   { &hf_x420_identity_of_last_modifier, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_User_Identity_Attribute },
3137   { &hf_x420_identity_of_last_reader, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_User_Identity_Attribute },
3138   { &hf_x420_identity_of_last_attribute_modifier, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_User_Identity_Attribute },
3139   { &hf_x420_object_availability, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ftam_Object_Availability_Attribute },
3140   { &hf_x420_object_size    , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ftam_Object_Size_Attribute },
3141   { &hf_x420_future_object_size, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ftam_Object_Size_Attribute },
3142   { &hf_x420_access_control , BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_Access_Control_Attribute },
3143   { &hf_x420_legal_qualifications, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ftam_Legal_Qualification_Attribute },
3144   { &hf_x420_private_use    , BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ftam_Private_Use_Attribute },
3145   { &hf_x420_attribute_extensions, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ftam_Attribute_Extensions },
3146   { NULL, 0, 0, 0, NULL }
3147 };
3148
3149 static int
3150 dissect_x420_FileAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3151   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3152                                    FileAttributes_sequence, hf_index, ett_x420_FileAttributes);
3153
3154   return offset;
3155 }
3156
3157
3158 static const ber_sequence_t FileTransferParameters_sequence[] = {
3159   { &hf_x420_related_stored_file, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_RelatedStoredFile },
3160   { &hf_x420_contents_type  , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_ContentsTypeParameter },
3161   { &hf_x420_environment    , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_EnvironmentParameter },
3162   { &hf_x420_compression    , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_CompressionParameter },
3163   { &hf_x420_file_attributes, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_FileAttributes },
3164   { &hf_x420_extensions     , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_ExtensionsField },
3165   { NULL, 0, 0, 0, NULL }
3166 };
3167
3168 static int
3169 dissect_x420_FileTransferParameters(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3170   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3171                                    FileTransferParameters_sequence, hf_index, ett_x420_FileTransferParameters);
3172
3173   return offset;
3174 }
3175
3176
3177
3178 static int
3179 dissect_x420_EXTERNAL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3180   offset = dissect_ber_external_type(implicit_tag, tree, tvb, offset, actx, hf_index, NULL);
3181
3182   return offset;
3183 }
3184
3185
3186 static const ber_sequence_t FileTransferData_sequence_of[1] = {
3187   { &hf_x420_FileTransferData_item, BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, BER_FLAGS_NOOWNTAG, dissect_x420_EXTERNAL },
3188 };
3189
3190 static int
3191 dissect_x420_FileTransferData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3192   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3193                                       FileTransferData_sequence_of, hf_index, ett_x420_FileTransferData);
3194
3195   return offset;
3196 }
3197
3198
3199
3200 static int
3201 dissect_x420_IA5String(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3202   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
3203                                             actx, tree, tvb, offset, hf_index,
3204                                             NULL);
3205
3206   return offset;
3207 }
3208
3209
3210 static const ber_sequence_t VoiceParameters_sequence[] = {
3211   { &hf_x420_voice_message_duration, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_INTEGER },
3212   { &hf_x420_voice_encoding_type, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_x420_OBJECT_IDENTIFIER },
3213   { &hf_x420_supplementary_information, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_IA5String },
3214   { NULL, 0, 0, 0, NULL }
3215 };
3216
3217 static int
3218 dissect_x420_VoiceParameters(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3219   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3220                                    VoiceParameters_sequence, hf_index, ett_x420_VoiceParameters);
3221
3222   return offset;
3223 }
3224
3225
3226
3227 static int
3228 dissect_x420_VoiceData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3229   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
3230                                        NULL);
3231
3232   return offset;
3233 }
3234
3235
3236 static const ber_sequence_t SubmissionProof_set[] = {
3237   { &hf_x420_proof_of_submission, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x411_ProofOfSubmission },
3238   { &hf_x420_originating_MTA_certificate, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_x411_OriginatingMTACertificate },
3239   { &hf_x420_message_submission_envelope, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x411_MessageSubmissionEnvelope },
3240   { NULL, 0, 0, 0, NULL }
3241 };
3242
3243 static int
3244 dissect_x420_SubmissionProof(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3245   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
3246                               SubmissionProof_set, hf_index, ett_x420_SubmissionProof);
3247
3248   return offset;
3249 }
3250
3251
3252 static const ber_sequence_t ForwardedContentParameters_set[] = {
3253   { &hf_x420_delivery_time  , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x411_MessageDeliveryTime },
3254   { &hf_x420_delivery_envelope, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x411_OtherMessageDeliveryFields },
3255   { &hf_x420_mts_identifier , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x411_MessageDeliveryIdentifier },
3256   { &hf_x420_submission_proof, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_SubmissionProof },
3257   { NULL, 0, 0, 0, NULL }
3258 };
3259
3260 static int
3261 dissect_x420_ForwardedContentParameters(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3262   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
3263                               ForwardedContentParameters_set, hf_index, ett_x420_ForwardedContentParameters);
3264
3265   return offset;
3266 }
3267
3268
3269 static const value_string x420_IPMEntryType_vals[] = {
3270   {   0, "ipm" },
3271   {   1, "rn" },
3272   {   2, "nrn" },
3273   {   3, "on" },
3274   { 0, NULL }
3275 };
3276
3277
3278 static int
3279 dissect_x420_IPMEntryType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3280   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3281                                   NULL);
3282
3283   return offset;
3284 }
3285
3286
3287 static const ber_sequence_t MessageBodyPartSynopsis_sequence[] = {
3288   { &hf_x420_number         , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p7_SequenceNumber },
3289   { &hf_x420_synopsis       , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_x420_IPMSynopsis },
3290   { NULL, 0, 0, 0, NULL }
3291 };
3292
3293 static int
3294 dissect_x420_MessageBodyPartSynopsis(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3295   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3296                                    MessageBodyPartSynopsis_sequence, hf_index, ett_x420_MessageBodyPartSynopsis);
3297
3298   return offset;
3299 }
3300
3301
3302 static const ber_sequence_t NonMessageBodyPartSynopsis_sequence[] = {
3303   { &hf_x420_bp_type        , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x420_OBJECT_IDENTIFIER },
3304   { &hf_x420_bp_parameters  , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_INSTANCE_OF },
3305   { &hf_x420_size           , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_x420_INTEGER },
3306   { &hf_x420_processed      , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_BOOLEAN },
3307   { NULL, 0, 0, 0, NULL }
3308 };
3309
3310 static int
3311 dissect_x420_NonMessageBodyPartSynopsis(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3312   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3313                                    NonMessageBodyPartSynopsis_sequence, hf_index, ett_x420_NonMessageBodyPartSynopsis);
3314
3315   return offset;
3316 }
3317
3318
3319 static const value_string x420_BodyPartSynopsis_vals[] = {
3320   {   0, "message" },
3321   {   1, "non-message" },
3322   { 0, NULL }
3323 };
3324
3325 static const ber_choice_t BodyPartSynopsis_choice[] = {
3326   {   0, &hf_x420_message_synopsis, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x420_MessageBodyPartSynopsis },
3327   {   1, &hf_x420_non_message    , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_x420_NonMessageBodyPartSynopsis },
3328   { 0, NULL, 0, 0, 0, NULL }
3329 };
3330
3331 static int
3332 dissect_x420_BodyPartSynopsis(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3333   offset = dissect_ber_choice(actx, tree, tvb, offset,
3334                                  BodyPartSynopsis_choice, hf_index, ett_x420_BodyPartSynopsis,
3335                                  NULL);
3336
3337   return offset;
3338 }
3339
3340
3341 static const ber_sequence_t IPMSynopsis_sequence_of[1] = {
3342   { &hf_x420_IPMSynopsis_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_BodyPartSynopsis },
3343 };
3344
3345 static int
3346 dissect_x420_IPMSynopsis(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3347   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3348                                       IPMSynopsis_sequence_of, hf_index, ett_x420_IPMSynopsis);
3349
3350   return offset;
3351 }
3352
3353
3354 static const ber_sequence_t BodyPartDescriptor_sequence[] = {
3355   { &hf_x420_data           , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x420_OBJECT_IDENTIFIER },
3356   { &hf_x420_parameters     , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_OBJECT_IDENTIFIER },
3357   { &hf_x420_this_child_entry, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p7_SequenceNumber },
3358   { &hf_x420_position       , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_x420_INTEGER },
3359   { &hf_x420_size           , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_x420_INTEGER },
3360   { &hf_x420_processed      , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_BOOLEAN },
3361   { NULL, 0, 0, 0, NULL }
3362 };
3363
3364 static int
3365 dissect_x420_BodyPartDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3366   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3367                                    BodyPartDescriptor_sequence, hf_index, ett_x420_BodyPartDescriptor);
3368
3369   return offset;
3370 }
3371
3372
3373 static const ber_sequence_t BodyPartSignatureVerification_item_set[] = {
3374   { &hf_x420_body_part_sequence_number, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x420_BodyPartNumber },
3375   { &hf_x420_body_part_signature_status, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_p7_SignatureStatus },
3376   { NULL, 0, 0, 0, NULL }
3377 };
3378
3379 static int
3380 dissect_x420_BodyPartSignatureVerification_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3381   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
3382                               BodyPartSignatureVerification_item_set, hf_index, ett_x420_BodyPartSignatureVerification_item);
3383
3384   return offset;
3385 }
3386
3387
3388 static const ber_sequence_t BodyPartSignatureVerification_set_of[1] = {
3389   { &hf_x420_BodyPartSignatureVerification_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x420_BodyPartSignatureVerification_item },
3390 };
3391
3392 static int
3393 dissect_x420_BodyPartSignatureVerification(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3394   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
3395                                  BodyPartSignatureVerification_set_of, hf_index, ett_x420_BodyPartSignatureVerification);
3396
3397   return offset;
3398 }
3399
3400
3401 static const ber_sequence_t SET_OF_SequenceNumber_set_of[1] = {
3402   { &hf_x420_stored_item    , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_p7_SequenceNumber },
3403 };
3404
3405 static int
3406 dissect_x420_SET_OF_SequenceNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3407   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
3408                                  SET_OF_SequenceNumber_set_of, hf_index, ett_x420_SET_OF_SequenceNumber);
3409
3410   return offset;
3411 }
3412
3413
3414 static const value_string x420_IPMLocation_vals[] = {
3415   {   0, "stored" },
3416   {   1, "absent" },
3417   { 0, NULL }
3418 };
3419
3420 static const ber_choice_t IPMLocation_choice[] = {
3421   {   0, &hf_x420_stored         , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x420_SET_OF_SequenceNumber },
3422   {   1, &hf_x420_absent         , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_x420_NULL },
3423   { 0, NULL, 0, 0, 0, NULL }
3424 };
3425
3426 static int
3427 dissect_x420_IPMLocation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3428   offset = dissect_ber_choice(actx, tree, tvb, offset,
3429                                  IPMLocation_choice, hf_index, ett_x420_IPMLocation,
3430                                  NULL);
3431
3432   return offset;
3433 }
3434
3435
3436 static const value_string x420_DeliveredReplyStatus_vals[] = {
3437   {   0, "no-reply-requested" },
3438   {   1, "reply-outstanding" },
3439   {   2, "reply-received" },
3440   { 0, NULL }
3441 };
3442
3443
3444 static int
3445 dissect_x420_DeliveredReplyStatus(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3446   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3447                                                 NULL);
3448
3449   return offset;
3450 }
3451
3452
3453 static const ber_sequence_t SEQUENCE_OF_SequenceNumber_sequence_of[1] = {
3454   { &hf_x420_received_replies_item, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_p7_SequenceNumber },
3455 };
3456
3457 static int
3458 dissect_x420_SEQUENCE_OF_SequenceNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3459   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3460                                       SEQUENCE_OF_SequenceNumber_sequence_of, hf_index, ett_x420_SEQUENCE_OF_SequenceNumber);
3461
3462   return offset;
3463 }
3464
3465
3466 static const value_string x420_CorrelatedDeliveredReplies_vals[] = {
3467   {   0, "no-reply-received" },
3468   {   1, "received-replies" },
3469   { 0, NULL }
3470 };
3471
3472 static const ber_choice_t CorrelatedDeliveredReplies_choice[] = {
3473   {   0, &hf_x420_no_reply_received, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x420_NULL },
3474   {   1, &hf_x420_received_replies, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_x420_SEQUENCE_OF_SequenceNumber },
3475   { 0, NULL, 0, 0, 0, NULL }
3476 };
3477
3478 static int
3479 dissect_x420_CorrelatedDeliveredReplies(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3480   offset = dissect_ber_choice(actx, tree, tvb, offset,
3481                                  CorrelatedDeliveredReplies_choice, hf_index, ett_x420_CorrelatedDeliveredReplies,
3482                                  NULL);
3483
3484   return offset;
3485 }
3486
3487
3488 static const value_string x420_DeliveredIPNStatus_vals[] = {
3489   {   0, "no-ipn-requested" },
3490   {   3, "an-requested" },
3491   {   5, "nrn-requested" },
3492   {  10, "rn-requested" },
3493   {  13, "an-received" },
3494   {  15, "ipm-auto-forwarded" },
3495   {  20, "ipm-discarded" },
3496   {  25, "rn-received" },
3497   { 0, NULL }
3498 };
3499
3500
3501 static int
3502 dissect_x420_DeliveredIPNStatus(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3503   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3504                                                 NULL);
3505
3506   return offset;
3507 }
3508
3509
3510 static const value_string x420_CorrelatedDeliveredIPNs_vals[] = {
3511   {   0, "no-ipn-received" },
3512   {   1, "ipns-received" },
3513   { 0, NULL }
3514 };
3515
3516 static const ber_choice_t CorrelatedDeliveredIPNs_choice[] = {
3517   {   0, &hf_x420_no_ipn_received, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x420_NULL },
3518   {   1, &hf_x420_ipns_received  , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_x420_SEQUENCE_OF_SequenceNumber },
3519   { 0, NULL, 0, 0, 0, NULL }
3520 };
3521
3522 static int
3523 dissect_x420_CorrelatedDeliveredIPNs(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3524   offset = dissect_ber_choice(actx, tree, tvb, offset,
3525                                  CorrelatedDeliveredIPNs_choice, hf_index, ett_x420_CorrelatedDeliveredIPNs,
3526                                  NULL);
3527
3528   return offset;
3529 }
3530
3531
3532 static const value_string x420_SubmittedReplyStatus_vals[] = {
3533   {   0, "no-reply-requested" },
3534   {   1, "no-reply-intended" },
3535   {   2, "reply-pending" },
3536   {   3, "reply-sent" },
3537   { 0, NULL }
3538 };
3539
3540
3541 static int
3542 dissect_x420_SubmittedReplyStatus(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3543   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3544                                                 NULL);
3545
3546   return offset;
3547 }
3548
3549
3550 static const value_string x420_SubmittedIPNStatus_vals[] = {
3551   {   0, "no-ipn-requested" },
3552   {   5, "nrn-requested" },
3553   {  10, "nrn-with-ipm-return-requested" },
3554   {  15, "rn-requested" },
3555   {  20, "rn-with-ipm-return-requested" },
3556   {  25, "ipm-auto-forwarded" },
3557   {  30, "ipm-discarded" },
3558   {  35, "rn-sent" },
3559   { 0, NULL }
3560 };
3561
3562
3563 static int
3564 dissect_x420_SubmittedIPNStatus(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3565   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3566                                                 NULL);
3567
3568   return offset;
3569 }
3570
3571
3572 static const value_string x420_RecipientCategory_vals[] = {
3573   {   0, "primary-recipient" },
3574   {   1, "copy-recipient" },
3575   {   2, "blind-copy-recipient" },
3576   {   3, "category-unknown" },
3577   {   4, "circulation-list" },
3578   { 0, NULL }
3579 };
3580
3581
3582 static int
3583 dissect_x420_RecipientCategory(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3584   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3585                                                 NULL);
3586
3587   return offset;
3588 }
3589
3590
3591 static const asn_namedbit RecipientSecurityRequest_bits[] = {
3592   {  0, &hf_x420_RecipientSecurityRequest_content_non_repudiation, -1, -1, "content-non-repudiation", NULL },
3593   {  1, &hf_x420_RecipientSecurityRequest_content_proof, -1, -1, "content-proof", NULL },
3594   {  2, &hf_x420_RecipientSecurityRequest_ipn_non_repudiation, -1, -1, "ipn-non-repudiation", NULL },
3595   {  3, &hf_x420_RecipientSecurityRequest_ipn_proof, -1, -1, "ipn-proof", NULL },
3596   { 0, NULL, 0, 0, NULL, NULL }
3597 };
3598
3599 static int
3600 dissect_x420_RecipientSecurityRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3601   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
3602                                     RecipientSecurityRequest_bits, hf_index, ett_x420_RecipientSecurityRequest,
3603                                     NULL);
3604
3605   return offset;
3606 }
3607
3608
3609
3610 static int
3611 dissect_x420_OriginalContent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3612   offset = dissect_x411_Content(implicit_tag, tvb, offset, actx, tree, hf_index);
3613
3614   return offset;
3615 }
3616
3617
3618
3619 static int
3620 dissect_x420_OriginalContentIntegrityCheck(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3621   offset = dissect_x411_ContentIntegrityCheck(implicit_tag, tvb, offset, actx, tree, hf_index);
3622
3623   return offset;
3624 }
3625
3626
3627
3628 static int
3629 dissect_x420_OriginalMessageOriginAuthenticationCheck(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3630   offset = dissect_x411_MessageOriginAuthenticationCheck(implicit_tag, tvb, offset, actx, tree, hf_index);
3631
3632   return offset;
3633 }
3634
3635
3636
3637 static int
3638 dissect_x420_OriginalMessageToken(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3639   offset = dissect_x411_MessageToken(implicit_tag, tvb, offset, actx, tree, hf_index);
3640
3641   return offset;
3642 }
3643
3644
3645 static const ber_sequence_t T_original_security_arguments_set[] = {
3646   { &hf_x420_original_content_integrity_check, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_OriginalContentIntegrityCheck },
3647   { &hf_x420_original_message_origin_authentication_check, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_OriginalMessageOriginAuthenticationCheck },
3648   { &hf_x420_original_message_token, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x420_OriginalMessageToken },
3649   { NULL, 0, 0, 0, NULL }
3650 };
3651
3652 static int
3653 dissect_x420_T_original_security_arguments(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3654   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
3655                               T_original_security_arguments_set, hf_index, ett_x420_T_original_security_arguments);
3656
3657   return offset;
3658 }
3659
3660
3661 static const value_string x420_T_content_or_arguments_vals[] = {
3662   {   0, "original-content" },
3663   {   1, "original-security-arguments" },
3664   { 0, NULL }
3665 };
3666
3667 static const ber_choice_t T_content_or_arguments_choice[] = {
3668   {   0, &hf_x420_original_content, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_x420_OriginalContent },
3669   {   1, &hf_x420_original_security_arguments, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x420_T_original_security_arguments },
3670   { 0, NULL, 0, 0, 0, NULL }
3671 };
3672
3673 static int
3674 dissect_x420_T_content_or_arguments(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3675   offset = dissect_ber_choice(actx, tree, tvb, offset,
3676                                  T_content_or_arguments_choice, hf_index, ett_x420_T_content_or_arguments,
3677                                  NULL);
3678
3679   return offset;
3680 }
3681
3682
3683 static const value_string x420_SecurityDiagnosticCode_vals[] = {
3684   {   0, "integrity-failure-on-subject-message" },
3685   {   1, "integrity-failure-on-forwarded-message" },
3686   {   2, "moac-failure-on-subject-message" },
3687   {   3, "unsupported-security-policy" },
3688   {   4, "unsupported-algorithm-identifier" },
3689   {   5, "decryption-failed" },
3690   {   6, "token-error" },
3691   {   7, "unable-to-sign-notification" },
3692   {   8, "unable-to-sign-message-receipt" },
3693   {   9, "authentication-failure-on-subject-message" },
3694   {  10, "security-context-failure-message" },
3695   {  11, "message-sequence-failure" },
3696   {  12, "message-security-labelling-failure" },
3697   {  13, "repudiation-failure-of-message" },
3698   {  14, "failure-of-proof-of-message" },
3699   {  15, "signature-key-unobtainable" },
3700   {  16, "decryption-key-unobtainable" },
3701   {  17, "key-failure" },
3702   {  18, "unsupported-request-for-security-service" },
3703   {  19, "inconsistent-request-for-security-service" },
3704   {  20, "ipn-non-repudiation-provided-instead-of-content-proof" },
3705   {  21, "token-decryption-failed" },
3706   {  22, "double-enveloping-message-restoring-failure" },
3707   {  23, "unauthorised-dl-member" },
3708   {  24, "reception-security-failure" },
3709   {  25, "unsuitable-alternate-recipient" },
3710   {  26, "security-services-refusal" },
3711   {  27, "unauthorised-recipient" },
3712   {  28, "unknown-certification-authority-name" },
3713   {  29, "unknown-dl-name" },
3714   {  30, "unknown-originator-name" },
3715   {  31, "unknown-recipient-name" },
3716   {  32, "security-policy-violation" },
3717   { 0, NULL }
3718 };
3719
3720
3721 static int
3722 dissect_x420_SecurityDiagnosticCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3723   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3724                                                 NULL);
3725
3726   return offset;
3727 }
3728
3729
3730 static const ber_sequence_t IpnSecurityResponse_set[] = {
3731   { &hf_x420_content_or_arguments, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_T_content_or_arguments },
3732   { &hf_x420_security_diagnostic_code, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_x420_SecurityDiagnosticCode },
3733   { NULL, 0, 0, 0, NULL }
3734 };
3735
3736 static int
3737 dissect_x420_IpnSecurityResponse(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3738   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
3739                               IpnSecurityResponse_set, hf_index, ett_x420_IpnSecurityResponse);
3740
3741   return offset;
3742 }
3743
3744
3745 static const ber_sequence_t EncryptionToken_set[] = {
3746   { &hf_x420_encryption_algorithm_identifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
3747   { &hf_x420_encrypted_key  , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_x420_BIT_STRING },
3748   { &hf_x420_recipient_certificate_selector, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x509ce_CertificateAssertion },
3749   { &hf_x420_recipient_certificate, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x509af_Certificates },
3750   { &hf_x420_originator_certificate_selector, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x509ce_CertificateAssertion },
3751   { &hf_x420_originator_certificates, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x411_ExtendedCertificates },
3752   { NULL, 0, 0, 0, NULL }
3753 };
3754
3755 static int
3756 dissect_x420_EncryptionToken(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3757   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
3758                               EncryptionToken_set, hf_index, ett_x420_EncryptionToken);
3759
3760   return offset;
3761 }
3762
3763
3764 static const value_string x420_T_body_part_choice_vals[] = {
3765   {   0, "encryption-token" },
3766   {   1, "message-or-content-body-part" },
3767   { 0, NULL }
3768 };
3769
3770 static const ber_choice_t T_body_part_choice_choice[] = {
3771   {   0, &hf_x420_encryption_token, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x420_EncryptionToken },
3772   {   1, &hf_x420_message_or_content_body_part, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x420_BodyPartTokens },
3773   { 0, NULL, 0, 0, 0, NULL }
3774 };
3775
3776 static int
3777 dissect_x420_T_body_part_choice(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3778   offset = dissect_ber_choice(actx, tree, tvb, offset,
3779                                  T_body_part_choice_choice, hf_index, ett_x420_T_body_part_choice,
3780                                  NULL);
3781
3782   return offset;
3783 }
3784
3785
3786 static const ber_sequence_t BodyPartTokens_item_set[] = {
3787   { &hf_x420_body_part_number, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_x420_BodyPartNumber },
3788   { &hf_x420_body_part_choice, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_T_body_part_choice },
3789   { NULL, 0, 0, 0, NULL }
3790 };
3791
3792 static int
3793 dissect_x420_BodyPartTokens_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3794   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
3795                               BodyPartTokens_item_set, hf_index, ett_x420_BodyPartTokens_item);
3796
3797   return offset;
3798 }
3799
3800
3801 static const ber_sequence_t BodyPartTokens_set_of[1] = {
3802   { &hf_x420_BodyPartTokens_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x420_BodyPartTokens_item },
3803 };
3804
3805 static int
3806 dissect_x420_BodyPartTokens(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3807   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
3808                                  BodyPartTokens_set_of, hf_index, ett_x420_BodyPartTokens);
3809
3810   return offset;
3811 }
3812
3813
3814 static const value_string x420_T_body_part_token_choice_vals[] = {
3815   {   0, "forwarding-token" },
3816   {   1, "message-or-content-body-part" },
3817   { 0, NULL }
3818 };
3819
3820 static const ber_choice_t T_body_part_token_choice_choice[] = {
3821   {   0, &hf_x420_forwarding_token, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x411_MessageToken },
3822   {   1, &hf_x420_forwarded_content_token, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x420_ForwardedContentToken },
3823   { 0, NULL, 0, 0, 0, NULL }
3824 };
3825
3826 static int
3827 dissect_x420_T_body_part_token_choice(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3828   offset = dissect_ber_choice(actx, tree, tvb, offset,
3829                                  T_body_part_token_choice_choice, hf_index, ett_x420_T_body_part_token_choice,
3830                                  NULL);
3831
3832   return offset;
3833 }
3834
3835
3836 static const ber_sequence_t ForwardedContentToken_item_set[] = {
3837   { &hf_x420_body_part_number, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_x420_BodyPartNumber },
3838   { &hf_x420_body_part_token_choice, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_x420_T_body_part_token_choice },
3839   { NULL, 0, 0, 0, NULL }
3840 };
3841
3842 static int
3843 dissect_x420_ForwardedContentToken_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3844   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
3845                               ForwardedContentToken_item_set, hf_index, ett_x420_ForwardedContentToken_item);
3846
3847   return offset;
3848 }
3849
3850
3851 static const ber_sequence_t ForwardedContentToken_set_of[1] = {
3852   { &hf_x420_ForwardedContentToken_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x420_ForwardedContentToken_item },
3853 };
3854
3855 static int
3856 dissect_x420_ForwardedContentToken(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3857   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
3858                                  ForwardedContentToken_set_of, hf_index, ett_x420_ForwardedContentToken);
3859
3860   return offset;
3861 }
3862
3863 /*--- PDUs ---*/
3864
3865 static void dissect_InformationObject_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3866   asn1_ctx_t asn1_ctx;
3867   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
3868   dissect_x420_InformationObject(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_InformationObject_PDU);
3869 }
3870 static void dissect_Heading_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3871   asn1_ctx_t asn1_ctx;
3872   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
3873   dissect_x420_Heading(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_Heading_PDU);
3874 }
3875 static void dissect_ORDescriptor_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3876   asn1_ctx_t asn1_ctx;
3877   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
3878   dissect_x420_ORDescriptor(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_ORDescriptor_PDU);
3879 }
3880 static void dissect_ThisIPMField_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3881   asn1_ctx_t asn1_ctx;
3882   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
3883   dissect_x420_ThisIPMField(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_ThisIPMField_PDU);
3884 }
3885 static void dissect_OriginatorField_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3886   asn1_ctx_t asn1_ctx;
3887   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
3888   dissect_x420_OriginatorField(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_OriginatorField_PDU);
3889 }
3890 static void dissect_AuthorizingUsersSubfield_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3891   asn1_ctx_t asn1_ctx;
3892   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
3893   dissect_x420_AuthorizingUsersSubfield(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_AuthorizingUsersSubfield_PDU);
3894 }
3895 static void dissect_PrimaryRecipientsSubfield_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3896   asn1_ctx_t asn1_ctx;
3897   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
3898   dissect_x420_PrimaryRecipientsSubfield(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_PrimaryRecipientsSubfield_PDU);
3899 }
3900 static void dissect_CopyRecipientsSubfield_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3901   asn1_ctx_t asn1_ctx;
3902   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
3903   dissect_x420_CopyRecipientsSubfield(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_CopyRecipientsSubfield_PDU);
3904 }
3905 static void dissect_BlindCopyRecipientsSubfield_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3906   asn1_ctx_t asn1_ctx;
3907   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
3908   dissect_x420_BlindCopyRecipientsSubfield(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_BlindCopyRecipientsSubfield_PDU);
3909 }
3910 static void dissect_RepliedToIPMField_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3911   asn1_ctx_t asn1_ctx;
3912   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
3913   dissect_x420_RepliedToIPMField(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_RepliedToIPMField_PDU);
3914 }
3915 static void dissect_ObsoletedIPMsSubfield_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3916   asn1_ctx_t asn1_ctx;
3917   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
3918   dissect_x420_ObsoletedIPMsSubfield(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_ObsoletedIPMsSubfield_PDU);
3919 }
3920 static void dissect_RelatedIPMsSubfield_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3921   asn1_ctx_t asn1_ctx;
3922   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
3923   dissect_x420_RelatedIPMsSubfield(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_RelatedIPMsSubfield_PDU);
3924 }
3925 static void dissect_SubjectField_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3926   asn1_ctx_t asn1_ctx;
3927   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
3928   dissect_x420_SubjectField(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_SubjectField_PDU);
3929 }
3930 static void dissect_ExpiryTimeField_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3931   asn1_ctx_t asn1_ctx;
3932   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
3933   dissect_x420_ExpiryTimeField(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_ExpiryTimeField_PDU);
3934 }
3935 static void dissect_ReplyTimeField_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3936   asn1_ctx_t asn1_ctx;
3937   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
3938   dissect_x420_ReplyTimeField(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_ReplyTimeField_PDU);
3939 }
3940 static void dissect_ReplyRecipientsSubfield_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3941   asn1_ctx_t asn1_ctx;
3942   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
3943   dissect_x420_ReplyRecipientsSubfield(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_ReplyRecipientsSubfield_PDU);
3944 }
3945 static void dissect_ImportanceField_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3946   asn1_ctx_t asn1_ctx;
3947   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
3948   dissect_x420_ImportanceField(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_ImportanceField_PDU);
3949 }
3950 static void dissect_SensitivityField_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3951   asn1_ctx_t asn1_ctx;
3952   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
3953   dissect_x420_SensitivityField(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_SensitivityField_PDU);
3954 }
3955 static void dissect_AutoForwardedField_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3956   asn1_ctx_t asn1_ctx;
3957   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
3958   dissect_x420_AutoForwardedField(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_AutoForwardedField_PDU);
3959 }
3960 static void dissect_Body_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3961   asn1_ctx_t asn1_ctx;
3962   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
3963   dissect_x420_Body(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_Body_PDU);
3964 }
3965 static void dissect_IA5TextParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3966   asn1_ctx_t asn1_ctx;
3967   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
3968   dissect_x420_IA5TextParameters(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_IA5TextParameters_PDU);
3969 }
3970 static void dissect_IA5TextData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3971   asn1_ctx_t asn1_ctx;
3972   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
3973   dissect_x420_IA5TextData(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_IA5TextData_PDU);
3974 }
3975 static void dissect_G3FacsimileParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3976   asn1_ctx_t asn1_ctx;
3977   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
3978   dissect_x420_G3FacsimileParameters(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_G3FacsimileParameters_PDU);
3979 }
3980 static void dissect_G3FacsimileData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3981   asn1_ctx_t asn1_ctx;
3982   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
3983   dissect_x420_G3FacsimileData(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_G3FacsimileData_PDU);
3984 }
3985 static void dissect_G4Class1BodyPart_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3986   asn1_ctx_t asn1_ctx;
3987   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
3988   dissect_x420_G4Class1BodyPart(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_G4Class1BodyPart_PDU);
3989 }
3990 static void dissect_MixedModeBodyPart_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3991   asn1_ctx_t asn1_ctx;
3992   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
3993   dissect_x420_MixedModeBodyPart(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_MixedModeBodyPart_PDU);
3994 }
3995 static void dissect_TeletexParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
3996   asn1_ctx_t asn1_ctx;
3997   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
3998   dissect_x420_TeletexParameters(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_TeletexParameters_PDU);
3999 }
4000 static void dissect_TeletexData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4001   asn1_ctx_t asn1_ctx;
4002   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4003   dissect_x420_TeletexData(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_TeletexData_PDU);
4004 }
4005 static void dissect_VideotexParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4006   asn1_ctx_t asn1_ctx;
4007   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4008   dissect_x420_VideotexParameters(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_VideotexParameters_PDU);
4009 }
4010 static void dissect_VideotexData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4011   asn1_ctx_t asn1_ctx;
4012   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4013   dissect_x420_VideotexData(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_VideotexData_PDU);
4014 }
4015 static void dissect_EncryptedParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4016   asn1_ctx_t asn1_ctx;
4017   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4018   dissect_x420_EncryptedParameters(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_EncryptedParameters_PDU);
4019 }
4020 static void dissect_EncryptedData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4021   asn1_ctx_t asn1_ctx;
4022   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4023   dissect_x420_EncryptedData(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_EncryptedData_PDU);
4024 }
4025 static void dissect_MessageParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4026   asn1_ctx_t asn1_ctx;
4027   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4028   dissect_x420_MessageParameters(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_MessageParameters_PDU);
4029 }
4030 static void dissect_MessageData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4031   asn1_ctx_t asn1_ctx;
4032   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4033   dissect_x420_MessageData(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_MessageData_PDU);
4034 }
4035 static void dissect_BilaterallyDefinedBodyPart_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4036   asn1_ctx_t asn1_ctx;
4037   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4038   dissect_x420_BilaterallyDefinedBodyPart(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_BilaterallyDefinedBodyPart_PDU);
4039 }
4040 static void dissect_IPN_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4041   asn1_ctx_t asn1_ctx;
4042   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4043   dissect_x420_IPN(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_IPN_PDU);
4044 }
4045 static void dissect_AbsenceAdvice_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4046   asn1_ctx_t asn1_ctx;
4047   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4048   dissect_x420_AbsenceAdvice(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_AbsenceAdvice_PDU);
4049 }
4050 static void dissect_ChangeOfAddressAdvice_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4051   asn1_ctx_t asn1_ctx;
4052   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4053   dissect_x420_ChangeOfAddressAdvice(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_ChangeOfAddressAdvice_PDU);
4054 }
4055 static void dissect_IPMAssemblyInstructions_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4056   asn1_ctx_t asn1_ctx;
4057   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4058   dissect_x420_IPMAssemblyInstructions(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_IPMAssemblyInstructions_PDU);
4059 }
4060 static void dissect_IncompleteCopy_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4061   asn1_ctx_t asn1_ctx;
4062   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4063   dissect_x420_IncompleteCopy(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_IncompleteCopy_PDU);
4064 }
4065 static void dissect_Languages_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4066   asn1_ctx_t asn1_ctx;
4067   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4068   dissect_x420_Languages(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_Languages_PDU);
4069 }
4070 static void dissect_Language_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4071   asn1_ctx_t asn1_ctx;
4072   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4073   dissect_x420_Language(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_Language_PDU);
4074 }
4075 static void dissect_AutoSubmitted_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4076   asn1_ctx_t asn1_ctx;
4077   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4078   dissect_x420_AutoSubmitted(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_AutoSubmitted_PDU);
4079 }
4080 static void dissect_BodyPartSignatures_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4081   asn1_ctx_t asn1_ctx;
4082   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4083   dissect_x420_BodyPartSignatures(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_BodyPartSignatures_PDU);
4084 }
4085 static void dissect_IPMSecurityLabel_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4086   asn1_ctx_t asn1_ctx;
4087   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4088   dissect_x420_IPMSecurityLabel(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_IPMSecurityLabel_PDU);
4089 }
4090 static void dissect_BodyPartSecurityLabel_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4091   asn1_ctx_t asn1_ctx;
4092   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4093   dissect_x420_BodyPartSecurityLabel(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_BodyPartSecurityLabel_PDU);
4094 }
4095 static void dissect_AuthorizationTime_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4096   asn1_ctx_t asn1_ctx;
4097   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4098   dissect_x420_AuthorizationTime(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_AuthorizationTime_PDU);
4099 }
4100 static void dissect_CirculationList_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4101   asn1_ctx_t asn1_ctx;
4102   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4103   dissect_x420_CirculationList(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_CirculationList_PDU);
4104 }
4105 static void dissect_CirculationMember_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4106   asn1_ctx_t asn1_ctx;
4107   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4108   dissect_x420_CirculationMember(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_CirculationMember_PDU);
4109 }
4110 static void dissect_CirculationListIndicator_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4111   asn1_ctx_t asn1_ctx;
4112   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4113   dissect_x420_CirculationListIndicator(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_CirculationListIndicator_PDU);
4114 }
4115 static void dissect_DistributionCodes_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4116   asn1_ctx_t asn1_ctx;
4117   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4118   dissect_x420_DistributionCodes(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_DistributionCodes_PDU);
4119 }
4120 static void dissect_DistributionCode_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4121   asn1_ctx_t asn1_ctx;
4122   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4123   dissect_x420_DistributionCode(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_DistributionCode_PDU);
4124 }
4125 static void dissect_ExtendedSubject_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4126   asn1_ctx_t asn1_ctx;
4127   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4128   dissect_x420_ExtendedSubject(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_ExtendedSubject_PDU);
4129 }
4130 static void dissect_InformationCategories_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4131   asn1_ctx_t asn1_ctx;
4132   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4133   dissect_x420_InformationCategories(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_InformationCategories_PDU);
4134 }
4135 static void dissect_InformationCategory_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4136   asn1_ctx_t asn1_ctx;
4137   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4138   dissect_x420_InformationCategory(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_InformationCategory_PDU);
4139 }
4140 static void dissect_ManualHandlingInstructions_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4141   asn1_ctx_t asn1_ctx;
4142   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4143   dissect_x420_ManualHandlingInstructions(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_ManualHandlingInstructions_PDU);
4144 }
4145 static void dissect_ManualHandlingInstruction_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4146   asn1_ctx_t asn1_ctx;
4147   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4148   dissect_x420_ManualHandlingInstruction(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_ManualHandlingInstruction_PDU);
4149 }
4150 static void dissect_OriginatorsReference_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4151   asn1_ctx_t asn1_ctx;
4152   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4153   dissect_x420_OriginatorsReference(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_OriginatorsReference_PDU);
4154 }
4155 static void dissect_PrecedencePolicyIdentifier_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4156   asn1_ctx_t asn1_ctx;
4157   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4158   dissect_x420_PrecedencePolicyIdentifier(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_PrecedencePolicyIdentifier_PDU);
4159 }
4160 static void dissect_Precedence_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4161   asn1_ctx_t asn1_ctx;
4162   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4163   dissect_x420_Precedence(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_Precedence_PDU);
4164 }
4165 static void dissect_GeneralTextParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4166   asn1_ctx_t asn1_ctx;
4167   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4168   dissect_x420_GeneralTextParameters(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_GeneralTextParameters_PDU);
4169 }
4170 static void dissect_GeneralTextData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4171   asn1_ctx_t asn1_ctx;
4172   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4173   dissect_x420_GeneralTextData(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_GeneralTextData_PDU);
4174 }
4175 static void dissect_FileTransferParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4176   asn1_ctx_t asn1_ctx;
4177   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4178   dissect_x420_FileTransferParameters(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_FileTransferParameters_PDU);
4179 }
4180 static void dissect_FileTransferData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4181   asn1_ctx_t asn1_ctx;
4182   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4183   dissect_x420_FileTransferData(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_FileTransferData_PDU);
4184 }
4185 static void dissect_VoiceParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4186   asn1_ctx_t asn1_ctx;
4187   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4188   dissect_x420_VoiceParameters(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_VoiceParameters_PDU);
4189 }
4190 static void dissect_VoiceData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4191   asn1_ctx_t asn1_ctx;
4192   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4193   dissect_x420_VoiceData(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_VoiceData_PDU);
4194 }
4195 static void dissect_ForwardedContentParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4196   asn1_ctx_t asn1_ctx;
4197   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4198   dissect_x420_ForwardedContentParameters(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_ForwardedContentParameters_PDU);
4199 }
4200 static void dissect_IPMEntryType_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4201   asn1_ctx_t asn1_ctx;
4202   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4203   dissect_x420_IPMEntryType(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_IPMEntryType_PDU);
4204 }
4205 static void dissect_IPMSynopsis_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4206   asn1_ctx_t asn1_ctx;
4207   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4208   dissect_x420_IPMSynopsis(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_IPMSynopsis_PDU);
4209 }
4210 static void dissect_BodyPartDescriptor_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4211   asn1_ctx_t asn1_ctx;
4212   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4213   dissect_x420_BodyPartDescriptor(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_BodyPartDescriptor_PDU);
4214 }
4215 static void dissect_BodyPartSignatureVerification_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4216   asn1_ctx_t asn1_ctx;
4217   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4218   dissect_x420_BodyPartSignatureVerification(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_BodyPartSignatureVerification_PDU);
4219 }
4220 static void dissect_IPMLocation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4221   asn1_ctx_t asn1_ctx;
4222   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4223   dissect_x420_IPMLocation(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_IPMLocation_PDU);
4224 }
4225 static void dissect_DeliveredReplyStatus_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4226   asn1_ctx_t asn1_ctx;
4227   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4228   dissect_x420_DeliveredReplyStatus(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_DeliveredReplyStatus_PDU);
4229 }
4230 static void dissect_CorrelatedDeliveredReplies_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4231   asn1_ctx_t asn1_ctx;
4232   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4233   dissect_x420_CorrelatedDeliveredReplies(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_CorrelatedDeliveredReplies_PDU);
4234 }
4235 static void dissect_DeliveredIPNStatus_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4236   asn1_ctx_t asn1_ctx;
4237   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4238   dissect_x420_DeliveredIPNStatus(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_DeliveredIPNStatus_PDU);
4239 }
4240 static void dissect_CorrelatedDeliveredIPNs_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4241   asn1_ctx_t asn1_ctx;
4242   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4243   dissect_x420_CorrelatedDeliveredIPNs(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_CorrelatedDeliveredIPNs_PDU);
4244 }
4245 static void dissect_SubmittedReplyStatus_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4246   asn1_ctx_t asn1_ctx;
4247   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4248   dissect_x420_SubmittedReplyStatus(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_SubmittedReplyStatus_PDU);
4249 }
4250 static void dissect_SubmittedIPNStatus_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4251   asn1_ctx_t asn1_ctx;
4252   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4253   dissect_x420_SubmittedIPNStatus(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_SubmittedIPNStatus_PDU);
4254 }
4255 static void dissect_RecipientCategory_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4256   asn1_ctx_t asn1_ctx;
4257   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4258   dissect_x420_RecipientCategory(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_RecipientCategory_PDU);
4259 }
4260 static void dissect_RecipientSecurityRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4261   asn1_ctx_t asn1_ctx;
4262   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4263   dissect_x420_RecipientSecurityRequest(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_RecipientSecurityRequest_PDU);
4264 }
4265 static void dissect_IpnSecurityResponse_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4266   asn1_ctx_t asn1_ctx;
4267   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4268   dissect_x420_IpnSecurityResponse(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_IpnSecurityResponse_PDU);
4269 }
4270 static void dissect_BodyPartTokens_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4271   asn1_ctx_t asn1_ctx;
4272   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4273   dissect_x420_BodyPartTokens(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_BodyPartTokens_PDU);
4274 }
4275 static void dissect_ForwardedContentToken_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
4276   asn1_ctx_t asn1_ctx;
4277   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4278   dissect_x420_ForwardedContentToken(FALSE, tvb, 0, &asn1_ctx, tree, hf_x420_ForwardedContentToken_PDU);
4279 }
4280
4281
4282 /*--- End of included file: packet-x420-fn.c ---*/
4283 #line 96 "packet-x420-template.c"
4284
4285 /*
4286 * Dissect X420 PDUs inside a PPDU.
4287 */
4288 static void
4289 dissect_x420(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
4290 {
4291         int offset = 0;
4292         proto_item *item=NULL;
4293         proto_tree *tree=NULL;
4294         asn1_ctx_t asn1_ctx;
4295         asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
4296
4297         if(parent_tree){
4298                 item = proto_tree_add_item(parent_tree, proto_x420, tvb, 0, -1, FALSE);
4299                 tree = proto_item_add_subtree(item, ett_x420);
4300         }
4301
4302         if (check_col(pinfo->cinfo, COL_PROTOCOL))
4303                 col_set_str(pinfo->cinfo, COL_PROTOCOL, "P22");
4304         if (check_col(pinfo->cinfo, COL_INFO))
4305           col_set_str(pinfo->cinfo, COL_INFO, "InterPersonal");
4306
4307         dissect_x420_InformationObject(TRUE, tvb, offset, &asn1_ctx , tree, -1);
4308 }
4309
4310
4311 /*--- proto_register_x420 -------------------------------------------*/
4312 void proto_register_x420(void) {
4313
4314   /* List of fields */
4315   static hf_register_info hf[] =
4316   {
4317
4318 /*--- Included file: packet-x420-hfarr.c ---*/
4319 #line 1 "packet-x420-hfarr.c"
4320     { &hf_x420_InformationObject_PDU,
4321       { "InformationObject", "x420.InformationObject",
4322         FT_UINT32, BASE_DEC, VALS(x420_InformationObject_vals), 0,
4323         "x420.InformationObject", HFILL }},
4324     { &hf_x420_Heading_PDU,
4325       { "Heading", "x420.Heading",
4326         FT_NONE, BASE_NONE, NULL, 0,
4327         "x420.Heading", HFILL }},
4328     { &hf_x420_ORDescriptor_PDU,
4329       { "ORDescriptor", "x420.ORDescriptor",
4330         FT_NONE, BASE_NONE, NULL, 0,
4331         "x420.ORDescriptor", HFILL }},
4332     { &hf_x420_ThisIPMField_PDU,
4333       { "ThisIPMField", "x420.ThisIPMField",
4334         FT_NONE, BASE_NONE, NULL, 0,
4335         "x420.ThisIPMField", HFILL }},
4336     { &hf_x420_OriginatorField_PDU,
4337       { "OriginatorField", "x420.OriginatorField",
4338         FT_NONE, BASE_NONE, NULL, 0,
4339         "x420.OriginatorField", HFILL }},
4340     { &hf_x420_AuthorizingUsersSubfield_PDU,
4341       { "AuthorizingUsersSubfield", "x420.AuthorizingUsersSubfield",
4342         FT_NONE, BASE_NONE, NULL, 0,
4343         "x420.AuthorizingUsersSubfield", HFILL }},
4344     { &hf_x420_PrimaryRecipientsSubfield_PDU,
4345       { "PrimaryRecipientsSubfield", "x420.PrimaryRecipientsSubfield",
4346         FT_NONE, BASE_NONE, NULL, 0,
4347         "x420.PrimaryRecipientsSubfield", HFILL }},
4348     { &hf_x420_CopyRecipientsSubfield_PDU,
4349       { "CopyRecipientsSubfield", "x420.CopyRecipientsSubfield",
4350         FT_NONE, BASE_NONE, NULL, 0,
4351         "x420.CopyRecipientsSubfield", HFILL }},
4352     { &hf_x420_BlindCopyRecipientsSubfield_PDU,
4353       { "BlindCopyRecipientsSubfield", "x420.BlindCopyRecipientsSubfield",
4354         FT_NONE, BASE_NONE, NULL, 0,
4355         "x420.BlindCopyRecipientsSubfield", HFILL }},
4356     { &hf_x420_RepliedToIPMField_PDU,
4357       { "RepliedToIPMField", "x420.RepliedToIPMField",
4358         FT_NONE, BASE_NONE, NULL, 0,
4359         "x420.RepliedToIPMField", HFILL }},
4360     { &hf_x420_ObsoletedIPMsSubfield_PDU,
4361       { "ObsoletedIPMsSubfield", "x420.ObsoletedIPMsSubfield",
4362         FT_NONE, BASE_NONE, NULL, 0,
4363         "x420.ObsoletedIPMsSubfield", HFILL }},
4364     { &hf_x420_RelatedIPMsSubfield_PDU,
4365       { "RelatedIPMsSubfield", "x420.RelatedIPMsSubfield",
4366         FT_NONE, BASE_NONE, NULL, 0,
4367         "x420.RelatedIPMsSubfield", HFILL }},
4368     { &hf_x420_SubjectField_PDU,
4369       { "SubjectField", "x420.SubjectField",
4370         FT_STRING, BASE_NONE, NULL, 0,
4371         "x420.SubjectField", HFILL }},
4372     { &hf_x420_ExpiryTimeField_PDU,
4373       { "ExpiryTimeField", "x420.ExpiryTimeField",
4374         FT_STRING, BASE_NONE, NULL, 0,
4375         "x420.ExpiryTimeField", HFILL }},
4376     { &hf_x420_ReplyTimeField_PDU,
4377       { "ReplyTimeField", "x420.ReplyTimeField",
4378         FT_STRING, BASE_NONE, NULL, 0,
4379         "x420.ReplyTimeField", HFILL }},
4380     { &hf_x420_ReplyRecipientsSubfield_PDU,
4381       { "ReplyRecipientsSubfield", "x420.ReplyRecipientsSubfield",
4382         FT_NONE, BASE_NONE, NULL, 0,
4383         "x420.ReplyRecipientsSubfield", HFILL }},
4384     { &hf_x420_ImportanceField_PDU,
4385       { "ImportanceField", "x420.ImportanceField",
4386         FT_UINT32, BASE_DEC, VALS(x420_ImportanceField_vals), 0,
4387         "x420.ImportanceField", HFILL }},
4388     { &hf_x420_SensitivityField_PDU,
4389       { "SensitivityField", "x420.SensitivityField",
4390         FT_UINT32, BASE_DEC, VALS(x420_SensitivityField_vals), 0,
4391         "x420.SensitivityField", HFILL }},
4392     { &hf_x420_AutoForwardedField_PDU,
4393       { "AutoForwardedField", "x420.AutoForwardedField",
4394         FT_BOOLEAN, 8, NULL, 0,
4395         "x420.AutoForwardedField", HFILL }},
4396     { &hf_x420_Body_PDU,
4397       { "Body", "x420.Body",
4398         FT_UINT32, BASE_DEC, NULL, 0,
4399         "x420.Body", HFILL }},
4400     { &hf_x420_IA5TextParameters_PDU,
4401       { "IA5TextParameters", "x420.IA5TextParameters",
4402         FT_NONE, BASE_NONE, NULL, 0,
4403         "x420.IA5TextParameters", HFILL }},
4404     { &hf_x420_IA5TextData_PDU,
4405       { "IA5TextData", "x420.IA5TextData",
4406         FT_STRING, BASE_NONE, NULL, 0,
4407         "x420.IA5TextData", HFILL }},
4408     { &hf_x420_G3FacsimileParameters_PDU,
4409       { "G3FacsimileParameters", "x420.G3FacsimileParameters",
4410         FT_NONE, BASE_NONE, NULL, 0,
4411         "x420.G3FacsimileParameters", HFILL }},
4412     { &hf_x420_G3FacsimileData_PDU,
4413       { "G3FacsimileData", "x420.G3FacsimileData",
4414         FT_UINT32, BASE_DEC, NULL, 0,
4415         "x420.G3FacsimileData", HFILL }},
4416     { &hf_x420_G4Class1BodyPart_PDU,
4417       { "G4Class1BodyPart", "x420.G4Class1BodyPart",
4418         FT_UINT32, BASE_DEC, NULL, 0,
4419         "x420.G4Class1BodyPart", HFILL }},
4420     { &hf_x420_MixedModeBodyPart_PDU,
4421       { "MixedModeBodyPart", "x420.MixedModeBodyPart",
4422         FT_UINT32, BASE_DEC, NULL, 0,
4423         "x420.MixedModeBodyPart", HFILL }},
4424     { &hf_x420_TeletexParameters_PDU,
4425       { "TeletexParameters", "x420.TeletexParameters",
4426         FT_NONE, BASE_NONE, NULL, 0,
4427         "x420.TeletexParameters", HFILL }},
4428     { &hf_x420_TeletexData_PDU,
4429       { "TeletexData", "x420.TeletexData",
4430         FT_UINT32, BASE_DEC, NULL, 0,
4431         "x420.TeletexData", HFILL }},
4432     { &hf_x420_VideotexParameters_PDU,
4433       { "VideotexParameters", "x420.VideotexParameters",
4434         FT_NONE, BASE_NONE, NULL, 0,
4435         "x420.VideotexParameters", HFILL }},
4436     { &hf_x420_VideotexData_PDU,
4437       { "VideotexData", "x420.VideotexData",
4438         FT_STRING, BASE_NONE, NULL, 0,
4439         "x420.VideotexData", HFILL }},
4440     { &hf_x420_EncryptedParameters_PDU,
4441       { "EncryptedParameters", "x420.EncryptedParameters",
4442         FT_NONE, BASE_NONE, NULL, 0,
4443         "x420.EncryptedParameters", HFILL }},
4444     { &hf_x420_EncryptedData_PDU,
4445       { "EncryptedData", "x420.EncryptedData",
4446         FT_BYTES, BASE_HEX, NULL, 0,
4447         "x420.EncryptedData", HFILL }},
4448     { &hf_x420_MessageParameters_PDU,
4449       { "MessageParameters", "x420.MessageParameters",
4450         FT_NONE, BASE_NONE, NULL, 0,
4451         "x420.MessageParameters", HFILL }},
4452     { &hf_x420_MessageData_PDU,
4453       { "MessageData", "x420.MessageData",
4454         FT_NONE, BASE_NONE, NULL, 0,
4455         "x420.MessageData", HFILL }},
4456     { &hf_x420_BilaterallyDefinedBodyPart_PDU,
4457       { "BilaterallyDefinedBodyPart", "x420.BilaterallyDefinedBodyPart",
4458         FT_BYTES, BASE_HEX, NULL, 0,
4459         "x420.BilaterallyDefinedBodyPart", HFILL }},
4460     { &hf_x420_IPN_PDU,
4461       { "IPN", "x420.IPN",
4462         FT_NONE, BASE_NONE, NULL, 0,
4463         "x420.IPN", HFILL }},
4464     { &hf_x420_AbsenceAdvice_PDU,
4465       { "AbsenceAdvice", "x420.AbsenceAdvice",
4466         FT_NONE, BASE_NONE, NULL, 0,
4467         "x420.AbsenceAdvice", HFILL }},
4468     { &hf_x420_ChangeOfAddressAdvice_PDU,
4469       { "ChangeOfAddressAdvice", "x420.ChangeOfAddressAdvice",
4470         FT_NONE, BASE_NONE, NULL, 0,
4471         "x420.ChangeOfAddressAdvice", HFILL }},
4472     { &hf_x420_IPMAssemblyInstructions_PDU,
4473       { "IPMAssemblyInstructions", "x420.IPMAssemblyInstructions",
4474         FT_NONE, BASE_NONE, NULL, 0,
4475         "x420.IPMAssemblyInstructions", HFILL }},
4476     { &hf_x420_IncompleteCopy_PDU,
4477       { "IncompleteCopy", "x420.IncompleteCopy",
4478         FT_NONE, BASE_NONE, NULL, 0,
4479         "x420.IncompleteCopy", HFILL }},
4480     { &hf_x420_Languages_PDU,
4481       { "Languages", "x420.Languages",
4482         FT_UINT32, BASE_DEC, NULL, 0,
4483         "x420.Languages", HFILL }},
4484     { &hf_x420_Language_PDU,
4485       { "Language", "x420.Language",
4486         FT_STRING, BASE_NONE, NULL, 0,
4487         "x420.Language", HFILL }},
4488     { &hf_x420_AutoSubmitted_PDU,
4489       { "AutoSubmitted", "x420.AutoSubmitted",
4490         FT_UINT32, BASE_DEC, VALS(x420_AutoSubmitted_vals), 0,
4491         "x420.AutoSubmitted", HFILL }},
4492     { &hf_x420_BodyPartSignatures_PDU,
4493       { "BodyPartSignatures", "x420.BodyPartSignatures",
4494         FT_UINT32, BASE_DEC, NULL, 0,
4495         "x420.BodyPartSignatures", HFILL }},
4496     { &hf_x420_IPMSecurityLabel_PDU,
4497       { "IPMSecurityLabel", "x420.IPMSecurityLabel",
4498         FT_NONE, BASE_NONE, NULL, 0,
4499         "x420.IPMSecurityLabel", HFILL }},
4500     { &hf_x420_BodyPartSecurityLabel_PDU,
4501       { "BodyPartSecurityLabel", "x420.BodyPartSecurityLabel",
4502         FT_UINT32, BASE_DEC, VALS(x420_BodyPartSecurityLabel_vals), 0,
4503         "x420.BodyPartSecurityLabel", HFILL }},
4504     { &hf_x420_AuthorizationTime_PDU,
4505       { "AuthorizationTime", "x420.AuthorizationTime",
4506         FT_STRING, BASE_NONE, NULL, 0,
4507         "x420.AuthorizationTime", HFILL }},
4508     { &hf_x420_CirculationList_PDU,
4509       { "CirculationList", "x420.CirculationList",
4510         FT_UINT32, BASE_DEC, NULL, 0,
4511         "x420.CirculationList", HFILL }},
4512     { &hf_x420_CirculationMember_PDU,
4513       { "CirculationMember", "x420.CirculationMember",
4514         FT_NONE, BASE_NONE, NULL, 0,
4515         "x420.CirculationMember", HFILL }},
4516     { &hf_x420_CirculationListIndicator_PDU,
4517       { "CirculationListIndicator", "x420.CirculationListIndicator",
4518         FT_NONE, BASE_NONE, NULL, 0,
4519         "x420.CirculationListIndicator", HFILL }},
4520     { &hf_x420_DistributionCodes_PDU,
4521       { "DistributionCodes", "x420.DistributionCodes",
4522         FT_UINT32, BASE_DEC, NULL, 0,
4523         "x420.DistributionCodes", HFILL }},
4524     { &hf_x420_DistributionCode_PDU,
4525       { "DistributionCode", "x420.DistributionCode",
4526         FT_NONE, BASE_NONE, NULL, 0,
4527         "x420.DistributionCode", HFILL }},
4528     { &hf_x420_ExtendedSubject_PDU,
4529       { "ExtendedSubject", "x420.ExtendedSubject",
4530         FT_NONE, BASE_NONE, NULL, 0,
4531         "x420.ExtendedSubject", HFILL }},
4532     { &hf_x420_InformationCategories_PDU,
4533       { "InformationCategories", "x420.InformationCategories",
4534         FT_UINT32, BASE_DEC, NULL, 0,
4535         "x420.InformationCategories", HFILL }},
4536     { &hf_x420_InformationCategory_PDU,
4537       { "InformationCategory", "x420.InformationCategory",
4538         FT_NONE, BASE_NONE, NULL, 0,
4539         "x420.InformationCategory", HFILL }},
4540     { &hf_x420_ManualHandlingInstructions_PDU,
4541       { "ManualHandlingInstructions", "x420.ManualHandlingInstructions",
4542         FT_UINT32, BASE_DEC, NULL, 0,
4543         "x420.ManualHandlingInstructions", HFILL }},
4544     { &hf_x420_ManualHandlingInstruction_PDU,
4545       { "ManualHandlingInstruction", "x420.ManualHandlingInstruction",
4546         FT_NONE, BASE_NONE, NULL, 0,
4547         "x420.ManualHandlingInstruction", HFILL }},
4548     { &hf_x420_OriginatorsReference_PDU,
4549       { "OriginatorsReference", "x420.OriginatorsReference",
4550         FT_NONE, BASE_NONE, NULL, 0,
4551         "x420.OriginatorsReference", HFILL }},
4552     { &hf_x420_PrecedencePolicyIdentifier_PDU,
4553       { "PrecedencePolicyIdentifier", "x420.PrecedencePolicyIdentifier",
4554         FT_OID, BASE_NONE, NULL, 0,
4555         "x420.PrecedencePolicyIdentifier", HFILL }},
4556     { &hf_x420_Precedence_PDU,
4557       { "Precedence", "x420.Precedence",
4558         FT_UINT32, BASE_DEC, NULL, 0,
4559         "x420.Precedence", HFILL }},
4560     { &hf_x420_GeneralTextParameters_PDU,
4561       { "GeneralTextParameters", "x420.GeneralTextParameters",
4562         FT_UINT32, BASE_DEC, NULL, 0,
4563         "x420.GeneralTextParameters", HFILL }},
4564     { &hf_x420_GeneralTextData_PDU,
4565       { "GeneralTextData", "x420.GeneralTextData",
4566         FT_STRING, BASE_NONE, NULL, 0,
4567         "x420.GeneralTextData", HFILL }},
4568     { &hf_x420_FileTransferParameters_PDU,
4569       { "FileTransferParameters", "x420.FileTransferParameters",
4570         FT_NONE, BASE_NONE, NULL, 0,
4571         "x420.FileTransferParameters", HFILL }},
4572     { &hf_x420_FileTransferData_PDU,
4573       { "FileTransferData", "x420.FileTransferData",
4574         FT_UINT32, BASE_DEC, NULL, 0,
4575         "x420.FileTransferData", HFILL }},
4576     { &hf_x420_VoiceParameters_PDU,
4577       { "VoiceParameters", "x420.VoiceParameters",
4578         FT_NONE, BASE_NONE, NULL, 0,
4579         "x420.VoiceParameters", HFILL }},
4580     { &hf_x420_VoiceData_PDU,
4581       { "VoiceData", "x420.VoiceData",
4582         FT_BYTES, BASE_HEX, NULL, 0,
4583         "x420.VoiceData", HFILL }},
4584     { &hf_x420_ForwardedContentParameters_PDU,
4585       { "ForwardedContentParameters", "x420.ForwardedContentParameters",
4586         FT_NONE, BASE_NONE, NULL, 0,
4587         "x420.ForwardedContentParameters", HFILL }},
4588     { &hf_x420_IPMEntryType_PDU,
4589       { "IPMEntryType", "x420.IPMEntryType",
4590         FT_UINT32, BASE_DEC, VALS(x420_IPMEntryType_vals), 0,
4591         "x420.IPMEntryType", HFILL }},
4592     { &hf_x420_IPMSynopsis_PDU,
4593       { "IPMSynopsis", "x420.IPMSynopsis",
4594         FT_UINT32, BASE_DEC, NULL, 0,
4595         "x420.IPMSynopsis", HFILL }},
4596     { &hf_x420_BodyPartDescriptor_PDU,
4597       { "BodyPartDescriptor", "x420.BodyPartDescriptor",
4598         FT_NONE, BASE_NONE, NULL, 0,
4599         "x420.BodyPartDescriptor", HFILL }},
4600     { &hf_x420_BodyPartSignatureVerification_PDU,
4601       { "BodyPartSignatureVerification", "x420.BodyPartSignatureVerification",
4602         FT_UINT32, BASE_DEC, NULL, 0,
4603         "x420.BodyPartSignatureVerification", HFILL }},
4604     { &hf_x420_IPMLocation_PDU,
4605       { "IPMLocation", "x420.IPMLocation",
4606         FT_UINT32, BASE_DEC, VALS(x420_IPMLocation_vals), 0,
4607         "x420.IPMLocation", HFILL }},
4608     { &hf_x420_DeliveredReplyStatus_PDU,
4609       { "DeliveredReplyStatus", "x420.DeliveredReplyStatus",
4610         FT_INT32, BASE_DEC, VALS(x420_DeliveredReplyStatus_vals), 0,
4611         "x420.DeliveredReplyStatus", HFILL }},
4612     { &hf_x420_CorrelatedDeliveredReplies_PDU,
4613       { "CorrelatedDeliveredReplies", "x420.CorrelatedDeliveredReplies",
4614         FT_UINT32, BASE_DEC, VALS(x420_CorrelatedDeliveredReplies_vals), 0,
4615         "x420.CorrelatedDeliveredReplies", HFILL }},
4616     { &hf_x420_DeliveredIPNStatus_PDU,
4617       { "DeliveredIPNStatus", "x420.DeliveredIPNStatus",
4618         FT_INT32, BASE_DEC, VALS(x420_DeliveredIPNStatus_vals), 0,
4619         "x420.DeliveredIPNStatus", HFILL }},
4620     { &hf_x420_CorrelatedDeliveredIPNs_PDU,
4621       { "CorrelatedDeliveredIPNs", "x420.CorrelatedDeliveredIPNs",
4622         FT_UINT32, BASE_DEC, VALS(x420_CorrelatedDeliveredIPNs_vals), 0,
4623         "x420.CorrelatedDeliveredIPNs", HFILL }},
4624     { &hf_x420_SubmittedReplyStatus_PDU,
4625       { "SubmittedReplyStatus", "x420.SubmittedReplyStatus",
4626         FT_INT32, BASE_DEC, VALS(x420_SubmittedReplyStatus_vals), 0,
4627         "x420.SubmittedReplyStatus", HFILL }},
4628     { &hf_x420_SubmittedIPNStatus_PDU,
4629       { "SubmittedIPNStatus", "x420.SubmittedIPNStatus",
4630         FT_INT32, BASE_DEC, VALS(x420_SubmittedIPNStatus_vals), 0,
4631         "x420.SubmittedIPNStatus", HFILL }},
4632     { &hf_x420_RecipientCategory_PDU,
4633       { "RecipientCategory", "x420.RecipientCategory",
4634         FT_INT32, BASE_DEC, VALS(x420_RecipientCategory_vals), 0,
4635         "x420.RecipientCategory", HFILL }},
4636     { &hf_x420_RecipientSecurityRequest_PDU,
4637       { "RecipientSecurityRequest", "x420.RecipientSecurityRequest",
4638         FT_BYTES, BASE_HEX, NULL, 0,
4639         "x420.RecipientSecurityRequest", HFILL }},
4640     { &hf_x420_IpnSecurityResponse_PDU,
4641       { "IpnSecurityResponse", "x420.IpnSecurityResponse",
4642         FT_NONE, BASE_NONE, NULL, 0,
4643         "x420.IpnSecurityResponse", HFILL }},
4644     { &hf_x420_BodyPartTokens_PDU,
4645       { "BodyPartTokens", "x420.BodyPartTokens",
4646         FT_UINT32, BASE_DEC, NULL, 0,
4647         "x420.BodyPartTokens", HFILL }},
4648     { &hf_x420_ForwardedContentToken_PDU,
4649       { "ForwardedContentToken", "x420.ForwardedContentToken",
4650         FT_UINT32, BASE_DEC, NULL, 0,
4651         "x420.ForwardedContentToken", HFILL }},
4652     { &hf_x420_ipm,
4653       { "ipm", "x420.ipm",
4654         FT_NONE, BASE_NONE, NULL, 0,
4655         "x420.IPM", HFILL }},
4656     { &hf_x420_ipn,
4657       { "ipn", "x420.ipn",
4658         FT_NONE, BASE_NONE, NULL, 0,
4659         "x420.IPN", HFILL }},
4660     { &hf_x420_heading,
4661       { "heading", "x420.heading",
4662         FT_NONE, BASE_NONE, NULL, 0,
4663         "x420.Heading", HFILL }},
4664     { &hf_x420_body,
4665       { "body", "x420.body",
4666         FT_UINT32, BASE_DEC, NULL, 0,
4667         "x420.Body", HFILL }},
4668     { &hf_x420_type,
4669       { "type", "x420.type",
4670         FT_OID, BASE_NONE, NULL, 0,
4671         "x420.T_type", HFILL }},
4672     { &hf_x420_value,
4673       { "value", "x420.value",
4674         FT_NONE, BASE_NONE, NULL, 0,
4675         "x420.T_value", HFILL }},
4676     { &hf_x420_this_IPM,
4677       { "this-IPM", "x420.this_IPM",
4678         FT_NONE, BASE_NONE, NULL, 0,
4679         "x420.ThisIPMField", HFILL }},
4680     { &hf_x420_originator,
4681       { "originator", "x420.originator",
4682         FT_NONE, BASE_NONE, NULL, 0,
4683         "x420.OriginatorField", HFILL }},
4684     { &hf_x420_authorizing_users,
4685       { "authorizing-users", "x420.authorizing_users",
4686         FT_UINT32, BASE_DEC, NULL, 0,
4687         "x420.AuthorizingUsersField", HFILL }},
4688     { &hf_x420_primary_recipients,
4689       { "primary-recipients", "x420.primary_recipients",
4690         FT_UINT32, BASE_DEC, NULL, 0,
4691         "x420.PrimaryRecipientsField", HFILL }},
4692     { &hf_x420_copy_recipients,
4693       { "copy-recipients", "x420.copy_recipients",
4694         FT_UINT32, BASE_DEC, NULL, 0,
4695         "x420.CopyRecipientsField", HFILL }},
4696     { &hf_x420_blind_copy_recipients,
4697       { "blind-copy-recipients", "x420.blind_copy_recipients",
4698         FT_UINT32, BASE_DEC, NULL, 0,
4699         "x420.BlindCopyRecipientsField", HFILL }},
4700     { &hf_x420_replied_to_IPM,
4701       { "replied-to-IPM", "x420.replied_to_IPM",
4702         FT_NONE, BASE_NONE, NULL, 0,
4703         "x420.RepliedToIPMField", HFILL }},
4704     { &hf_x420_obsoleted_IPMs,
4705       { "obsoleted-IPMs", "x420.obsoleted_IPMs",
4706         FT_UINT32, BASE_DEC, NULL, 0,
4707         "x420.ObsoletedIPMsField", HFILL }},
4708     { &hf_x420_related_IPMs,
4709       { "related-IPMs", "x420.related_IPMs",
4710         FT_UINT32, BASE_DEC, NULL, 0,
4711         "x420.RelatedIPMsField", HFILL }},
4712     { &hf_x420_subject,
4713       { "subject", "x420.subject",
4714         FT_STRING, BASE_NONE, NULL, 0,
4715         "x420.SubjectField", HFILL }},
4716     { &hf_x420_expiry_time,
4717       { "expiry-time", "x420.expiry_time",
4718         FT_STRING, BASE_NONE, NULL, 0,
4719         "x420.ExpiryTimeField", HFILL }},
4720     { &hf_x420_reply_time,
4721       { "reply-time", "x420.reply_time",
4722         FT_STRING, BASE_NONE, NULL, 0,
4723         "x420.ReplyTimeField", HFILL }},
4724     { &hf_x420_reply_recipients,
4725       { "reply-recipients", "x420.reply_recipients",
4726         FT_UINT32, BASE_DEC, NULL, 0,
4727         "x420.ReplyRecipientsField", HFILL }},
4728     { &hf_x420_importance,
4729       { "importance", "x420.importance",
4730         FT_UINT32, BASE_DEC, VALS(x420_ImportanceField_vals), 0,
4731         "x420.ImportanceField", HFILL }},
4732     { &hf_x420_sensitivity,
4733       { "sensitivity", "x420.sensitivity",
4734         FT_UINT32, BASE_DEC, VALS(x420_SensitivityField_vals), 0,
4735         "x420.SensitivityField", HFILL }},
4736     { &hf_x420_auto_forwarded,
4737       { "auto-forwarded", "x420.auto_forwarded",
4738         FT_BOOLEAN, 8, NULL, 0,
4739         "x420.AutoForwardedField", HFILL }},
4740     { &hf_x420_extensions,
4741       { "extensions", "x420.extensions",
4742         FT_UINT32, BASE_DEC, NULL, 0,
4743         "x420.ExtensionsField", HFILL }},
4744     { &hf_x420_user,
4745       { "user", "x420.user",
4746         FT_NONE, BASE_NONE, NULL, 0,
4747         "x411.ORName", HFILL }},
4748     { &hf_x420_user_relative_identifier,
4749       { "user-relative-identifier", "x420.user_relative_identifier",
4750         FT_STRING, BASE_NONE, NULL, 0,
4751         "x420.LocalIPMIdentifier", HFILL }},
4752     { &hf_x420_recipient,
4753       { "recipient", "x420.recipient",
4754         FT_NONE, BASE_NONE, NULL, 0,
4755         "x420.ORDescriptor", HFILL }},
4756     { &hf_x420_notification_requests,
4757       { "notification-requests", "x420.notification_requests",
4758         FT_BYTES, BASE_HEX, NULL, 0,
4759         "x420.NotificationRequests", HFILL }},
4760     { &hf_x420_reply_requested,
4761       { "reply-requested", "x420.reply_requested",
4762         FT_BOOLEAN, 8, NULL, 0,
4763         "x420.BOOLEAN", HFILL }},
4764     { &hf_x420_recipient_extensions,
4765       { "recipient-extensions", "x420.recipient_extensions",
4766         FT_UINT32, BASE_DEC, NULL, 0,
4767         "x420.RecipientExtensionsField", HFILL }},
4768     { &hf_x420_formal_name,
4769       { "formal-name", "x420.formal_name",
4770         FT_NONE, BASE_NONE, NULL, 0,
4771         "x411.ORName", HFILL }},
4772     { &hf_x420_free_form_name,
4773       { "free-form-name", "x420.free_form_name",
4774         FT_STRING, BASE_NONE, NULL, 0,
4775         "x420.FreeFormName", HFILL }},
4776     { &hf_x420_telephone_number,
4777       { "telephone-number", "x420.telephone_number",
4778         FT_STRING, BASE_NONE, NULL, 0,
4779         "x420.TelephoneNumber", HFILL }},
4780     { &hf_x420_RecipientExtensionsField_item,
4781       { "RecipientExtensionsField", "x420.RecipientExtensionsField_item",
4782         FT_NONE, BASE_NONE, NULL, 0,
4783         "x420.IPMSExtension", HFILL }},
4784     { &hf_x420_AuthorizingUsersField_item,
4785       { "AuthorizingUsersField", "x420.AuthorizingUsersField_item",
4786         FT_NONE, BASE_NONE, NULL, 0,
4787         "x420.AuthorizingUsersSubfield", HFILL }},
4788     { &hf_x420_PrimaryRecipientsField_item,
4789       { "PrimaryRecipientsField", "x420.PrimaryRecipientsField_item",
4790         FT_NONE, BASE_NONE, NULL, 0,
4791         "x420.PrimaryRecipientsSubfield", HFILL }},
4792     { &hf_x420_CopyRecipientsField_item,
4793       { "CopyRecipientsField", "x420.CopyRecipientsField_item",
4794         FT_NONE, BASE_NONE, NULL, 0,
4795         "x420.CopyRecipientsSubfield", HFILL }},
4796     { &hf_x420_BlindCopyRecipientsField_item,
4797       { "BlindCopyRecipientsField", "x420.BlindCopyRecipientsField_item",
4798         FT_NONE, BASE_NONE, NULL, 0,
4799         "x420.BlindCopyRecipientsSubfield", HFILL }},
4800     { &hf_x420_ObsoletedIPMsField_item,
4801       { "ObsoletedIPMsField", "x420.ObsoletedIPMsField_item",
4802         FT_NONE, BASE_NONE, NULL, 0,
4803         "x420.ObsoletedIPMsSubfield", HFILL }},
4804     { &hf_x420_RelatedIPMsField_item,
4805       { "RelatedIPMsField", "x420.RelatedIPMsField_item",
4806         FT_NONE, BASE_NONE, NULL, 0,
4807         "x420.RelatedIPMsSubfield", HFILL }},
4808     { &hf_x420_ReplyRecipientsField_item,
4809       { "ReplyRecipientsField", "x420.ReplyRecipientsField_item",
4810         FT_NONE, BASE_NONE, NULL, 0,
4811         "x420.ReplyRecipientsSubfield", HFILL }},
4812     { &hf_x420_ExtensionsField_item,
4813       { "ExtensionsField", "x420.ExtensionsField_item",
4814         FT_NONE, BASE_NONE, NULL, 0,
4815         "x420.IPMSExtension", HFILL }},
4816     { &hf_x420_Body_item,
4817       { "Body", "x420.Body_item",
4818         FT_UINT32, BASE_DEC, VALS(x420_BodyPart_vals), 0,
4819         "x420.BodyPart", HFILL }},
4820     { &hf_x420_basic,
4821       { "basic", "x420.basic",
4822         FT_UINT32, BASE_DEC, VALS(x420_T_basic_vals), 0,
4823         "x420.T_basic", HFILL }},
4824     { &hf_x420_ia5_text,
4825       { "ia5-text", "x420.ia5_text",
4826         FT_NONE, BASE_NONE, NULL, 0,
4827         "x420.IA5TextBodyPart", HFILL }},
4828     { &hf_x420_g3_facsimile,
4829       { "g3-facsimile", "x420.g3_facsimile",
4830         FT_NONE, BASE_NONE, NULL, 0,
4831         "x420.G3FacsimileBodyPart", HFILL }},
4832     { &hf_x420_g4_class1,
4833       { "g4-class1", "x420.g4_class1",
4834         FT_UINT32, BASE_DEC, NULL, 0,
4835         "x420.G4Class1BodyPart", HFILL }},
4836     { &hf_x420_teletex,
4837       { "teletex", "x420.teletex",
4838         FT_NONE, BASE_NONE, NULL, 0,
4839         "x420.TeletexBodyPart", HFILL }},
4840     { &hf_x420_videotex,
4841       { "videotex", "x420.videotex",
4842         FT_NONE, BASE_NONE, NULL, 0,
4843         "x420.VideotexBodyPart", HFILL }},
4844     { &hf_x420_encrypted_bp,
4845       { "encrypted", "x420.encrypted",
4846         FT_NONE, BASE_NONE, NULL, 0,
4847         "x420.EncryptedBodyPart", HFILL }},
4848     { &hf_x420_message,
4849       { "message", "x420.message",
4850         FT_NONE, BASE_NONE, NULL, 0,
4851         "x420.MessageBodyPart", HFILL }},
4852     { &hf_x420_mixed_mode,
4853       { "mixed-mode", "x420.mixed_mode",
4854         FT_UINT32, BASE_DEC, NULL, 0,
4855         "x420.MixedModeBodyPart", HFILL }},
4856     { &hf_x420_bilaterally_defined,
4857       { "bilaterally-defined", "x420.bilaterally_defined",
4858         FT_BYTES, BASE_HEX, NULL, 0,
4859         "x420.BilaterallyDefinedBodyPart", HFILL }},
4860     { &hf_x420_nationally_defined,
4861       { "nationally-defined", "x420.nationally_defined",
4862         FT_NONE, BASE_NONE, NULL, 0,
4863         "x420.NationallyDefinedBodyPart", HFILL }},
4864     { &hf_x420_extended,
4865       { "extended", "x420.extended",
4866         FT_NONE, BASE_NONE, NULL, 0,
4867         "x420.ExtendedBodyPart", HFILL }},
4868     { &hf_x420_extended_parameters,
4869       { "parameters", "x420.parameters",
4870         FT_NONE, BASE_NONE, NULL, 0,
4871         "x420.INSTANCE_OF", HFILL }},
4872     { &hf_x420_extended_data,
4873       { "data", "x420.data",
4874         FT_NONE, BASE_NONE, NULL, 0,
4875         "x420.INSTANCE_OF", HFILL }},
4876     { &hf_x420_ia5text_parameters,
4877       { "parameters", "x420.parameters",
4878         FT_NONE, BASE_NONE, NULL, 0,
4879         "x420.IA5TextParameters", HFILL }},
4880     { &hf_x420_ia5text_data,
4881       { "data", "x420.data",
4882         FT_STRING, BASE_NONE, NULL, 0,
4883         "x420.IA5TextData", HFILL }},
4884     { &hf_x420_repertoire,
4885       { "repertoire", "x420.repertoire",
4886         FT_UINT32, BASE_DEC, VALS(x420_Repertoire_vals), 0,
4887         "x420.Repertoire", HFILL }},
4888     { &hf_x420_g3facsimile_parameters,
4889       { "parameters", "x420.parameters",
4890         FT_NONE, BASE_NONE, NULL, 0,
4891         "x420.G3FacsimileParameters", HFILL }},
4892     { &hf_x420_g3facsimile_data,
4893       { "data", "x420.data",
4894         FT_UINT32, BASE_DEC, NULL, 0,
4895         "x420.G3FacsimileData", HFILL }},
4896     { &hf_x420_number_of_pages,
4897       { "number-of-pages", "x420.number_of_pages",
4898         FT_INT32, BASE_DEC, NULL, 0,
4899         "x420.INTEGER", HFILL }},
4900     { &hf_x420_g3facsimile_non_basic_parameters,
4901       { "non-basic-parameters", "x420.non_basic_parameters",
4902         FT_BYTES, BASE_HEX, NULL, 0,
4903         "x411.G3FacsimileNonBasicParameters", HFILL }},
4904     { &hf_x420_G3FacsimileData_item,
4905       { "G3FacsimileData", "x420.G3FacsimileData_item",
4906         FT_BYTES, BASE_HEX, NULL, 0,
4907         "x420.BIT_STRING", HFILL }},
4908     { &hf_x420_G4Class1BodyPart_item,
4909       { "G4Class1BodyPart", "x420.G4Class1BodyPart_item",
4910         FT_NONE, BASE_NONE, NULL, 0,
4911         "x420.Interchange_Data_Element", HFILL }},
4912     { &hf_x420_MixedModeBodyPart_item,
4913       { "MixedModeBodyPart", "x420.MixedModeBodyPart_item",
4914         FT_NONE, BASE_NONE, NULL, 0,
4915         "x420.Interchange_Data_Element", HFILL }},
4916     { &hf_x420_teletex_parameters,
4917       { "parameters", "x420.parameters",
4918         FT_NONE, BASE_NONE, NULL, 0,
4919         "x420.TeletexParameters", HFILL }},
4920     { &hf_x420_teletex_data,
4921       { "data", "x420.data",
4922         FT_UINT32, BASE_DEC, NULL, 0,
4923         "x420.TeletexData", HFILL }},
4924     { &hf_x420_telex_compatible,
4925       { "telex-compatible", "x420.telex_compatible",
4926         FT_BOOLEAN, 8, NULL, 0,
4927         "x420.BOOLEAN", HFILL }},
4928     { &hf_x420_teletex_non_basic_parameters,
4929       { "non-basic-parameters", "x420.non_basic_parameters",
4930         FT_NONE, BASE_NONE, NULL, 0,
4931         "x411.TeletexNonBasicParameters", HFILL }},
4932     { &hf_x420_TeletexData_item,
4933       { "TeletexData", "x420.TeletexData_item",
4934         FT_STRING, BASE_NONE, NULL, 0,
4935         "x420.TeletexString", HFILL }},
4936     { &hf_x420_videotex_parameters,
4937       { "parameters", "x420.parameters",
4938         FT_NONE, BASE_NONE, NULL, 0,
4939         "x420.VideotexParameters", HFILL }},
4940     { &hf_x420_videotex_data,
4941       { "data", "x420.data",
4942         FT_STRING, BASE_NONE, NULL, 0,
4943         "x420.VideotexData", HFILL }},
4944     { &hf_x420_syntax,
4945       { "syntax", "x420.syntax",
4946         FT_INT32, BASE_DEC, VALS(x420_VideotexSyntax_vals), 0,
4947         "x420.VideotexSyntax", HFILL }},
4948     { &hf_x420_encrypted_parameters,
4949       { "parameters", "x420.parameters",
4950         FT_NONE, BASE_NONE, NULL, 0,
4951         "x420.EncryptedParameters", HFILL }},
4952     { &hf_x420_encrypted_data,
4953       { "data", "x420.data",
4954         FT_BYTES, BASE_HEX, NULL, 0,
4955         "x420.EncryptedData", HFILL }},
4956     { &hf_x420_algorithm_identifier,
4957       { "algorithm-identifier", "x420.algorithm_identifier",
4958         FT_NONE, BASE_NONE, NULL, 0,
4959         "x509af.AlgorithmIdentifier", HFILL }},
4960     { &hf_x420_originator_certificates,
4961       { "originator-certificates", "x420.originator_certificates",
4962         FT_UINT32, BASE_DEC, NULL, 0,
4963         "x411.ExtendedCertificates", HFILL }},
4964     { &hf_x420_message_parameters,
4965       { "parameters", "x420.parameters",
4966         FT_NONE, BASE_NONE, NULL, 0,
4967         "x420.MessageParameters", HFILL }},
4968     { &hf_x420_message_data,
4969       { "data", "x420.data",
4970         FT_NONE, BASE_NONE, NULL, 0,
4971         "x420.MessageData", HFILL }},
4972     { &hf_x420_delivery_time,
4973       { "delivery-time", "x420.delivery_time",
4974         FT_STRING, BASE_NONE, NULL, 0,
4975         "x411.MessageDeliveryTime", HFILL }},
4976     { &hf_x420_delivery_envelope,
4977       { "delivery-envelope", "x420.delivery_envelope",
4978         FT_NONE, BASE_NONE, NULL, 0,
4979         "x411.OtherMessageDeliveryFields", HFILL }},
4980     { &hf_x420_subject_ipm,
4981       { "subject-ipm", "x420.subject_ipm",
4982         FT_NONE, BASE_NONE, NULL, 0,
4983         "x420.SubjectIPMField", HFILL }},
4984     { &hf_x420_ipn_originator,
4985       { "ipn-originator", "x420.ipn_originator",
4986         FT_NONE, BASE_NONE, NULL, 0,
4987         "x420.IPNOriginatorField", HFILL }},
4988     { &hf_x420_ipm_intended_recipient,
4989       { "ipm-intended-recipient", "x420.ipm_intended_recipient",
4990         FT_NONE, BASE_NONE, NULL, 0,
4991         "x420.IPMIntendedRecipientField", HFILL }},
4992     { &hf_x420_conversion_eits,
4993       { "conversion-eits", "x420.conversion_eits",
4994         FT_NONE, BASE_NONE, NULL, 0,
4995         "x420.ConversionEITsField", HFILL }},
4996     { &hf_x420_notification_extensions,
4997       { "notification-extensions", "x420.notification_extensions",
4998         FT_UINT32, BASE_DEC, NULL, 0,
4999         "x420.NotificationExtensionsField", HFILL }},
5000     { &hf_x420_non_receipt_reason,
5001       { "non-receipt-reason", "x420.non_receipt_reason",
5002         FT_UINT32, BASE_DEC, VALS(x420_NonReceiptReasonField_vals), 0,
5003         "x420.NonReceiptReasonField", HFILL }},
5004     { &hf_x420_discard_reason,
5005       { "discard-reason", "x420.discard_reason",
5006         FT_UINT32, BASE_DEC, VALS(x420_DiscardReasonField_vals), 0,
5007         "x420.DiscardReasonField", HFILL }},
5008     { &hf_x420_auto_forward_comment,
5009       { "auto-forward-comment", "x420.auto_forward_comment",
5010         FT_STRING, BASE_NONE, NULL, 0,
5011         "x420.AutoForwardCommentField", HFILL }},
5012     { &hf_x420_returned_ipm,
5013       { "returned-ipm", "x420.returned_ipm",
5014         FT_NONE, BASE_NONE, NULL, 0,
5015         "x420.ReturnedIPMField", HFILL }},
5016     { &hf_x420_nrn_extensions,
5017       { "nrn-extensions", "x420.nrn_extensions",
5018         FT_UINT32, BASE_DEC, NULL, 0,
5019         "x420.NRNExtensionsField", HFILL }},
5020     { &hf_x420_receipt_time,
5021       { "receipt-time", "x420.receipt_time",
5022         FT_STRING, BASE_NONE, NULL, 0,
5023         "x420.ReceiptTimeField", HFILL }},
5024     { &hf_x420_acknowledgment_mode,
5025       { "acknowledgment-mode", "x420.acknowledgment_mode",
5026         FT_UINT32, BASE_DEC, VALS(x420_AcknowledgmentModeField_vals), 0,
5027         "x420.AcknowledgmentModeField", HFILL }},
5028     { &hf_x420_suppl_receipt_info,
5029       { "suppl-receipt-info", "x420.suppl_receipt_info",
5030         FT_STRING, BASE_NONE, NULL, 0,
5031         "x420.SupplReceiptInfoField", HFILL }},
5032     { &hf_x420_rn_extensions,
5033       { "rn-extensions", "x420.rn_extensions",
5034         FT_UINT32, BASE_DEC, NULL, 0,
5035         "x420.RNExtensionsField", HFILL }},
5036     { &hf_x420_NotificationExtensionsField_item,
5037       { "NotificationExtensionsField", "x420.NotificationExtensionsField_item",
5038         FT_NONE, BASE_NONE, NULL, 0,
5039         "x420.IPMSExtension", HFILL }},
5040     { &hf_x420_NRNExtensionsField_item,
5041       { "NRNExtensionsField", "x420.NRNExtensionsField_item",
5042         FT_NONE, BASE_NONE, NULL, 0,
5043         "x420.IPMSExtension", HFILL }},
5044     { &hf_x420_RNExtensionsField_item,
5045       { "RNExtensionsField", "x420.RNExtensionsField_item",
5046         FT_NONE, BASE_NONE, NULL, 0,
5047         "x420.IPMSExtension", HFILL }},
5048     { &hf_x420_OtherNotificationTypeFields_item,
5049       { "OtherNotificationTypeFields", "x420.OtherNotificationTypeFields_item",
5050         FT_NONE, BASE_NONE, NULL, 0,
5051         "x420.IPMSExtension", HFILL }},
5052     { &hf_x420_advice,
5053       { "advice", "x420.advice",
5054         FT_UINT32, BASE_DEC, VALS(x420_BodyPart_vals), 0,
5055         "x420.BodyPart", HFILL }},
5056     { &hf_x420_next_available,
5057       { "next-available", "x420.next_available",
5058         FT_STRING, BASE_NONE, NULL, 0,
5059         "x420.Time", HFILL }},
5060     { &hf_x420_new_address,
5061       { "new-address", "x420.new_address",
5062         FT_NONE, BASE_NONE, NULL, 0,
5063         "x420.ORDescriptor", HFILL }},
5064     { &hf_x420_effective_from,
5065       { "effective-from", "x420.effective_from",
5066         FT_STRING, BASE_NONE, NULL, 0,
5067         "x420.Time", HFILL }},
5068     { &hf_x420_assembly_instructions,
5069       { "assembly-instructions", "x420.assembly_instructions",
5070         FT_UINT32, BASE_DEC, NULL, 0,
5071         "x420.BodyPartReferences", HFILL }},
5072     { &hf_x420_BodyPartReferences_item,
5073       { "BodyPartReferences", "x420.BodyPartReferences_item",
5074         FT_UINT32, BASE_DEC, VALS(x420_BodyPartReference_vals), 0,
5075         "x420.BodyPartReference", HFILL }},
5076     { &hf_x420_stored_entry,
5077       { "stored-entry", "x420.stored_entry",
5078         FT_UINT32, BASE_DEC, NULL, 0,
5079         "p7.SequenceNumber", HFILL }},
5080     { &hf_x420_stored_content,
5081       { "stored-content", "x420.stored_content",
5082         FT_UINT32, BASE_DEC, NULL, 0,
5083         "p7.SequenceNumber", HFILL }},
5084     { &hf_x420_submitted_body_part,
5085       { "submitted-body-part", "x420.submitted_body_part",
5086         FT_UINT32, BASE_DEC, NULL, 0,
5087         "x420.INTEGER_1_MAX", HFILL }},
5088     { &hf_x420_stored_body_part,
5089       { "stored-body-part", "x420.stored_body_part",
5090         FT_NONE, BASE_NONE, NULL, 0,
5091         "x420.T_stored_body_part", HFILL }},
5092     { &hf_x420_message_entry,
5093       { "message-entry", "x420.message_entry",
5094         FT_UINT32, BASE_DEC, NULL, 0,
5095         "p7.SequenceNumber", HFILL }},
5096     { &hf_x420_body_part_number,
5097       { "body-part-number", "x420.body_part_number",
5098         FT_UINT32, BASE_DEC, NULL, 0,
5099         "x420.BodyPartNumber", HFILL }},
5100     { &hf_x420_Languages_item,
5101       { "Languages", "x420.Languages_item",
5102         FT_STRING, BASE_NONE, NULL, 0,
5103         "x420.Language", HFILL }},
5104     { &hf_x420_BodyPartSignatures_item,
5105       { "BodyPartSignatures", "x420.BodyPartSignatures_item",
5106         FT_NONE, BASE_NONE, NULL, 0,
5107         "x420.BodyPartSignatures_item", HFILL }},
5108     { &hf_x420_body_part_signature,
5109       { "body-part-signature", "x420.body_part_signature",
5110         FT_NONE, BASE_NONE, NULL, 0,
5111         "x420.BodyPartSignature", HFILL }},
5112     { &hf_x420_originator_certificate_selector,
5113       { "originator-certificate-selector", "x420.originator_certificate_selector",
5114         FT_NONE, BASE_NONE, NULL, 0,
5115         "x509ce.CertificateAssertion", HFILL }},
5116     { &hf_x420_algorithmIdentifier,
5117       { "algorithmIdentifier", "x420.algorithmIdentifier",
5118         FT_NONE, BASE_NONE, NULL, 0,
5119         "x509af.AlgorithmIdentifier", HFILL }},
5120     { &hf_x420_encrypted,
5121       { "encrypted", "x420.encrypted",
5122         FT_BYTES, BASE_HEX, NULL, 0,
5123         "x420.BIT_STRING", HFILL }},
5124     { &hf_x420_content_security_label,
5125       { "content-security-label", "x420.content_security_label",
5126         FT_NONE, BASE_NONE, NULL, 0,
5127         "x411.SecurityLabel", HFILL }},
5128     { &hf_x420_heading_security_label,
5129       { "heading-security-label", "x420.heading_security_label",
5130         FT_NONE, BASE_NONE, NULL, 0,
5131         "x411.SecurityLabel", HFILL }},
5132     { &hf_x420_body_part_security_labels,
5133       { "body-part-security-labels", "x420.body_part_security_labels",
5134         FT_UINT32, BASE_DEC, NULL, 0,
5135         "x420.SEQUENCE_OF_BodyPartSecurityLabel", HFILL }},
5136     { &hf_x420_body_part_security_labels_item,
5137       { "body-part-security-labels", "x420.body_part_security_labels_item",
5138         FT_UINT32, BASE_DEC, VALS(x420_BodyPartSecurityLabel_vals), 0,
5139         "x420.BodyPartSecurityLabel", HFILL }},
5140     { &hf_x420_body_part_unlabelled,
5141       { "body-part-unlabelled", "x420.body_part_unlabelled",
5142         FT_NONE, BASE_NONE, NULL, 0,
5143         "x420.NULL", HFILL }},
5144     { &hf_x420_body_part_security_label,
5145       { "body-part-security-label", "x420.body_part_security_label",
5146         FT_NONE, BASE_NONE, NULL, 0,
5147         "x411.SecurityLabel", HFILL }},
5148     { &hf_x420_CirculationList_item,
5149       { "CirculationList", "x420.CirculationList_item",
5150         FT_NONE, BASE_NONE, NULL, 0,
5151         "x420.CirculationMember", HFILL }},
5152     { &hf_x420_circulation_recipient,
5153       { "circulation-recipient", "x420.circulation_recipient",
5154         FT_NONE, BASE_NONE, NULL, 0,
5155         "x420.RecipientSpecifier", HFILL }},
5156     { &hf_x420_checked,
5157       { "checked", "x420.checked",
5158         FT_UINT32, BASE_DEC, VALS(x420_Checkmark_vals), 0,
5159         "x420.Checkmark", HFILL }},
5160     { &hf_x420_simple,
5161       { "simple", "x420.simple",
5162         FT_NONE, BASE_NONE, NULL, 0,
5163         "x420.NULL", HFILL }},
5164     { &hf_x420_timestamped,
5165       { "timestamped", "x420.timestamped",
5166         FT_STRING, BASE_NONE, NULL, 0,
5167         "x420.CirculationTime", HFILL }},
5168     { &hf_x420_signed,
5169       { "signed", "x420.signed",
5170         FT_NONE, BASE_NONE, NULL, 0,
5171         "x420.CirculationSignature", HFILL }},
5172     { &hf_x420_circulation_signature_algorithm_identifier,
5173       { "algorithm-identifier", "x420.algorithm_identifier",
5174         FT_NONE, BASE_NONE, NULL, 0,
5175         "x420.CirculationSignatureAlgorithmIdentifier", HFILL }},
5176     { &hf_x420_timestamp,
5177       { "timestamp", "x420.timestamp",
5178         FT_STRING, BASE_NONE, NULL, 0,
5179         "x420.CirculationTime", HFILL }},
5180     { &hf_x420_circulation_signature_data,
5181       { "circulation-signature-data", "x420.circulation_signature_data",
5182         FT_NONE, BASE_NONE, NULL, 0,
5183         "x420.CirculationSignatureData", HFILL }},
5184     { &hf_x420_DistributionCodes_item,
5185       { "DistributionCodes", "x420.DistributionCodes_item",
5186         FT_NONE, BASE_NONE, NULL, 0,
5187         "x420.DistributionCode", HFILL }},
5188     { &hf_x420_oid_code,
5189       { "oid-code", "x420.oid_code",
5190         FT_OID, BASE_NONE, NULL, 0,
5191         "x420.OBJECT_IDENTIFIER", HFILL }},
5192     { &hf_x420_alphanumeric_code,
5193       { "alphanumeric-code", "x420.alphanumeric_code",
5194         FT_NONE, BASE_NONE, NULL, 0,
5195         "x420.AlphaCode", HFILL }},
5196     { &hf_x420_or_descriptor,
5197       { "or-descriptor", "x420.or_descriptor",
5198         FT_NONE, BASE_NONE, NULL, 0,
5199         "x420.ORDescriptor", HFILL }},
5200     { &hf_x420_InformationCategories_item,
5201       { "InformationCategories", "x420.InformationCategories_item",
5202         FT_NONE, BASE_NONE, NULL, 0,
5203         "x420.InformationCategory", HFILL }},
5204     { &hf_x420_reference,
5205       { "reference", "x420.reference",
5206         FT_OID, BASE_NONE, NULL, 0,
5207         "x420.OBJECT_IDENTIFIER", HFILL }},
5208     { &hf_x420_description,
5209       { "description", "x420.description",
5210         FT_NONE, BASE_NONE, NULL, 0,
5211         "x420.DescriptionString", HFILL }},
5212     { &hf_x420_ManualHandlingInstructions_item,
5213       { "ManualHandlingInstructions", "x420.ManualHandlingInstructions_item",
5214         FT_NONE, BASE_NONE, NULL, 0,
5215         "x420.ManualHandlingInstruction", HFILL }},
5216     { &hf_x420_GeneralTextParameters_item,
5217       { "GeneralTextParameters", "x420.GeneralTextParameters_item",
5218         FT_UINT32, BASE_DEC, NULL, 0,
5219         "x420.CharacterSetRegistration", HFILL }},
5220     { &hf_x420_related_stored_file,
5221       { "related-stored-file", "x420.related_stored_file",
5222         FT_UINT32, BASE_DEC, NULL, 0,
5223         "x420.RelatedStoredFile", HFILL }},
5224     { &hf_x420_contents_type,
5225       { "contents-type", "x420.contents_type",
5226         FT_UINT32, BASE_DEC, VALS(x420_Contents_Type_Attribute_vals), 0,
5227         "x420.ContentsTypeParameter", HFILL }},
5228     { &hf_x420_environment,
5229       { "environment", "x420.environment",
5230         FT_NONE, BASE_NONE, NULL, 0,
5231         "x420.EnvironmentParameter", HFILL }},
5232     { &hf_x420_compression,
5233       { "compression", "x420.compression",
5234         FT_NONE, BASE_NONE, NULL, 0,
5235         "x420.CompressionParameter", HFILL }},
5236     { &hf_x420_file_attributes,
5237       { "file-attributes", "x420.file_attributes",
5238         FT_NONE, BASE_NONE, NULL, 0,
5239         "x420.FileAttributes", HFILL }},
5240     { &hf_x420_FileTransferData_item,
5241       { "FileTransferData", "x420.FileTransferData_item",
5242         FT_NONE, BASE_NONE, NULL, 0,
5243         "x420.EXTERNAL", HFILL }},
5244     { &hf_x420_RelatedStoredFile_item,
5245       { "RelatedStoredFile", "x420.RelatedStoredFile_item",
5246         FT_NONE, BASE_NONE, NULL, 0,
5247         "x420.RelatedStoredFile_item", HFILL }},
5248     { &hf_x420_file_identifier,
5249       { "file-identifier", "x420.file_identifier",
5250         FT_UINT32, BASE_DEC, VALS(x420_FileIdentifier_vals), 0,
5251         "x420.FileIdentifier", HFILL }},
5252     { &hf_x420_relationship,
5253       { "relationship", "x420.relationship",
5254         FT_UINT32, BASE_DEC, VALS(x420_Relationship_vals), 0,
5255         "x420.Relationship", HFILL }},
5256     { &hf_x420_pathname_and_version,
5257       { "pathname-and-version", "x420.pathname_and_version",
5258         FT_NONE, BASE_NONE, NULL, 0,
5259         "x420.PathnameandVersion", HFILL }},
5260     { &hf_x420_cross_reference,
5261       { "cross-reference", "x420.cross_reference",
5262         FT_NONE, BASE_NONE, NULL, 0,
5263         "x420.CrossReference", HFILL }},
5264     { &hf_x420_pathname,
5265       { "pathname", "x420.pathname",
5266         FT_UINT32, BASE_DEC, VALS(x420_Pathname_Attribute_vals), 0,
5267         "x420.Pathname_Attribute", HFILL }},
5268     { &hf_x420_file_version,
5269       { "file-version", "x420.file_version",
5270         FT_STRING, BASE_NONE, NULL, 0,
5271         "x420.GraphicString", HFILL }},
5272     { &hf_x420_application_cross_reference,
5273       { "application-cross-reference", "x420.application_cross_reference",
5274         FT_BYTES, BASE_HEX, NULL, 0,
5275         "x420.OCTET_STRING", HFILL }},
5276     { &hf_x420_message_reference,
5277       { "message-reference", "x420.message_reference",
5278         FT_NONE, BASE_NONE, NULL, 0,
5279         "x420.MessageReference", HFILL }},
5280     { &hf_x420_body_part_reference,
5281       { "body-part-reference", "x420.body_part_reference",
5282         FT_INT32, BASE_DEC, NULL, 0,
5283         "x420.INTEGER", HFILL }},
5284     { &hf_x420_user_relative_identifier_ref,
5285       { "user-relative-identifier", "x420.user_relative_identifier",
5286         FT_STRING, BASE_NONE, NULL, 0,
5287         "x420.PrintableString", HFILL }},
5288     { &hf_x420_explicit_relationship,
5289       { "explicit-relationship", "x420.explicit_relationship",
5290         FT_INT32, BASE_DEC, VALS(x420_ExplicitRelationship_vals), 0,
5291         "x420.ExplicitRelationship", HFILL }},
5292     { &hf_x420_descriptive_relationship,
5293       { "descriptive-relationship", "x420.descriptive_relationship",
5294         FT_STRING, BASE_NONE, NULL, 0,
5295         "x420.GraphicString", HFILL }},
5296     { &hf_x420_document_type,
5297       { "document-type", "x420.document_type",
5298         FT_NONE, BASE_NONE, NULL, 0,
5299         "x420.T_document_type", HFILL }},
5300     { &hf_x420_document_type_name,
5301       { "document-type-name", "x420.document_type_name",
5302         FT_OID, BASE_NONE, NULL, 0,
5303         "x420.Document_Type_Name", HFILL }},
5304     { &hf_x420_parameter,
5305       { "parameter", "x420.parameter",
5306         FT_NONE, BASE_NONE, NULL, 0,
5307         "x420.T_parameter", HFILL }},
5308     { &hf_x420_constraint_set_and_abstract_syntax,
5309       { "constraint-set-and-abstract-syntax", "x420.constraint_set_and_abstract_syntax",
5310         FT_NONE, BASE_NONE, NULL, 0,
5311         "x420.T_constraint_set_and_abstract_syntax", HFILL }},
5312     { &hf_x420_constraint_set_name,
5313       { "constraint-set-name", "x420.constraint_set_name",
5314         FT_OID, BASE_NONE, NULL, 0,
5315         "x420.Constraint_Set_Name", HFILL }},
5316     { &hf_x420_abstract_syntax_name,
5317       { "abstract-syntax-name", "x420.abstract_syntax_name",
5318         FT_OID, BASE_NONE, NULL, 0,
5319         "x420.Abstract_Syntax_Name", HFILL }},
5320     { &hf_x420_application_reference,
5321       { "application-reference", "x420.application_reference",
5322         FT_UINT32, BASE_DEC, VALS(x420_GeneralIdentifier_vals), 0,
5323         "x420.GeneralIdentifier", HFILL }},
5324     { &hf_x420_machine,
5325       { "machine", "x420.machine",
5326         FT_UINT32, BASE_DEC, VALS(x420_GeneralIdentifier_vals), 0,
5327         "x420.GeneralIdentifier", HFILL }},
5328     { &hf_x420_operating_system,
5329       { "operating-system", "x420.operating_system",
5330         FT_OID, BASE_NONE, NULL, 0,
5331         "x420.OBJECT_IDENTIFIER", HFILL }},
5332     { &hf_x420_user_visible_string,
5333       { "user-visible-string", "x420.user_visible_string",
5334         FT_UINT32, BASE_DEC, NULL, 0,
5335         "x420.T_user_visible_string", HFILL }},
5336     { &hf_x420_user_visible_string_item,
5337       { "user-visible-string", "x420.user_visible_string_item",
5338         FT_STRING, BASE_NONE, NULL, 0,
5339         "x420.GraphicString", HFILL }},
5340     { &hf_x420_registered_identifier,
5341       { "registered-identifier", "x420.registered_identifier",
5342         FT_OID, BASE_NONE, NULL, 0,
5343         "x420.OBJECT_IDENTIFIER", HFILL }},
5344     { &hf_x420_descriptive_identifier,
5345       { "descriptive-identifier", "x420.descriptive_identifier",
5346         FT_UINT32, BASE_DEC, NULL, 0,
5347         "x420.T_descriptive_identifier", HFILL }},
5348     { &hf_x420_descriptive_identifier_item,
5349       { "descriptive-identifier", "x420.descriptive_identifier_item",
5350         FT_STRING, BASE_NONE, NULL, 0,
5351         "x420.GraphicString", HFILL }},
5352     { &hf_x420_compression_algorithm_id,
5353       { "compression-algorithm-id", "x420.compression_algorithm_id",
5354         FT_NONE, BASE_NONE, NULL, 0,
5355         "x420.T_compression_algorithm_id", HFILL }},
5356     { &hf_x420_compression_algorithm_param,
5357       { "compression-algorithm-param", "x420.compression_algorithm_param",
5358         FT_NONE, BASE_NONE, NULL, 0,
5359         "x420.T_compression_algorithm_param", HFILL }},
5360     { &hf_x420_permitted_actions,
5361       { "permitted-actions", "x420.permitted_actions",
5362         FT_BYTES, BASE_HEX, NULL, 0,
5363         "ftam.Permitted_Actions_Attribute", HFILL }},
5364     { &hf_x420_storage_account,
5365       { "storage-account", "x420.storage_account",
5366         FT_UINT32, BASE_DEC, VALS(x420_Account_Attribute_vals), 0,
5367         "x420.Account_Attribute", HFILL }},
5368     { &hf_x420_date_and_time_of_creation,
5369       { "date-and-time-of-creation", "x420.date_and_time_of_creation",
5370         FT_UINT32, BASE_DEC, VALS(ftam_Date_and_Time_Attribute_vals), 0,
5371         "ftam.Date_and_Time_Attribute", HFILL }},
5372     { &hf_x420_date_and_time_of_last_modification,
5373       { "date-and-time-of-last-modification", "x420.date_and_time_of_last_modification",
5374         FT_UINT32, BASE_DEC, VALS(ftam_Date_and_Time_Attribute_vals), 0,
5375         "ftam.Date_and_Time_Attribute", HFILL }},
5376     { &hf_x420_date_and_time_of_last_read_access,
5377       { "date-and-time-of-last-read-access", "x420.date_and_time_of_last_read_access",
5378         FT_UINT32, BASE_DEC, VALS(ftam_Date_and_Time_Attribute_vals), 0,
5379         "ftam.Date_and_Time_Attribute", HFILL }},
5380     { &hf_x420_date_and_time_of_last_attribute_modification,
5381       { "date-and-time-of-last-attribute-modification", "x420.date_and_time_of_last_attribute_modification",
5382         FT_UINT32, BASE_DEC, VALS(ftam_Date_and_Time_Attribute_vals), 0,
5383         "ftam.Date_and_Time_Attribute", HFILL }},
5384     { &hf_x420_identity_of_creator,
5385       { "identity-of-creator", "x420.identity_of_creator",
5386         FT_UINT32, BASE_DEC, VALS(x420_User_Identity_Attribute_vals), 0,
5387         "x420.User_Identity_Attribute", HFILL }},
5388     { &hf_x420_identity_of_last_modifier,
5389       { "identity-of-last-modifier", "x420.identity_of_last_modifier",
5390         FT_UINT32, BASE_DEC, VALS(x420_User_Identity_Attribute_vals), 0,
5391         "x420.User_Identity_Attribute", HFILL }},
5392     { &hf_x420_identity_of_last_reader,
5393       { "identity-of-last-reader", "x420.identity_of_last_reader",
5394         FT_UINT32, BASE_DEC, VALS(x420_User_Identity_Attribute_vals), 0,
5395         "x420.User_Identity_Attribute", HFILL }},
5396     { &hf_x420_identity_of_last_attribute_modifier,
5397       { "identity-of-last-attribute-modifier", "x420.identity_of_last_attribute_modifier",
5398         FT_UINT32, BASE_DEC, VALS(x420_User_Identity_Attribute_vals), 0,
5399         "x420.User_Identity_Attribute", HFILL }},
5400     { &hf_x420_object_availability,
5401       { "object-availability", "x420.object_availability",
5402         FT_UINT32, BASE_DEC, VALS(ftam_Object_Availability_Attribute_vals), 0,
5403         "ftam.Object_Availability_Attribute", HFILL }},
5404     { &hf_x420_object_size,
5405       { "object-size", "x420.object_size",
5406         FT_UINT32, BASE_DEC, VALS(ftam_Object_Size_Attribute_vals), 0,
5407         "ftam.Object_Size_Attribute", HFILL }},
5408     { &hf_x420_future_object_size,
5409       { "future-object-size", "x420.future_object_size",
5410         FT_UINT32, BASE_DEC, VALS(ftam_Object_Size_Attribute_vals), 0,
5411         "ftam.Object_Size_Attribute", HFILL }},
5412     { &hf_x420_access_control,
5413       { "access-control", "x420.access_control",
5414         FT_UINT32, BASE_DEC, VALS(x420_Access_Control_Attribute_vals), 0,
5415         "x420.Access_Control_Attribute", HFILL }},
5416     { &hf_x420_legal_qualifications,
5417       { "legal-qualifications", "x420.legal_qualifications",
5418         FT_UINT32, BASE_DEC, VALS(ftam_Legal_Qualification_Attribute_vals), 0,
5419         "ftam.Legal_Qualification_Attribute", HFILL }},
5420     { &hf_x420_private_use,
5421       { "private-use", "x420.private_use",
5422         FT_UINT32, BASE_DEC, VALS(ftam_Private_Use_Attribute_vals), 0,
5423         "ftam.Private_Use_Attribute", HFILL }},
5424     { &hf_x420_attribute_extensions,
5425       { "attribute-extensions", "x420.attribute_extensions",
5426         FT_UINT32, BASE_DEC, NULL, 0,
5427         "ftam.Attribute_Extensions", HFILL }},
5428     { &hf_x420_incomplete_pathname,
5429       { "incomplete-pathname", "x420.incomplete_pathname",
5430         FT_UINT32, BASE_DEC, NULL, 0,
5431         "ftam.Pathname", HFILL }},
5432     { &hf_x420_complete_pathname,
5433       { "complete-pathname", "x420.complete_pathname",
5434         FT_UINT32, BASE_DEC, NULL, 0,
5435         "ftam.Pathname", HFILL }},
5436     { &hf_x420_no_value_available,
5437       { "no-value-available", "x420.no_value_available",
5438         FT_NONE, BASE_NONE, NULL, 0,
5439         "x420.NULL", HFILL }},
5440     { &hf_x420_account_actual_values,
5441       { "actual-values", "x420.actual_values",
5442         FT_STRING, BASE_NONE, NULL, 0,
5443         "x420.Account", HFILL }},
5444     { &hf_x420_identity_actual_values,
5445       { "actual-values", "x420.actual_values",
5446         FT_STRING, BASE_NONE, NULL, 0,
5447         "x420.User_Identity", HFILL }},
5448     { &hf_x420_actual_values,
5449       { "actual-values", "x420.actual_values",
5450         FT_UINT32, BASE_DEC, NULL, 0,
5451         "x420.SET_OF_Access_Control_Element", HFILL }},
5452     { &hf_x420_actual_values_item,
5453       { "actual-values", "x420.actual_values_item",
5454         FT_NONE, BASE_NONE, NULL, 0,
5455         "x420.Access_Control_Element", HFILL }},
5456     { &hf_x420_action_list,
5457       { "action-list", "x420.action_list",
5458         FT_BYTES, BASE_HEX, NULL, 0,
5459         "x420.Access_Request", HFILL }},
5460     { &hf_x420_concurrency_access,
5461       { "concurrency-access", "x420.concurrency_access",
5462         FT_NONE, BASE_NONE, NULL, 0,
5463         "ftam.Concurrency_Access", HFILL }},
5464     { &hf_x420_identity,
5465       { "identity", "x420.identity",
5466         FT_STRING, BASE_NONE, NULL, 0,
5467         "x420.User_Identity", HFILL }},
5468     { &hf_x420_passwords,
5469       { "passwords", "x420.passwords",
5470         FT_NONE, BASE_NONE, NULL, 0,
5471         "x420.Access_Passwords", HFILL }},
5472     { &hf_x420_location,
5473       { "location", "x420.location",
5474         FT_NONE, BASE_NONE, NULL, 0,
5475         "x420.Application_Entity_Title", HFILL }},
5476     { &hf_x420_read_password,
5477       { "read-password", "x420.read_password",
5478         FT_UINT32, BASE_DEC, VALS(x420_Password_vals), 0,
5479         "x420.Password", HFILL }},
5480     { &hf_x420_insert_password,
5481       { "insert-password", "x420.insert_password",
5482         FT_UINT32, BASE_DEC, VALS(x420_Password_vals), 0,
5483         "x420.Password", HFILL }},
5484     { &hf_x420_replace_password,
5485       { "replace-password", "x420.replace_password",
5486         FT_UINT32, BASE_DEC, VALS(x420_Password_vals), 0,
5487         "x420.Password", HFILL }},
5488     { &hf_x420_extend_password,
5489       { "extend-password", "x420.extend_password",
5490         FT_UINT32, BASE_DEC, VALS(x420_Password_vals), 0,
5491         "x420.Password", HFILL }},
5492     { &hf_x420_erase_password,
5493       { "erase-password", "x420.erase_password",
5494         FT_UINT32, BASE_DEC, VALS(x420_Password_vals), 0,
5495         "x420.Password", HFILL }},
5496     { &hf_x420_read_attribute_password,
5497       { "read-attribute-password", "x420.read_attribute_password",
5498         FT_UINT32, BASE_DEC, VALS(x420_Password_vals), 0,
5499         "x420.Password", HFILL }},
5500     { &hf_x420_change_attribute_password,
5501       { "change-attribute-password", "x420.change_attribute_password",
5502         FT_UINT32, BASE_DEC, VALS(x420_Password_vals), 0,
5503         "x420.Password", HFILL }},
5504     { &hf_x420_delete_password,
5505       { "delete-password", "x420.delete_password",
5506         FT_UINT32, BASE_DEC, VALS(x420_Password_vals), 0,
5507         "x420.Password", HFILL }},
5508     { &hf_x420_pass_passwords,
5509       { "pass-passwords", "x420.pass_passwords",
5510         FT_UINT32, BASE_DEC, NULL, 0,
5511         "x420.Pass_Passwords", HFILL }},
5512     { &hf_x420_link_password,
5513       { "link-password", "x420.link_password",
5514         FT_UINT32, BASE_DEC, VALS(x420_Password_vals), 0,
5515         "x420.Password", HFILL }},
5516     { &hf_x420_graphic_string,
5517       { "graphic-string", "x420.graphic_string",
5518         FT_STRING, BASE_NONE, NULL, 0,
5519         "x420.GraphicString", HFILL }},
5520     { &hf_x420_octet_string,
5521       { "octet-string", "x420.octet_string",
5522         FT_BYTES, BASE_HEX, NULL, 0,
5523         "x420.OCTET_STRING", HFILL }},
5524     { &hf_x420_Pass_Passwords_item,
5525       { "Pass-Passwords", "x420.Pass_Passwords_item",
5526         FT_UINT32, BASE_DEC, VALS(x420_Password_vals), 0,
5527         "x420.Password", HFILL }},
5528     { &hf_x420_ap_title,
5529       { "ap-title", "x420.ap_title",
5530         FT_UINT32, BASE_DEC, VALS(acse_AP_title_vals), 0,
5531         "acse.AP_title", HFILL }},
5532     { &hf_x420_ae_qualifier,
5533       { "ae-qualifier", "x420.ae_qualifier",
5534         FT_UINT32, BASE_DEC, VALS(acse_ASO_qualifier_vals), 0,
5535         "acse.AE_qualifier", HFILL }},
5536     { &hf_x420_voice_message_duration,
5537       { "voice-message-duration", "x420.voice_message_duration",
5538         FT_INT32, BASE_DEC, NULL, 0,
5539         "x420.INTEGER", HFILL }},
5540     { &hf_x420_voice_encoding_type,
5541       { "voice-encoding-type", "x420.voice_encoding_type",
5542         FT_OID, BASE_NONE, NULL, 0,
5543         "x420.OBJECT_IDENTIFIER", HFILL }},
5544     { &hf_x420_supplementary_information,
5545       { "supplementary-information", "x420.supplementary_information",
5546         FT_STRING, BASE_NONE, NULL, 0,
5547         "x420.IA5String", HFILL }},
5548     { &hf_x420_mts_identifier,
5549       { "mts-identifier", "x420.mts_identifier",
5550         FT_NONE, BASE_NONE, NULL, 0,
5551         "x411.MessageDeliveryIdentifier", HFILL }},
5552     { &hf_x420_submission_proof,
5553       { "submission-proof", "x420.submission_proof",
5554         FT_NONE, BASE_NONE, NULL, 0,
5555         "x420.SubmissionProof", HFILL }},
5556     { &hf_x420_proof_of_submission,
5557       { "proof-of-submission", "x420.proof_of_submission",
5558         FT_NONE, BASE_NONE, NULL, 0,
5559         "x411.ProofOfSubmission", HFILL }},
5560     { &hf_x420_originating_MTA_certificate,
5561       { "originating-MTA-certificate", "x420.originating_MTA_certificate",
5562         FT_NONE, BASE_NONE, NULL, 0,
5563         "x411.OriginatingMTACertificate", HFILL }},
5564     { &hf_x420_message_submission_envelope,
5565       { "message-submission-envelope", "x420.message_submission_envelope",
5566         FT_NONE, BASE_NONE, NULL, 0,
5567         "x411.MessageSubmissionEnvelope", HFILL }},
5568     { &hf_x420_IPMSynopsis_item,
5569       { "IPMSynopsis", "x420.IPMSynopsis_item",
5570         FT_UINT32, BASE_DEC, VALS(x420_BodyPartSynopsis_vals), 0,
5571         "x420.BodyPartSynopsis", HFILL }},
5572     { &hf_x420_message_synopsis,
5573       { "message", "x420.message",
5574         FT_NONE, BASE_NONE, NULL, 0,
5575         "x420.MessageBodyPartSynopsis", HFILL }},
5576     { &hf_x420_non_message,
5577       { "non-message", "x420.non_message",
5578         FT_NONE, BASE_NONE, NULL, 0,
5579         "x420.NonMessageBodyPartSynopsis", HFILL }},
5580     { &hf_x420_number,
5581       { "number", "x420.number",
5582         FT_UINT32, BASE_DEC, NULL, 0,
5583         "p7.SequenceNumber", HFILL }},
5584     { &hf_x420_synopsis,
5585       { "synopsis", "x420.synopsis",
5586         FT_UINT32, BASE_DEC, NULL, 0,
5587         "x420.IPMSynopsis", HFILL }},
5588     { &hf_x420_bp_type,
5589       { "type", "x420.type",
5590         FT_OID, BASE_NONE, NULL, 0,
5591         "x420.OBJECT_IDENTIFIER", HFILL }},
5592     { &hf_x420_bp_parameters,
5593       { "parameters", "x420.parameters",
5594         FT_NONE, BASE_NONE, NULL, 0,
5595         "x420.INSTANCE_OF", HFILL }},
5596     { &hf_x420_size,
5597       { "size", "x420.size",
5598         FT_INT32, BASE_DEC, NULL, 0,
5599         "x420.INTEGER", HFILL }},
5600     { &hf_x420_processed,
5601       { "processed", "x420.processed",
5602         FT_BOOLEAN, 8, NULL, 0,
5603         "x420.BOOLEAN", HFILL }},
5604     { &hf_x420_data,
5605       { "data", "x420.data",
5606         FT_OID, BASE_NONE, NULL, 0,
5607         "x420.OBJECT_IDENTIFIER", HFILL }},
5608     { &hf_x420_parameters,
5609       { "parameters", "x420.parameters",
5610         FT_OID, BASE_NONE, NULL, 0,
5611         "x420.OBJECT_IDENTIFIER", HFILL }},
5612     { &hf_x420_this_child_entry,
5613       { "this-child-entry", "x420.this_child_entry",
5614         FT_UINT32, BASE_DEC, NULL, 0,
5615         "p7.SequenceNumber", HFILL }},
5616     { &hf_x420_position,
5617       { "position", "x420.position",
5618         FT_INT32, BASE_DEC, NULL, 0,
5619         "x420.INTEGER", HFILL }},
5620     { &hf_x420_BodyPartSignatureVerification_item,
5621       { "BodyPartSignatureVerification", "x420.BodyPartSignatureVerification_item",
5622         FT_NONE, BASE_NONE, NULL, 0,
5623         "x420.BodyPartSignatureVerification_item", HFILL }},
5624     { &hf_x420_body_part_sequence_number,
5625       { "body-part-sequence-number", "x420.body_part_sequence_number",
5626         FT_UINT32, BASE_DEC, NULL, 0,
5627         "x420.BodyPartNumber", HFILL }},
5628     { &hf_x420_body_part_signature_status,
5629       { "body-part-signature", "x420.body_part_signature",
5630         FT_INT32, BASE_DEC, VALS(p7_SignatureStatus_vals), 0,
5631         "p7.SignatureStatus", HFILL }},
5632     { &hf_x420_stored,
5633       { "stored", "x420.stored",
5634         FT_UINT32, BASE_DEC, NULL, 0,
5635         "x420.SET_OF_SequenceNumber", HFILL }},
5636     { &hf_x420_stored_item,
5637       { "stored", "x420.stored_item",
5638         FT_UINT32, BASE_DEC, NULL, 0,
5639         "p7.SequenceNumber", HFILL }},
5640     { &hf_x420_absent,
5641       { "absent", "x420.absent",
5642         FT_NONE, BASE_NONE, NULL, 0,
5643         "x420.NULL", HFILL }},
5644     { &hf_x420_no_reply_received,
5645       { "no-reply-received", "x420.no_reply_received",
5646         FT_NONE, BASE_NONE, NULL, 0,
5647         "x420.NULL", HFILL }},
5648     { &hf_x420_received_replies,
5649       { "received-replies", "x420.received_replies",
5650         FT_UINT32, BASE_DEC, NULL, 0,
5651         "x420.SEQUENCE_OF_SequenceNumber", HFILL }},
5652     { &hf_x420_received_replies_item,
5653       { "received-replies", "x420.received_replies_item",
5654         FT_UINT32, BASE_DEC, NULL, 0,
5655         "p7.SequenceNumber", HFILL }},
5656     { &hf_x420_no_ipn_received,
5657       { "no-ipn-received", "x420.no_ipn_received",
5658         FT_NONE, BASE_NONE, NULL, 0,
5659         "x420.NULL", HFILL }},
5660     { &hf_x420_ipns_received,
5661       { "ipns-received", "x420.ipns_received",
5662         FT_UINT32, BASE_DEC, NULL, 0,
5663         "x420.SEQUENCE_OF_SequenceNumber", HFILL }},
5664     { &hf_x420_ipns_received_item,
5665       { "ipns-received", "x420.ipns_received_item",
5666         FT_UINT32, BASE_DEC, NULL, 0,
5667         "p7.SequenceNumber", HFILL }},
5668     { &hf_x420_content_or_arguments,
5669       { "content-or-arguments", "x420.content_or_arguments",
5670         FT_UINT32, BASE_DEC, VALS(x420_T_content_or_arguments_vals), 0,
5671         "x420.T_content_or_arguments", HFILL }},
5672     { &hf_x420_original_content,
5673       { "original-content", "x420.original_content",
5674         FT_BYTES, BASE_HEX, NULL, 0,
5675         "x420.OriginalContent", HFILL }},
5676     { &hf_x420_original_security_arguments,
5677       { "original-security-arguments", "x420.original_security_arguments",
5678         FT_NONE, BASE_NONE, NULL, 0,
5679         "x420.T_original_security_arguments", HFILL }},
5680     { &hf_x420_original_content_integrity_check,
5681       { "original-content-integrity-check", "x420.original_content_integrity_check",
5682         FT_NONE, BASE_NONE, NULL, 0,
5683         "x420.OriginalContentIntegrityCheck", HFILL }},
5684     { &hf_x420_original_message_origin_authentication_check,
5685       { "original-message-origin-authentication-check", "x420.original_message_origin_authentication_check",
5686         FT_NONE, BASE_NONE, NULL, 0,
5687         "x420.OriginalMessageOriginAuthenticationCheck", HFILL }},
5688     { &hf_x420_original_message_token,
5689       { "original-message-token", "x420.original_message_token",
5690         FT_NONE, BASE_NONE, NULL, 0,
5691         "x420.OriginalMessageToken", HFILL }},
5692     { &hf_x420_security_diagnostic_code,
5693       { "security-diagnostic-code", "x420.security_diagnostic_code",
5694         FT_INT32, BASE_DEC, VALS(x420_SecurityDiagnosticCode_vals), 0,
5695         "x420.SecurityDiagnosticCode", HFILL }},
5696     { &hf_x420_BodyPartTokens_item,
5697       { "BodyPartTokens", "x420.BodyPartTokens_item",
5698         FT_NONE, BASE_NONE, NULL, 0,
5699         "x420.BodyPartTokens_item", HFILL }},
5700     { &hf_x420_body_part_choice,
5701       { "body-part-choice", "x420.body_part_choice",
5702         FT_UINT32, BASE_DEC, VALS(x420_T_body_part_choice_vals), 0,
5703         "x420.T_body_part_choice", HFILL }},
5704     { &hf_x420_encryption_token,
5705       { "encryption-token", "x420.encryption_token",
5706         FT_NONE, BASE_NONE, NULL, 0,
5707         "x420.EncryptionToken", HFILL }},
5708     { &hf_x420_message_or_content_body_part,
5709       { "message-or-content-body-part", "x420.message_or_content_body_part",
5710         FT_UINT32, BASE_DEC, NULL, 0,
5711         "x420.BodyPartTokens", HFILL }},
5712     { &hf_x420_encryption_algorithm_identifier,
5713       { "encryption-algorithm-identifier", "x420.encryption_algorithm_identifier",
5714         FT_NONE, BASE_NONE, NULL, 0,
5715         "x509af.AlgorithmIdentifier", HFILL }},
5716     { &hf_x420_encrypted_key,
5717       { "encrypted-key", "x420.encrypted_key",
5718         FT_BYTES, BASE_HEX, NULL, 0,
5719         "x420.BIT_STRING", HFILL }},
5720     { &hf_x420_recipient_certificate_selector,
5721       { "recipient-certificate-selector", "x420.recipient_certificate_selector",
5722         FT_NONE, BASE_NONE, NULL, 0,
5723         "x509ce.CertificateAssertion", HFILL }},
5724     { &hf_x420_recipient_certificate,
5725       { "recipient-certificate", "x420.recipient_certificate",
5726         FT_NONE, BASE_NONE, NULL, 0,
5727         "x509af.Certificates", HFILL }},
5728     { &hf_x420_ForwardedContentToken_item,
5729       { "ForwardedContentToken", "x420.ForwardedContentToken_item",
5730         FT_NONE, BASE_NONE, NULL, 0,
5731         "x420.ForwardedContentToken_item", HFILL }},
5732     { &hf_x420_body_part_token_choice,
5733       { "body-part-choice", "x420.body_part_choice",
5734         FT_UINT32, BASE_DEC, VALS(x420_T_body_part_token_choice_vals), 0,
5735         "x420.T_body_part_token_choice", HFILL }},
5736     { &hf_x420_forwarding_token,
5737       { "forwarding-token", "x420.forwarding_token",
5738         FT_NONE, BASE_NONE, NULL, 0,
5739         "x411.MessageToken", HFILL }},
5740     { &hf_x420_forwarded_content_token,
5741       { "message-or-content-body-part", "x420.message_or_content_body_part",
5742         FT_UINT32, BASE_DEC, NULL, 0,
5743         "x420.ForwardedContentToken", HFILL }},
5744     { &hf_x420_choice,
5745       { "choice", "x420.choice",
5746         FT_UINT32, BASE_DEC, VALS(x420_T_choice_vals), 0,
5747         "x420.T_choice", HFILL }},
5748     { &hf_x420_non_receipt_fields,
5749       { "non-receipt-fields", "x420.non_receipt_fields",
5750         FT_NONE, BASE_NONE, NULL, 0,
5751         "x420.NonReceiptFields", HFILL }},
5752     { &hf_x420_receipt_fields,
5753       { "receipt-fields", "x420.receipt_fields",
5754         FT_NONE, BASE_NONE, NULL, 0,
5755         "x420.ReceiptFields", HFILL }},
5756     { &hf_x420_other_notification_type_fields,
5757       { "other-notification-type-fields", "x420.other_notification_type_fields",
5758         FT_UINT32, BASE_DEC, NULL, 0,
5759         "x420.OtherNotificationTypeFields", HFILL }},
5760     { &hf_x420_NotificationRequests_rn,
5761       { "rn", "x420.rn",
5762         FT_BOOLEAN, 8, NULL, 0x80,
5763         "", HFILL }},
5764     { &hf_x420_NotificationRequests_nrn,
5765       { "nrn", "x420.nrn",
5766         FT_BOOLEAN, 8, NULL, 0x40,
5767         "", HFILL }},
5768     { &hf_x420_NotificationRequests_ipm_return,
5769       { "ipm-return", "x420.ipm-return",
5770         FT_BOOLEAN, 8, NULL, 0x20,
5771         "", HFILL }},
5772     { &hf_x420_NotificationRequests_an_supported,
5773       { "an-supported", "x420.an-supported",
5774         FT_BOOLEAN, 8, NULL, 0x10,
5775         "", HFILL }},
5776     { &hf_x420_NotificationRequests_suppress_an,
5777       { "suppress-an", "x420.suppress-an",
5778         FT_BOOLEAN, 8, NULL, 0x08,
5779         "", HFILL }},
5780     { &hf_x420_Access_Request_read,
5781       { "read", "x420.read",
5782         FT_BOOLEAN, 8, NULL, 0x80,
5783         "", HFILL }},
5784     { &hf_x420_Access_Request_insert,
5785       { "insert", "x420.insert",
5786         FT_BOOLEAN, 8, NULL, 0x40,
5787         "", HFILL }},
5788     { &hf_x420_Access_Request_replace,
5789       { "replace", "x420.replace",
5790         FT_BOOLEAN, 8, NULL, 0x20,
5791         "", HFILL }},
5792     { &hf_x420_Access_Request_extend,
5793       { "extend", "x420.extend",
5794         FT_BOOLEAN, 8, NULL, 0x10,
5795         "", HFILL }},
5796     { &hf_x420_Access_Request_erase,
5797       { "erase", "x420.erase",
5798         FT_BOOLEAN, 8, NULL, 0x08,
5799         "", HFILL }},
5800     { &hf_x420_Access_Request_read_attribute,
5801       { "read-attribute", "x420.read-attribute",
5802         FT_BOOLEAN, 8, NULL, 0x04,
5803         "", HFILL }},
5804     { &hf_x420_Access_Request_change_attribute,
5805       { "change-attribute", "x420.change-attribute",
5806         FT_BOOLEAN, 8, NULL, 0x02,
5807         "", HFILL }},
5808     { &hf_x420_Access_Request_delete_object,
5809       { "delete-object", "x420.delete-object",
5810         FT_BOOLEAN, 8, NULL, 0x01,
5811         "", HFILL }},
5812     { &hf_x420_RecipientSecurityRequest_content_non_repudiation,
5813       { "content-non-repudiation", "x420.content-non-repudiation",
5814         FT_BOOLEAN, 8, NULL, 0x80,
5815         "", HFILL }},
5816     { &hf_x420_RecipientSecurityRequest_content_proof,
5817       { "content-proof", "x420.content-proof",
5818         FT_BOOLEAN, 8, NULL, 0x40,
5819         "", HFILL }},
5820     { &hf_x420_RecipientSecurityRequest_ipn_non_repudiation,
5821       { "ipn-non-repudiation", "x420.ipn-non-repudiation",
5822         FT_BOOLEAN, 8, NULL, 0x20,
5823         "", HFILL }},
5824     { &hf_x420_RecipientSecurityRequest_ipn_proof,
5825       { "ipn-proof", "x420.ipn-proof",
5826         FT_BOOLEAN, 8, NULL, 0x10,
5827         "", HFILL }},
5828
5829 /*--- End of included file: packet-x420-hfarr.c ---*/
5830 #line 130 "packet-x420-template.c"
5831   };
5832
5833   /* List of subtrees */
5834   static gint *ett[] = {
5835     &ett_x420,
5836
5837 /*--- Included file: packet-x420-ettarr.c ---*/
5838 #line 1 "packet-x420-ettarr.c"
5839     &ett_x420_InformationObject,
5840     &ett_x420_IPM,
5841     &ett_x420_IPMSExtension,
5842     &ett_x420_Heading,
5843     &ett_x420_IPMIdentifier_U,
5844     &ett_x420_RecipientSpecifier,
5845     &ett_x420_ORDescriptor,
5846     &ett_x420_NotificationRequests,
5847     &ett_x420_RecipientExtensionsField,
5848     &ett_x420_AuthorizingUsersField,
5849     &ett_x420_PrimaryRecipientsField,
5850     &ett_x420_CopyRecipientsField,
5851     &ett_x420_BlindCopyRecipientsField,
5852     &ett_x420_ObsoletedIPMsField,
5853     &ett_x420_RelatedIPMsField,
5854     &ett_x420_ReplyRecipientsField,
5855     &ett_x420_ExtensionsField,
5856     &ett_x420_Body,
5857     &ett_x420_BodyPart,
5858     &ett_x420_T_basic,
5859     &ett_x420_ExtendedBodyPart,
5860     &ett_x420_IA5TextBodyPart,
5861     &ett_x420_IA5TextParameters,
5862     &ett_x420_G3FacsimileBodyPart,
5863     &ett_x420_G3FacsimileParameters,
5864     &ett_x420_G3FacsimileData,
5865     &ett_x420_G4Class1BodyPart,
5866     &ett_x420_MixedModeBodyPart,
5867     &ett_x420_TeletexBodyPart,
5868     &ett_x420_TeletexParameters,
5869     &ett_x420_TeletexData,
5870     &ett_x420_VideotexBodyPart,
5871     &ett_x420_VideotexParameters,
5872     &ett_x420_EncryptedBodyPart,
5873     &ett_x420_EncryptedParameters,
5874     &ett_x420_MessageBodyPart,
5875     &ett_x420_MessageParameters,
5876     &ett_x420_IPN,
5877     &ett_x420_CommonFields,
5878     &ett_x420_NonReceiptFields,
5879     &ett_x420_ReceiptFields,
5880     &ett_x420_NotificationExtensionsField,
5881     &ett_x420_NRNExtensionsField,
5882     &ett_x420_RNExtensionsField,
5883     &ett_x420_OtherNotificationTypeFields,
5884     &ett_x420_AbsenceAdvice,
5885     &ett_x420_ChangeOfAddressAdvice,
5886     &ett_x420_IPMAssemblyInstructions,
5887     &ett_x420_BodyPartReferences,
5888     &ett_x420_BodyPartReference,
5889     &ett_x420_T_stored_body_part,
5890     &ett_x420_Languages,
5891     &ett_x420_BodyPartSignatures,
5892     &ett_x420_BodyPartSignatures_item,
5893     &ett_x420_Signature,
5894     &ett_x420_IPMSecurityLabel,
5895     &ett_x420_SEQUENCE_OF_BodyPartSecurityLabel,
5896     &ett_x420_BodyPartSecurityLabel,
5897     &ett_x420_CirculationList,
5898     &ett_x420_CirculationMember,
5899     &ett_x420_Checkmark,
5900     &ett_x420_CirculationSignatureData,
5901     &ett_x420_CirculationSignature,
5902     &ett_x420_DistributionCodes,
5903     &ett_x420_DistributionCode,
5904     &ett_x420_InformationCategories,
5905     &ett_x420_InformationCategory,
5906     &ett_x420_ManualHandlingInstructions,
5907     &ett_x420_GeneralTextParameters,
5908     &ett_x420_FileTransferParameters,
5909     &ett_x420_FileTransferData,
5910     &ett_x420_RelatedStoredFile,
5911     &ett_x420_RelatedStoredFile_item,
5912     &ett_x420_FileIdentifier,
5913     &ett_x420_PathnameandVersion,
5914     &ett_x420_CrossReference,
5915     &ett_x420_MessageReference,
5916     &ett_x420_Relationship,
5917     &ett_x420_Contents_Type_Attribute,
5918     &ett_x420_T_document_type,
5919     &ett_x420_T_constraint_set_and_abstract_syntax,
5920     &ett_x420_EnvironmentParameter,
5921     &ett_x420_T_user_visible_string,
5922     &ett_x420_GeneralIdentifier,
5923     &ett_x420_T_descriptive_identifier,
5924     &ett_x420_CompressionParameter,
5925     &ett_x420_FileAttributes,
5926     &ett_x420_Pathname_Attribute,
5927     &ett_x420_Account_Attribute,
5928     &ett_x420_User_Identity_Attribute,
5929     &ett_x420_Access_Control_Attribute,
5930     &ett_x420_SET_OF_Access_Control_Element,
5931     &ett_x420_Access_Control_Element,
5932     &ett_x420_Access_Request,
5933     &ett_x420_Access_Passwords,
5934     &ett_x420_Password,
5935     &ett_x420_Pass_Passwords,
5936     &ett_x420_Application_Entity_Title,
5937     &ett_x420_VoiceParameters,
5938     &ett_x420_ForwardedContentParameters,
5939     &ett_x420_SubmissionProof,
5940     &ett_x420_IPMSynopsis,
5941     &ett_x420_BodyPartSynopsis,
5942     &ett_x420_MessageBodyPartSynopsis,
5943     &ett_x420_NonMessageBodyPartSynopsis,
5944     &ett_x420_BodyPartDescriptor,
5945     &ett_x420_BodyPartSignatureVerification,
5946     &ett_x420_BodyPartSignatureVerification_item,
5947     &ett_x420_IPMLocation,
5948     &ett_x420_SET_OF_SequenceNumber,
5949     &ett_x420_CorrelatedDeliveredReplies,
5950     &ett_x420_SEQUENCE_OF_SequenceNumber,
5951     &ett_x420_CorrelatedDeliveredIPNs,
5952     &ett_x420_RecipientSecurityRequest,
5953     &ett_x420_IpnSecurityResponse,
5954     &ett_x420_T_content_or_arguments,
5955     &ett_x420_T_original_security_arguments,
5956     &ett_x420_BodyPartTokens,
5957     &ett_x420_BodyPartTokens_item,
5958     &ett_x420_T_body_part_choice,
5959     &ett_x420_EncryptionToken,
5960     &ett_x420_ForwardedContentToken,
5961     &ett_x420_ForwardedContentToken_item,
5962     &ett_x420_T_body_part_token_choice,
5963     &ett_x420_T_choice,
5964
5965 /*--- End of included file: packet-x420-ettarr.c ---*/
5966 #line 136 "packet-x420-template.c"
5967   };
5968
5969   /* Register protocol */
5970   proto_x420 = proto_register_protocol(PNAME, PSNAME, PFNAME);
5971   register_dissector("x420", dissect_x420, proto_x420);
5972   /* Register fields and subtrees */
5973   proto_register_field_array(proto_x420, hf, array_length(hf));
5974   proto_register_subtree_array(ett, array_length(ett));
5975
5976 }
5977
5978
5979 /*--- proto_reg_handoff_x420 --- */
5980 void proto_reg_handoff_x420(void) {
5981
5982
5983 /*--- Included file: packet-x420-dis-tab.c ---*/
5984 #line 1 "packet-x420-dis-tab.c"
5985   register_ber_oid_dissector("2.6.1.19.0", dissect_AbsenceAdvice_PDU, proto_x420, "id-on-absence-advice");
5986   register_ber_oid_dissector("2.6.1.19.1", dissect_ChangeOfAddressAdvice_PDU, proto_x420, "id-on-change-of-address-advice");
5987   register_ber_oid_dissector("2.6.1.17.2", dissect_IPMAssemblyInstructions_PDU, proto_x420, "id-mst-assembly-instructions");
5988   register_ber_oid_dissector("2.6.1.5.0", dissect_IncompleteCopy_PDU, proto_x420, "id-hex-incomplete-copy");
5989   register_ber_oid_dissector("2.6.1.5.1", dissect_Languages_PDU, proto_x420, "id-hex-languages");
5990   register_ber_oid_dissector("2.6.1.5.2", dissect_AutoSubmitted_PDU, proto_x420, "id-hex-auto-submitted");
5991   register_ber_oid_dissector("2.6.1.5.3", dissect_BodyPartSignatures_PDU, proto_x420, "id-hex-body-part-signatures");
5992   register_ber_oid_dissector("2.6.1.5.4", dissect_IPMSecurityLabel_PDU, proto_x420, "id-hex-ipm-security-label");
5993   register_ber_oid_dissector("2.6.1.5.5", dissect_AuthorizationTime_PDU, proto_x420, "id-hex-authorization-time");
5994   register_ber_oid_dissector("2.6.1.5.6", dissect_CirculationList_PDU, proto_x420, "id-hex-circulation-list-recipients");
5995   register_ber_oid_dissector("2.6.1.20.0", dissect_CirculationListIndicator_PDU, proto_x420, "id-rex-circulation-list-indicator");
5996   register_ber_oid_dissector("2.6.1.5.7", dissect_DistributionCodes_PDU, proto_x420, "id-hex-distribution-codes");
5997   register_ber_oid_dissector("2.6.1.5.8", dissect_ExtendedSubject_PDU, proto_x420, "id-hex-extended-subject");
5998   register_ber_oid_dissector("2.6.1.5.9", dissect_InformationCategories_PDU, proto_x420, "id-hex-information-categories");
5999   register_ber_oid_dissector("2.6.1.5.10", dissect_ManualHandlingInstructions_PDU, proto_x420, "id-hex-manual-handling-instructions");
6000   register_ber_oid_dissector("2.6.1.5.11", dissect_OriginatorsReference_PDU, proto_x420, "id-hex-originators-reference");
6001   register_ber_oid_dissector("2.6.1.5.12", dissect_PrecedencePolicyIdentifier_PDU, proto_x420, "id-hex-precedence-policy-id");
6002   register_ber_oid_dissector("2.6.1.20.1", dissect_Precedence_PDU, proto_x420, "id-rex-precedence");
6003   register_ber_oid_dissector("2.6.1.4.0", dissect_IA5TextData_PDU, proto_x420, "id-et-ia5-text");
6004   register_ber_oid_dissector("2.6.1.11.0", dissect_IA5TextParameters_PDU, proto_x420, "id-ep-ia5-text");
6005   register_ber_oid_dissector("2.6.1.4.2", dissect_G3FacsimileData_PDU, proto_x420, "id-et-g3-facsimile");
6006   register_ber_oid_dissector("2.6.1.11.2", dissect_G3FacsimileParameters_PDU, proto_x420, "id-ep-g3-facsimile");
6007   register_ber_oid_dissector("2.6.1.4.3", dissect_G4Class1BodyPart_PDU, proto_x420, "id-et-g4-class1");
6008   register_ber_oid_dissector("2.6.1.4.4", dissect_TeletexData_PDU, proto_x420, "id-et-teletex");
6009   register_ber_oid_dissector("2.6.1.11.4", dissect_TeletexParameters_PDU, proto_x420, "id-ep-teletex");
6010   register_ber_oid_dissector("2.6.1.4.5", dissect_VideotexData_PDU, proto_x420, "id-et-videotex");
6011   register_ber_oid_dissector("2.6.1.11.5", dissect_VideotexParameters_PDU, proto_x420, "id-ep-videotex");
6012   register_ber_oid_dissector("2.6.1.4.6", dissect_EncryptedData_PDU, proto_x420, "id-et-encrypted");
6013   register_ber_oid_dissector("2.6.1.11.6", dissect_EncryptedParameters_PDU, proto_x420, "id-ep-encrypted");
6014   register_ber_oid_dissector("2.6.1.4.7", dissect_MessageData_PDU, proto_x420, "id-et-message");
6015   register_ber_oid_dissector("2.6.1.11.7", dissect_MessageParameters_PDU, proto_x420, "id-ep-message");
6016   register_ber_oid_dissector("2.6.1.4.8", dissect_MixedModeBodyPart_PDU, proto_x420, "id-et-mixed-mode");
6017   register_ber_oid_dissector("2.6.1.4.9", dissect_BilaterallyDefinedBodyPart_PDU, proto_x420, "id-et-bilaterally-defined");
6018   register_ber_oid_dissector("2.6.1.11.11", dissect_GeneralTextParameters_PDU, proto_x420, "id-ep-general-text");
6019   register_ber_oid_dissector("2.6.1.4.11", dissect_GeneralTextData_PDU, proto_x420, "id-et-general-text");
6020   register_ber_oid_dissector("2.6.1.11.12", dissect_FileTransferParameters_PDU, proto_x420, "id-ep-file-transfer");
6021   register_ber_oid_dissector("2.6.1.4.12", dissect_FileTransferData_PDU, proto_x420, "id-et-file-transfer");
6022   register_ber_oid_dissector("2.6.1.11.15", dissect_MessageParameters_PDU, proto_x420, "id-ep-notification");
6023   register_ber_oid_dissector("2.6.1.4.15", dissect_IPN_PDU, proto_x420, "id-et-notification");
6024   register_ber_oid_dissector("2.6.1.11.16", dissect_VoiceParameters_PDU, proto_x420, "id-ep-voice");
6025   register_ber_oid_dissector("2.6.1.4.16", dissect_VoiceData_PDU, proto_x420, "id-et-voice");
6026   register_ber_oid_dissector("2.6.1.11.17.2.6.1.10.1", dissect_ForwardedContentParameters_PDU, proto_x420, "id-ep-content-p22");
6027   register_ber_oid_dissector("2.6.1.4.17.2.6.1.10.1", dissect_InformationObject_PDU, proto_x420, "id-et-content-p22");
6028   register_ber_oid_dissector("2.6.1.11.17.2.6.1.10.0", dissect_ForwardedContentParameters_PDU, proto_x420, "id-ep-content-p2");
6029   register_ber_oid_dissector("2.6.1.4.17.2.6.1.10.0", dissect_InformationObject_PDU, proto_x420, "id-et-content-p2");
6030   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");
6031   register_ber_oid_dissector("2.6.1.6.0", dissect_IPMEntryType_PDU, proto_x420, "id-sat-ipm-entry-type");
6032   register_ber_oid_dissector("2.6.1.6.1", dissect_IPMSynopsis_PDU, proto_x420, "id-sat-ipm-synopsis");
6033   register_ber_oid_dissector("2.6.1.6.2", dissect_BodyPartDescriptor_PDU, proto_x420, "id-sat-body-parts-summary");
6034   register_ber_oid_dissector("2.6.1.7.0", dissect_Heading_PDU, proto_x420, "id-hat-heading");
6035   register_ber_oid_dissector("2.6.1.7.1", dissect_ThisIPMField_PDU, proto_x420, "id-hat-this-ipm");
6036   register_ber_oid_dissector("2.6.1.7.2", dissect_OriginatorField_PDU, proto_x420, "id-hat-originator");
6037   register_ber_oid_dissector("2.6.1.7.3", dissect_RepliedToIPMField_PDU, proto_x420, "id-hat-replied-to-IPM");
6038   register_ber_oid_dissector("2.6.1.7.4", dissect_SubjectField_PDU, proto_x420, "id-hat-subject");
6039   register_ber_oid_dissector("2.6.1.7.5", dissect_ExpiryTimeField_PDU, proto_x420, "id-hat-expiry-time");
6040   register_ber_oid_dissector("2.6.1.7.6", dissect_ReplyTimeField_PDU, proto_x420, "id-hat-reply-time");
6041   register_ber_oid_dissector("2.6.1.7.7", dissect_ImportanceField_PDU, proto_x420, "id-hat-importance");
6042   register_ber_oid_dissector("2.6.1.7.8", dissect_SensitivityField_PDU, proto_x420, "id-hat-sensitivity");
6043   register_ber_oid_dissector("2.6.1.7.9", dissect_AutoForwardedField_PDU, proto_x420, "id-hat-auto-forwarded");
6044   register_ber_oid_dissector("2.6.1.7.10", dissect_AuthorizingUsersSubfield_PDU, proto_x420, "id-hat-authorizing-users");
6045   register_ber_oid_dissector("2.6.1.7.11", dissect_PrimaryRecipientsSubfield_PDU, proto_x420, "id-hat-primary-recipients");
6046   register_ber_oid_dissector("2.6.1.7.12", dissect_CopyRecipientsSubfield_PDU, proto_x420, "id-hat-copy-recipients");
6047   register_ber_oid_dissector("2.6.1.7.13", dissect_BlindCopyRecipientsSubfield_PDU, proto_x420, "id-hat-blind-copy-recipients");
6048   register_ber_oid_dissector("2.6.1.7.14", dissect_ObsoletedIPMsSubfield_PDU, proto_x420, "id-hat-obsoleted-IPMs");
6049   register_ber_oid_dissector("2.6.1.7.15", dissect_RelatedIPMsSubfield_PDU, proto_x420, "id-hat-related-IPMs");
6050   register_ber_oid_dissector("2.6.1.7.16", dissect_ReplyRecipientsSubfield_PDU, proto_x420, "id-hat-reply-recipients");
6051   register_ber_oid_dissector("2.6.1.7.17", dissect_IncompleteCopy_PDU, proto_x420, "id-hat-incomplete-copy");
6052   register_ber_oid_dissector("2.6.1.7.18", dissect_Language_PDU, proto_x420, "id-hat-languages");
6053   register_ber_oid_dissector("2.6.1.7.19", dissect_ORDescriptor_PDU, proto_x420, "id-hat-rn-requestors");
6054   register_ber_oid_dissector("2.6.1.7.20", dissect_ORDescriptor_PDU, proto_x420, "id-hat-nrn-requestors");
6055   register_ber_oid_dissector("2.6.1.7.21", dissect_ORDescriptor_PDU, proto_x420, "id-hat-reply-requestors");
6056   register_ber_oid_dissector("2.6.1.7.22", dissect_AutoSubmitted_PDU, proto_x420, "id-hat-auto-submitted");
6057   register_ber_oid_dissector("2.6.1.7.23", dissect_BodyPartSignatures_PDU, proto_x420, "id-hat-body-part-signatures");
6058   register_ber_oid_dissector("2.6.1.7.24", dissect_IPMSecurityLabel_PDU, proto_x420, "id-hat-ipm-security-label");
6059   register_ber_oid_dissector("2.6.1.7.25", dissect_BodyPartSecurityLabel_PDU, proto_x420, "id-hat-body-part-security-label");
6060   register_ber_oid_dissector("2.6.1.7.26", dissect_BodyPartTokens_PDU, proto_x420, "id-hat-body-part-encryption-token");
6061   register_ber_oid_dissector("2.6.1.7.27", dissect_AuthorizationTime_PDU, proto_x420, "id-hat-authorization-time");
6062   register_ber_oid_dissector("2.6.1.7.28", dissect_CirculationMember_PDU, proto_x420, "id-hat-circulation-list-recipients");
6063   register_ber_oid_dissector("2.6.1.7.29", dissect_DistributionCode_PDU, proto_x420, "id-hat-distribution-codes");
6064   register_ber_oid_dissector("2.6.1.7.30", dissect_ExtendedSubject_PDU, proto_x420, "id-hat-extended-subject");
6065   register_ber_oid_dissector("2.6.1.7.31", dissect_InformationCategory_PDU, proto_x420, "id-hat-information-category");
6066   register_ber_oid_dissector("2.6.1.7.32", dissect_ManualHandlingInstruction_PDU, proto_x420, "id-hat-manual-handling-instructions");
6067   register_ber_oid_dissector("2.6.1.7.33", dissect_OriginatorsReference_PDU, proto_x420, "id-hat-originators-reference");
6068   register_ber_oid_dissector("2.6.1.7.34", dissect_PrecedencePolicyIdentifier_PDU, proto_x420, "id-hat-precedence-policy-id");
6069   register_ber_oid_dissector("2.6.1.7.35", dissect_ForwardedContentToken_PDU, proto_x420, "id-hat-forwarded-content-token");
6070   register_ber_oid_dissector("2.6.1.7.37", dissect_Precedence_PDU, proto_x420, "id-hat-precedence");
6071   register_ber_oid_dissector("2.6.1.7.38", dissect_BodyPartSignatureVerification_PDU, proto_x420, "id-hat-body-part-signature-verification-status");
6072   register_ber_oid_dissector("2.6.1.8.0", dissect_Body_PDU, proto_x420, "id-bat-body");
6073   register_ber_oid_dissector("2.6.1.13.0", dissect_CorrelatedDeliveredIPNs_PDU, proto_x420, "id-cat-correlated-delivered-ipns");
6074   register_ber_oid_dissector("2.6.1.13.1", dissect_CorrelatedDeliveredReplies_PDU, proto_x420, "id-cat-correlated-delivered-replies");
6075   register_ber_oid_dissector("2.6.1.13.2", dissect_DeliveredIPNStatus_PDU, proto_x420, "id-cat-delivered-ipn-summary");
6076   register_ber_oid_dissector("2.6.1.13.3", dissect_DeliveredReplyStatus_PDU, proto_x420, "id-cat-delivered-replies-summary");
6077   register_ber_oid_dissector("2.6.1.13.7", dissect_IPMLocation_PDU, proto_x420, "id-cat-obsoleted-ipms");
6078   register_ber_oid_dissector("2.6.1.13.14", dissect_SubmittedIPNStatus_PDU, proto_x420, "id-cat-submitted-ipn-status");
6079   register_ber_oid_dissector("2.6.1.13.16", dissect_SubmittedReplyStatus_PDU, proto_x420, "id-cat-submitted-reply-status");
6080   register_ber_oid_dissector("2.6.1.13.18", dissect_RecipientCategory_PDU, proto_x420, "id-cat-recipient-category");
6081   register_ber_oid_dissector("2.6.1.18.0", dissect_RecipientSecurityRequest_PDU, proto_x420, "id-sec-ipm-security-request");
6082   register_ber_oid_dissector("2.6.1.18.1", dissect_IpnSecurityResponse_PDU, proto_x420, "id-sec-security-common-fields");
6083
6084
6085 /*--- End of included file: packet-x420-dis-tab.c ---*/
6086 #line 152 "packet-x420-template.c"
6087
6088   register_ber_oid_dissector("2.6.1.10.0", dissect_x420, proto_x420, "InterPersonal Message (1984)");
6089   register_ber_oid_dissector("2.6.1.10.1", dissect_x420, proto_x420, "InterPersonal Message (1988)");
6090
6091
6092 }