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