Enable Lua tcp tap userdata.
[obnox/wireshark/wip.git] / epan / dissectors / packet-x509if.c
1 /* Do not modify this file.                                                   */
2 /* It is created automatically by the ASN.1 to Wireshark dissector compiler   */
3 /* packet-x509if.c                                                            */
4 /* ../../tools/asn2wrs.py -b -e -p x509if -c ./x509if.cnf -s ./packet-x509if-template -D . InformationFramework.asn ServiceAdministration.asn */
5
6 /* Input file: packet-x509if-template.c */
7
8 #line 1 "packet-x509if-template.c"
9 /* packet-x509if.c
10  * Routines for X.509 Information Framework packet dissection
11  *  Ronnie Sahlberg 2004
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 <stdio.h>
44 #include <string.h>
45
46 #include "packet-ber.h"
47 #include "packet-dap.h"
48 #include "packet-x509if.h"
49 #include "packet-x509sat.h"
50 #include <epan/strutil.h>
51
52 #define PNAME  "X.509 Information Framework"
53 #define PSNAME "X509IF"
54 #define PFNAME "x509if"
55
56 /* Initialize the protocol and registered fields */
57 int proto_x509if = -1;
58 static int hf_x509if_object_identifier_id = -1;
59 static int hf_x509if_any_string = -1;
60
61 /*--- Included file: packet-x509if-hf.c ---*/
62 #line 1 "packet-x509if-hf.c"
63 static int hf_x509if_DistinguishedName_PDU = -1;  /* DistinguishedName */
64 static int hf_x509if_SubtreeSpecification_PDU = -1;  /* SubtreeSpecification */
65 static int hf_x509if_HierarchyLevel_PDU = -1;     /* HierarchyLevel */
66 static int hf_x509if_HierarchyBelow_PDU = -1;     /* HierarchyBelow */
67 static int hf_x509if_type = -1;                   /* T_type */
68 static int hf_x509if_values = -1;                 /* T_values */
69 static int hf_x509if_values_item = -1;            /* T_values_item */
70 static int hf_x509if_valuesWithContext = -1;      /* T_valuesWithContext */
71 static int hf_x509if_valuesWithContext_item = -1;  /* T_valuesWithContext_item */
72 static int hf_x509if_value = -1;                  /* T_value */
73 static int hf_x509if_contextList = -1;            /* SET_SIZE_1_MAX_OF_Context */
74 static int hf_x509if_contextList_item = -1;       /* Context */
75 static int hf_x509if_contextType = -1;            /* T_contextType */
76 static int hf_x509if_contextValues = -1;          /* T_contextValues */
77 static int hf_x509if_contextValues_item = -1;     /* T_contextValues_item */
78 static int hf_x509if_fallback = -1;               /* BOOLEAN */
79 static int hf_x509if_type_01 = -1;                /* T_type_01 */
80 static int hf_x509if_assertion = -1;              /* T_assertion */
81 static int hf_x509if_assertedContexts = -1;       /* T_assertedContexts */
82 static int hf_x509if_allContexts = -1;            /* NULL */
83 static int hf_x509if_selectedContexts = -1;       /* SET_SIZE_1_MAX_OF_ContextAssertion */
84 static int hf_x509if_selectedContexts_item = -1;  /* ContextAssertion */
85 static int hf_x509if_ca_contextType = -1;         /* T_ca_contextType */
86 static int hf_x509if_ca_contextValues = -1;       /* T_ca_contextValues */
87 static int hf_x509if_ca_contextValues_item = -1;  /* T_ca_contextValues_item */
88 static int hf_x509if_type_02 = -1;                /* OBJECT_IDENTIFIER */
89 static int hf_x509if_ata_assertedContexts = -1;   /* SEQUENCE_SIZE_1_MAX_OF_ContextAssertion */
90 static int hf_x509if_ata_assertedContexts_item = -1;  /* ContextAssertion */
91 static int hf_x509if_rdnSequence = -1;            /* RDNSequence */
92 static int hf_x509if_RDNSequence_item = -1;       /* RDNSequence_item */
93 static int hf_x509if_RelativeDistinguishedName_item = -1;  /* RelativeDistinguishedName_item */
94 static int hf_x509if_type_03 = -1;                /* T_type_02 */
95 static int hf_x509if_atadv_value = -1;            /* T_atadv_value */
96 static int hf_x509if_primaryDistinguished = -1;   /* BOOLEAN */
97 static int hf_x509if_valueswithContext = -1;      /* T_valWithContext */
98 static int hf_x509if_valueswithContext_item = -1;  /* T_valWithContext_item */
99 static int hf_x509if_distingAttrValue = -1;       /* T_distingAttrValue */
100 static int hf_x509if_chopSpecificExclusions = -1;  /* T_chopSpecificExclusions */
101 static int hf_x509if_chopSpecificExclusions_item = -1;  /* T_chopSpecificExclusions_item */
102 static int hf_x509if_chopBefore = -1;             /* LocalName */
103 static int hf_x509if_chopAfter = -1;              /* LocalName */
104 static int hf_x509if_minimum = -1;                /* BaseDistance */
105 static int hf_x509if_maximum = -1;                /* BaseDistance */
106 static int hf_x509if_item = -1;                   /* OBJECT_IDENTIFIER */
107 static int hf_x509if_refinement_and = -1;         /* SET_OF_Refinement */
108 static int hf_x509if_refinement_and_item = -1;    /* Refinement */
109 static int hf_x509if_refinement_or = -1;          /* SET_OF_Refinement */
110 static int hf_x509if_refinement_or_item = -1;     /* Refinement */
111 static int hf_x509if_refinement_not = -1;         /* Refinement */
112 static int hf_x509if_ruleIdentifier = -1;         /* RuleIdentifier */
113 static int hf_x509if_nameForm = -1;               /* OBJECT_IDENTIFIER */
114 static int hf_x509if_superiorStructureRules = -1;  /* SET_SIZE_1_MAX_OF_RuleIdentifier */
115 static int hf_x509if_superiorStructureRules_item = -1;  /* RuleIdentifier */
116 static int hf_x509if_structuralObjectClass = -1;  /* OBJECT_IDENTIFIER */
117 static int hf_x509if_auxiliaries = -1;            /* T_auxiliaries */
118 static int hf_x509if_auxiliaries_item = -1;       /* OBJECT_IDENTIFIER */
119 static int hf_x509if_mandatory = -1;              /* T_mandatory */
120 static int hf_x509if_mandatory_item = -1;         /* OBJECT_IDENTIFIER */
121 static int hf_x509if_optional = -1;               /* T_optional */
122 static int hf_x509if_optional_item = -1;          /* OBJECT_IDENTIFIER */
123 static int hf_x509if_precluded = -1;              /* T_precluded */
124 static int hf_x509if_precluded_item = -1;         /* OBJECT_IDENTIFIER */
125 static int hf_x509if_attributeType = -1;          /* OBJECT_IDENTIFIER */
126 static int hf_x509if_mandatoryContexts = -1;      /* T_mandatoryContexts */
127 static int hf_x509if_mandatoryContexts_item = -1;  /* OBJECT_IDENTIFIER */
128 static int hf_x509if_optionalContexts = -1;       /* T_optionalContexts */
129 static int hf_x509if_optionalContexts_item = -1;  /* OBJECT_IDENTIFIER */
130 static int hf_x509if_id = -1;                     /* INTEGER */
131 static int hf_x509if_dmdId = -1;                  /* OBJECT_IDENTIFIER */
132 static int hf_x509if_attributeType_01 = -1;       /* T_attributeType */
133 static int hf_x509if_includeSubtypes = -1;        /* BOOLEAN */
134 static int hf_x509if_ra_selectedValues = -1;      /* T_ra_selectedValues */
135 static int hf_x509if_ra_selectedValues_item = -1;  /* T_ra_selectedValues_item */
136 static int hf_x509if_defaultValues = -1;          /* T_defaultValues */
137 static int hf_x509if_defaultValues_item = -1;     /* T_defaultValues_item */
138 static int hf_x509if_entryType = -1;              /* T_entryType */
139 static int hf_x509if_ra_values = -1;              /* T_ra_values */
140 static int hf_x509if_ra_values_item = -1;         /* T_ra_values_item */
141 static int hf_x509if_contexts = -1;               /* SEQUENCE_SIZE_0_MAX_OF_ContextProfile */
142 static int hf_x509if_contexts_item = -1;          /* ContextProfile */
143 static int hf_x509if_contextCombination = -1;     /* ContextCombination */
144 static int hf_x509if_matchingUse = -1;            /* SEQUENCE_SIZE_1_MAX_OF_MatchingUse */
145 static int hf_x509if_matchingUse_item = -1;       /* MatchingUse */
146 static int hf_x509if_contextType_01 = -1;         /* T_contextType_01 */
147 static int hf_x509if_contextValue = -1;           /* T_contextValue */
148 static int hf_x509if_contextValue_item = -1;      /* T_contextValue_item */
149 static int hf_x509if_context = -1;                /* OBJECT_IDENTIFIER */
150 static int hf_x509if_contextcombination_and = -1;  /* SEQUENCE_OF_ContextCombination */
151 static int hf_x509if_contextcombination_and_item = -1;  /* ContextCombination */
152 static int hf_x509if_contextcombination_or = -1;  /* SEQUENCE_OF_ContextCombination */
153 static int hf_x509if_contextcombination_or_item = -1;  /* ContextCombination */
154 static int hf_x509if_contextcombination_not = -1;  /* ContextCombination */
155 static int hf_x509if_restrictionType = -1;        /* T_restrictionType */
156 static int hf_x509if_restrictionValue = -1;       /* T_restrictionValue */
157 static int hf_x509if_attribute = -1;              /* AttributeType */
158 static int hf_x509if_and = -1;                    /* SEQUENCE_OF_AttributeCombination */
159 static int hf_x509if_and_item = -1;               /* AttributeCombination */
160 static int hf_x509if_or = -1;                     /* SEQUENCE_OF_AttributeCombination */
161 static int hf_x509if_or_item = -1;                /* AttributeCombination */
162 static int hf_x509if_not = -1;                    /* AttributeCombination */
163 static int hf_x509if_attributeType_02 = -1;       /* T_attributeType_01 */
164 static int hf_x509if_outputValues = -1;           /* T_outputValues */
165 static int hf_x509if_selectedValues = -1;         /* T_selectedValues */
166 static int hf_x509if_selectedValues_item = -1;    /* T_selectedValues_item */
167 static int hf_x509if_matchedValuesOnly = -1;      /* NULL */
168 static int hf_x509if_contexts_01 = -1;            /* SEQUENCE_SIZE_1_MAX_OF_ContextProfile */
169 static int hf_x509if_serviceControls = -1;        /* ServiceControlOptions */
170 static int hf_x509if_searchOptions = -1;          /* SearchControlOptions */
171 static int hf_x509if_hierarchyOptions = -1;       /* HierarchySelections */
172 static int hf_x509if_default = -1;                /* INTEGER */
173 static int hf_x509if_max = -1;                    /* INTEGER */
174 static int hf_x509if_basic = -1;                  /* MRMapping */
175 static int hf_x509if_tightenings = -1;            /* SEQUENCE_SIZE_1_MAX_OF_MRMapping */
176 static int hf_x509if_tightenings_item = -1;       /* MRMapping */
177 static int hf_x509if_relaxations = -1;            /* SEQUENCE_SIZE_1_MAX_OF_MRMapping */
178 static int hf_x509if_relaxations_item = -1;       /* MRMapping */
179 static int hf_x509if_maximum_relaxation = -1;     /* INTEGER */
180 static int hf_x509if_minimum_relaxation = -1;     /* INTEGER */
181 static int hf_x509if_mapping = -1;                /* SEQUENCE_SIZE_1_MAX_OF_Mapping */
182 static int hf_x509if_mapping_item = -1;           /* Mapping */
183 static int hf_x509if_substitution = -1;           /* SEQUENCE_SIZE_1_MAX_OF_MRSubstitution */
184 static int hf_x509if_substitution_item = -1;      /* MRSubstitution */
185 static int hf_x509if_mappingFunction = -1;        /* OBJECT_IDENTIFIER */
186 static int hf_x509if_level = -1;                  /* INTEGER */
187 static int hf_x509if_oldMatchingRule = -1;        /* OBJECT_IDENTIFIER */
188 static int hf_x509if_newMatchingRule = -1;        /* OBJECT_IDENTIFIER */
189 static int hf_x509if_base = -1;                   /* LocalName */
190 static int hf_x509if_specificExclusions = -1;     /* T_specificExclusions */
191 static int hf_x509if_specificExclusions_item = -1;  /* T_specificExclusions_item */
192 static int hf_x509if_specificationFilter = -1;    /* Refinement */
193 static int hf_x509if_serviceType = -1;            /* OBJECT_IDENTIFIER */
194 static int hf_x509if_userClass = -1;              /* INTEGER */
195 static int hf_x509if_inputAttributeTypes = -1;    /* SEQUENCE_SIZE_0_MAX_OF_RequestAttribute */
196 static int hf_x509if_inputAttributeTypes_item = -1;  /* RequestAttribute */
197 static int hf_x509if_attributeCombination = -1;   /* AttributeCombination */
198 static int hf_x509if_outputAttributeTypes = -1;   /* SEQUENCE_SIZE_1_MAX_OF_ResultAttribute */
199 static int hf_x509if_outputAttributeTypes_item = -1;  /* ResultAttribute */
200 static int hf_x509if_defaultControls = -1;        /* ControlOptions */
201 static int hf_x509if_mandatoryControls = -1;      /* ControlOptions */
202 static int hf_x509if_searchRuleControls = -1;     /* ControlOptions */
203 static int hf_x509if_familyGrouping = -1;         /* FamilyGrouping */
204 static int hf_x509if_familyReturn = -1;           /* FamilyReturn */
205 static int hf_x509if_relaxation = -1;             /* RelaxationPolicy */
206 static int hf_x509if_additionalControl = -1;      /* SEQUENCE_SIZE_1_MAX_OF_AttributeType */
207 static int hf_x509if_additionalControl_item = -1;  /* AttributeType */
208 static int hf_x509if_allowedSubset = -1;          /* AllowedSubset */
209 static int hf_x509if_imposedSubset = -1;          /* ImposedSubset */
210 static int hf_x509if_entryLimit = -1;             /* EntryLimit */
211 static int hf_x509if_name = -1;                   /* SET_SIZE_1_MAX_OF_DirectoryString */
212 static int hf_x509if_name_item = -1;              /* DirectoryString */
213 static int hf_x509if_description = -1;            /* DirectoryString */
214 /* named bits */
215 static int hf_x509if_AllowedSubset_baseObject = -1;
216 static int hf_x509if_AllowedSubset_oneLevel = -1;
217 static int hf_x509if_AllowedSubset_wholeSubtree = -1;
218
219 /*--- End of included file: packet-x509if-hf.c ---*/
220 #line 53 "packet-x509if-template.c"
221
222 /* Initialize the subtree pointers */
223
224 /*--- Included file: packet-x509if-ett.c ---*/
225 #line 1 "packet-x509if-ett.c"
226 static gint ett_x509if_Attribute = -1;
227 static gint ett_x509if_T_values = -1;
228 static gint ett_x509if_T_valuesWithContext = -1;
229 static gint ett_x509if_T_valuesWithContext_item = -1;
230 static gint ett_x509if_SET_SIZE_1_MAX_OF_Context = -1;
231 static gint ett_x509if_Context = -1;
232 static gint ett_x509if_T_contextValues = -1;
233 static gint ett_x509if_AttributeValueAssertion = -1;
234 static gint ett_x509if_T_assertedContexts = -1;
235 static gint ett_x509if_SET_SIZE_1_MAX_OF_ContextAssertion = -1;
236 static gint ett_x509if_ContextAssertion = -1;
237 static gint ett_x509if_T_ca_contextValues = -1;
238 static gint ett_x509if_AttributeTypeAssertion = -1;
239 static gint ett_x509if_SEQUENCE_SIZE_1_MAX_OF_ContextAssertion = -1;
240 static gint ett_x509if_Name = -1;
241 static gint ett_x509if_RDNSequence = -1;
242 static gint ett_x509if_RelativeDistinguishedName = -1;
243 static gint ett_x509if_AttributeTypeAndDistinguishedValue = -1;
244 static gint ett_x509if_T_valWithContext = -1;
245 static gint ett_x509if_T_valWithContext_item = -1;
246 static gint ett_x509if_SubtreeSpecification = -1;
247 static gint ett_x509if_ChopSpecification = -1;
248 static gint ett_x509if_T_chopSpecificExclusions = -1;
249 static gint ett_x509if_T_chopSpecificExclusions_item = -1;
250 static gint ett_x509if_Refinement = -1;
251 static gint ett_x509if_SET_OF_Refinement = -1;
252 static gint ett_x509if_DITStructureRule = -1;
253 static gint ett_x509if_SET_SIZE_1_MAX_OF_RuleIdentifier = -1;
254 static gint ett_x509if_DITContentRule = -1;
255 static gint ett_x509if_T_auxiliaries = -1;
256 static gint ett_x509if_T_mandatory = -1;
257 static gint ett_x509if_T_optional = -1;
258 static gint ett_x509if_T_precluded = -1;
259 static gint ett_x509if_DITContextUse = -1;
260 static gint ett_x509if_T_mandatoryContexts = -1;
261 static gint ett_x509if_T_optionalContexts = -1;
262 static gint ett_x509if_SearchRuleDescription = -1;
263 static gint ett_x509if_SearchRule = -1;
264 static gint ett_x509if_SearchRuleId = -1;
265 static gint ett_x509if_AllowedSubset = -1;
266 static gint ett_x509if_RequestAttribute = -1;
267 static gint ett_x509if_T_ra_selectedValues = -1;
268 static gint ett_x509if_T_defaultValues = -1;
269 static gint ett_x509if_T_defaultValues_item = -1;
270 static gint ett_x509if_T_ra_values = -1;
271 static gint ett_x509if_SEQUENCE_SIZE_0_MAX_OF_ContextProfile = -1;
272 static gint ett_x509if_SEQUENCE_SIZE_1_MAX_OF_MatchingUse = -1;
273 static gint ett_x509if_ContextProfile = -1;
274 static gint ett_x509if_T_contextValue = -1;
275 static gint ett_x509if_ContextCombination = -1;
276 static gint ett_x509if_SEQUENCE_OF_ContextCombination = -1;
277 static gint ett_x509if_MatchingUse = -1;
278 static gint ett_x509if_AttributeCombination = -1;
279 static gint ett_x509if_SEQUENCE_OF_AttributeCombination = -1;
280 static gint ett_x509if_ResultAttribute = -1;
281 static gint ett_x509if_T_outputValues = -1;
282 static gint ett_x509if_T_selectedValues = -1;
283 static gint ett_x509if_SEQUENCE_SIZE_1_MAX_OF_ContextProfile = -1;
284 static gint ett_x509if_ControlOptions = -1;
285 static gint ett_x509if_EntryLimit = -1;
286 static gint ett_x509if_RelaxationPolicy = -1;
287 static gint ett_x509if_SEQUENCE_SIZE_1_MAX_OF_MRMapping = -1;
288 static gint ett_x509if_MRMapping = -1;
289 static gint ett_x509if_SEQUENCE_SIZE_1_MAX_OF_Mapping = -1;
290 static gint ett_x509if_SEQUENCE_SIZE_1_MAX_OF_MRSubstitution = -1;
291 static gint ett_x509if_Mapping = -1;
292 static gint ett_x509if_MRSubstitution = -1;
293 static gint ett_x509if_T_specificExclusions = -1;
294 static gint ett_x509if_T_specificExclusions_item = -1;
295 static gint ett_x509if_SEQUENCE_SIZE_0_MAX_OF_RequestAttribute = -1;
296 static gint ett_x509if_SEQUENCE_SIZE_1_MAX_OF_ResultAttribute = -1;
297 static gint ett_x509if_SEQUENCE_SIZE_1_MAX_OF_AttributeType = -1;
298 static gint ett_x509if_SET_SIZE_1_MAX_OF_DirectoryString = -1;
299
300 /*--- End of included file: packet-x509if-ett.c ---*/
301 #line 56 "packet-x509if-template.c"
302
303 static const char *object_identifier_id;
304 static proto_tree *top_of_dn = NULL;
305 static proto_tree *top_of_rdn = NULL;
306
307 static gboolean rdn_one_value = FALSE; /* have we seen one value in an RDN yet */
308 static gboolean dn_one_rdn = FALSE; /* have we seen one RDN in a DN yet */
309 static gboolean doing_dn = TRUE;
310 static gboolean doing_attr = FALSE;
311
312 #define MAX_RDN_STR_LEN   64
313 #define MAX_DN_STR_LEN    (20 * MAX_RDN_STR_LEN)
314
315 static char *last_dn = NULL;
316 static char *last_rdn = NULL;
317
318 static int ava_hf_index;
319 #define MAX_FMT_VALS   32
320 static value_string fmt_vals[MAX_FMT_VALS];
321 #define MAX_AVA_STR_LEN   64
322 static char *last_ava = NULL;
323
324
325 /*--- Included file: packet-x509if-fn.c ---*/
326 #line 1 "packet-x509if-fn.c"
327 /*--- Cyclic dependencies ---*/
328
329 /* Refinement -> Refinement/and -> Refinement */
330 /* Refinement -> Refinement */
331 int dissect_x509if_Refinement(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
332
333 /* ContextCombination -> ContextCombination/and -> ContextCombination */
334 /* ContextCombination -> ContextCombination */
335 int dissect_x509if_ContextCombination(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
336
337 /* AttributeCombination -> AttributeCombination/and -> AttributeCombination */
338 /* AttributeCombination -> AttributeCombination */
339 int dissect_x509if_AttributeCombination(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
340
341
342
343
344 static int
345 dissect_x509if_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_) {
346   offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_x509if_object_identifier_id, &object_identifier_id);
347
348   return offset;
349 }
350
351
352
353 static int
354 dissect_x509if_T_values_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_) {
355 #line 310 "x509if.cnf"
356   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree);
357
358
359
360   return offset;
361 }
362
363
364 static const ber_sequence_t T_values_set_of[1] = {
365   { &hf_x509if_values_item  , BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_x509if_T_values_item },
366 };
367
368 static int
369 dissect_x509if_T_values(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
370   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
371                                  T_values_set_of, hf_index, ett_x509if_T_values);
372
373   return offset;
374 }
375
376
377
378 static int
379 dissect_x509if_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_) {
380 #line 280 "x509if.cnf"
381   offset=call_ber_oid_callback("unknown", tvb, offset, actx->pinfo, tree);
382
383
384
385   return offset;
386 }
387
388
389
390 static int
391 dissect_x509if_T_contextType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
392   offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_x509if_object_identifier_id, &object_identifier_id);
393
394   return offset;
395 }
396
397
398
399 static int
400 dissect_x509if_T_contextValues_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_) {
401 #line 292 "x509if.cnf"
402   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree);
403
404
405
406   return offset;
407 }
408
409
410 static const ber_sequence_t T_contextValues_set_of[1] = {
411   { &hf_x509if_contextValues_item, BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_x509if_T_contextValues_item },
412 };
413
414 static int
415 dissect_x509if_T_contextValues(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
416   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
417                                  T_contextValues_set_of, hf_index, ett_x509if_T_contextValues);
418
419   return offset;
420 }
421
422
423
424 static int
425 dissect_x509if_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_) {
426   offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
427
428   return offset;
429 }
430
431
432 static const ber_sequence_t Context_sequence[] = {
433   { &hf_x509if_contextType  , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_T_contextType },
434   { &hf_x509if_contextValues, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x509if_T_contextValues },
435   { &hf_x509if_fallback     , BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_x509if_BOOLEAN },
436   { NULL, 0, 0, 0, NULL }
437 };
438
439 int
440 dissect_x509if_Context(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
441   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
442                                    Context_sequence, hf_index, ett_x509if_Context);
443
444   return offset;
445 }
446
447
448 static const ber_sequence_t SET_SIZE_1_MAX_OF_Context_set_of[1] = {
449   { &hf_x509if_contextList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_Context },
450 };
451
452 static int
453 dissect_x509if_SET_SIZE_1_MAX_OF_Context(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
454   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
455                                  SET_SIZE_1_MAX_OF_Context_set_of, hf_index, ett_x509if_SET_SIZE_1_MAX_OF_Context);
456
457   return offset;
458 }
459
460
461 static const ber_sequence_t T_valuesWithContext_item_sequence[] = {
462   { &hf_x509if_value        , BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_x509if_T_value },
463   { &hf_x509if_contextList  , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x509if_SET_SIZE_1_MAX_OF_Context },
464   { NULL, 0, 0, 0, NULL }
465 };
466
467 static int
468 dissect_x509if_T_valuesWithContext_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_) {
469   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
470                                    T_valuesWithContext_item_sequence, hf_index, ett_x509if_T_valuesWithContext_item);
471
472   return offset;
473 }
474
475
476 static const ber_sequence_t T_valuesWithContext_set_of[1] = {
477   { &hf_x509if_valuesWithContext_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_T_valuesWithContext_item },
478 };
479
480 static int
481 dissect_x509if_T_valuesWithContext(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
482   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
483                                  T_valuesWithContext_set_of, hf_index, ett_x509if_T_valuesWithContext);
484
485   return offset;
486 }
487
488
489 static const ber_sequence_t Attribute_sequence[] = {
490   { &hf_x509if_type         , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_T_type },
491   { &hf_x509if_values       , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x509if_T_values },
492   { &hf_x509if_valuesWithContext, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_x509if_T_valuesWithContext },
493   { NULL, 0, 0, 0, NULL }
494 };
495
496 int
497 dissect_x509if_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_) {
498 #line 411 "x509if.cnf"
499         doing_attr = TRUE;
500
501           offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
502                                    Attribute_sequence, hf_index, ett_x509if_Attribute);
503
504
505         doing_attr = FALSE;
506
507
508   return offset;
509 }
510
511
512
513 int
514 dissect_x509if_AttributeType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
515   offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_x509if_object_identifier_id, &object_identifier_id);
516
517   return offset;
518 }
519
520
521
522 int
523 dissect_x509if_AttributeValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
524 #line 298 "x509if.cnf"
525   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree);
526
527
528
529   return offset;
530 }
531
532
533
534 static int
535 dissect_x509if_T_type_01(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
536   offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_x509if_object_identifier_id, &object_identifier_id);
537
538   return offset;
539 }
540
541
542
543 static int
544 dissect_x509if_T_assertion(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
545 #line 304 "x509if.cnf"
546   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree);
547
548
549
550   return offset;
551 }
552
553
554
555 static int
556 dissect_x509if_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_) {
557   offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
558
559   return offset;
560 }
561
562
563
564 static int
565 dissect_x509if_T_ca_contextType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
566   offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_x509if_object_identifier_id, &object_identifier_id);
567
568   return offset;
569 }
570
571
572
573 static int
574 dissect_x509if_T_ca_contextValues_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_) {
575 #line 184 "x509if.cnf"
576   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree);
577
578
579
580   return offset;
581 }
582
583
584 static const ber_sequence_t T_ca_contextValues_set_of[1] = {
585   { &hf_x509if_ca_contextValues_item, BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_x509if_T_ca_contextValues_item },
586 };
587
588 static int
589 dissect_x509if_T_ca_contextValues(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
590   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
591                                  T_ca_contextValues_set_of, hf_index, ett_x509if_T_ca_contextValues);
592
593   return offset;
594 }
595
596
597 static const ber_sequence_t ContextAssertion_sequence[] = {
598   { &hf_x509if_ca_contextType, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_T_ca_contextType },
599   { &hf_x509if_ca_contextValues, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x509if_T_ca_contextValues },
600   { NULL, 0, 0, 0, NULL }
601 };
602
603 int
604 dissect_x509if_ContextAssertion(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
605   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
606                                    ContextAssertion_sequence, hf_index, ett_x509if_ContextAssertion);
607
608   return offset;
609 }
610
611
612 static const ber_sequence_t SET_SIZE_1_MAX_OF_ContextAssertion_set_of[1] = {
613   { &hf_x509if_selectedContexts_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_ContextAssertion },
614 };
615
616 static int
617 dissect_x509if_SET_SIZE_1_MAX_OF_ContextAssertion(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
618   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
619                                  SET_SIZE_1_MAX_OF_ContextAssertion_set_of, hf_index, ett_x509if_SET_SIZE_1_MAX_OF_ContextAssertion);
620
621   return offset;
622 }
623
624
625 static const value_string x509if_T_assertedContexts_vals[] = {
626   {   0, "allContexts" },
627   {   1, "selectedContexts" },
628   { 0, NULL }
629 };
630
631 static const ber_choice_t T_assertedContexts_choice[] = {
632   {   0, &hf_x509if_allContexts  , BER_CLASS_CON, 0, 0, dissect_x509if_NULL },
633   {   1, &hf_x509if_selectedContexts, BER_CLASS_CON, 1, 0, dissect_x509if_SET_SIZE_1_MAX_OF_ContextAssertion },
634   { 0, NULL, 0, 0, 0, NULL }
635 };
636
637 static int
638 dissect_x509if_T_assertedContexts(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
639   offset = dissect_ber_choice(actx, tree, tvb, offset,
640                                  T_assertedContexts_choice, hf_index, ett_x509if_T_assertedContexts,
641                                  NULL);
642
643   return offset;
644 }
645
646
647 static const ber_sequence_t AttributeValueAssertion_sequence[] = {
648   { &hf_x509if_type_01      , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_T_type_01 },
649   { &hf_x509if_assertion    , BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_x509if_T_assertion },
650   { &hf_x509if_assertedContexts, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_x509if_T_assertedContexts },
651   { NULL, 0, 0, 0, NULL }
652 };
653
654 int
655 dissect_x509if_AttributeValueAssertion(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
656 #line 402 "x509if.cnf"
657
658         ava_hf_index = hf_index;
659         last_ava = ep_alloc(MAX_AVA_STR_LEN); *last_ava = '\0';
660
661           offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
662                                    AttributeValueAssertion_sequence, hf_index, ett_x509if_AttributeValueAssertion);
663
664
665         ava_hf_index=-1;
666
667
668
669   return offset;
670 }
671
672
673
674 static int
675 dissect_x509if_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_) {
676   offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
677
678   return offset;
679 }
680
681
682 static const ber_sequence_t SEQUENCE_SIZE_1_MAX_OF_ContextAssertion_sequence_of[1] = {
683   { &hf_x509if_ata_assertedContexts_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_ContextAssertion },
684 };
685
686 static int
687 dissect_x509if_SEQUENCE_SIZE_1_MAX_OF_ContextAssertion(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
688   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
689                                       SEQUENCE_SIZE_1_MAX_OF_ContextAssertion_sequence_of, hf_index, ett_x509if_SEQUENCE_SIZE_1_MAX_OF_ContextAssertion);
690
691   return offset;
692 }
693
694
695 static const ber_sequence_t AttributeTypeAssertion_sequence[] = {
696   { &hf_x509if_type_02      , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_OBJECT_IDENTIFIER },
697   { &hf_x509if_ata_assertedContexts, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_x509if_SEQUENCE_SIZE_1_MAX_OF_ContextAssertion },
698   { NULL, 0, 0, 0, NULL }
699 };
700
701 int
702 dissect_x509if_AttributeTypeAssertion(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
703   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
704                                    AttributeTypeAssertion_sequence, hf_index, ett_x509if_AttributeTypeAssertion);
705
706   return offset;
707 }
708
709
710
711 static int
712 dissect_x509if_T_type_02(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
713 #line 190 "x509if.cnf"
714   const char *fmt; 
715   const char *name;
716
717     offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_x509if_object_identifier_id, &object_identifier_id);
718
719
720   if(object_identifier_id) {
721     /* see if we can find a nice name */
722     name = oid_resolved_from_string(object_identifier_id);
723     if(!name) name = object_identifier_id;    
724
725     if(doing_dn) { /* append it to the RDN */
726       g_strlcat(last_rdn, name, MAX_RDN_STR_LEN);
727       g_strlcat(last_rdn, "=", MAX_RDN_STR_LEN);
728
729      /* append it to the tree */
730      proto_item_append_text(tree, " (%s=", name);
731     }
732
733     if(doing_attr) {
734       /* append it to the parent item */
735       proto_item_append_text(tree, " (%s)", name);
736     }
737
738     if((fmt = val_to_str(hf_index, fmt_vals, "")) && *fmt) {
739       /* we have a format */
740       last_ava = ep_alloc(MAX_AVA_STR_LEN); *last_ava = '\0';
741
742       g_snprintf(last_ava, MAX_AVA_STR_LEN, "%s %s", name, fmt);
743
744       proto_item_append_text(tree, " %s", last_ava);
745
746     }
747   }
748
749
750
751   return offset;
752 }
753
754
755
756 static int
757 dissect_x509if_T_atadv_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_) {
758 #line 225 "x509if.cnf"
759   int old_offset = offset;
760   tvbuff_t      *out_tvb;
761   char          *value = NULL;
762   const char    *fmt; 
763   const char    *name = NULL;
764   const char    *orig_oid = object_identifier_id;
765
766   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree);
767
768   /* in dissecting the value we may have overridden the OID of the value - which is
769      a problem if there are multiple values */
770   object_identifier_id = orig_oid;
771
772   /* try and dissect as a string */
773   dissect_ber_octet_string(FALSE, actx, NULL, tvb, old_offset, hf_x509if_any_string, &out_tvb);
774   
775   /* should also try and dissect as an OID and integer */
776   /* of course, if I can look up the syntax .... */
777
778   if(out_tvb) {
779     /* it was a string - format it */
780     value = tvb_format_text(out_tvb, 0, tvb_length(out_tvb));
781
782     if(doing_dn) {
783       g_strlcat(last_rdn, value, MAX_RDN_STR_LEN);
784
785       /* append it to the tree*/
786       proto_item_append_text(tree, "%s)", value);
787     }
788
789     if((fmt = val_to_str(ava_hf_index, fmt_vals, "")) && *fmt) {
790       /* we have a format */
791
792     if(!(name = oid_resolved_from_string(object_identifier_id)))
793       name = object_identifier_id;
794     g_snprintf(last_ava, MAX_AVA_STR_LEN, "%s %s %s", name, fmt, value);
795
796     proto_item_append_text(tree, " %s", last_ava);
797
798     }
799   }
800
801
802
803   return offset;
804 }
805
806
807
808 static int
809 dissect_x509if_T_distingAttrValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
810 #line 325 "x509if.cnf"
811   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree);
812
813
814
815   return offset;
816 }
817
818
819 static const ber_sequence_t T_valWithContext_item_sequence[] = {
820   { &hf_x509if_distingAttrValue, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_x509if_T_distingAttrValue },
821   { &hf_x509if_contextList  , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x509if_SET_SIZE_1_MAX_OF_Context },
822   { NULL, 0, 0, 0, NULL }
823 };
824
825 static int
826 dissect_x509if_T_valWithContext_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_) {
827   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
828                                    T_valWithContext_item_sequence, hf_index, ett_x509if_T_valWithContext_item);
829
830   return offset;
831 }
832
833
834 static const ber_sequence_t T_valWithContext_set_of[1] = {
835   { &hf_x509if_valueswithContext_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_T_valWithContext_item },
836 };
837
838 static int
839 dissect_x509if_T_valWithContext(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
840   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
841                                  T_valWithContext_set_of, hf_index, ett_x509if_T_valWithContext);
842
843   return offset;
844 }
845
846
847 static const ber_sequence_t AttributeTypeAndDistinguishedValue_sequence[] = {
848   { &hf_x509if_type_03      , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_T_type_02 },
849   { &hf_x509if_atadv_value  , BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_x509if_T_atadv_value },
850   { &hf_x509if_primaryDistinguished, BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_x509if_BOOLEAN },
851   { &hf_x509if_valueswithContext, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_x509if_T_valWithContext },
852   { NULL, 0, 0, 0, NULL }
853 };
854
855 int
856 dissect_x509if_AttributeTypeAndDistinguishedValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
857   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
858                                    AttributeTypeAndDistinguishedValue_sequence, hf_index, ett_x509if_AttributeTypeAndDistinguishedValue);
859
860   return offset;
861 }
862
863
864
865 static int
866 dissect_x509if_RelativeDistinguishedName_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_) {
867 #line 356 "x509if.cnf"
868
869   if(!rdn_one_value) {
870     top_of_rdn = tree;
871   } else {
872
873    if(doing_dn)  
874      /* this is an additional value - delimit */
875      g_strlcat(last_rdn, "+", MAX_RDN_STR_LEN);
876   }
877
878     offset = dissect_x509if_AttributeTypeAndDistinguishedValue(implicit_tag, tvb, offset, actx, tree, hf_index);
879
880
881   rdn_one_value = TRUE;
882
883
884
885   return offset;
886 }
887
888
889 static const ber_sequence_t RelativeDistinguishedName_set_of[1] = {
890   { &hf_x509if_RelativeDistinguishedName_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_RelativeDistinguishedName_item },
891 };
892
893 int
894 dissect_x509if_RelativeDistinguishedName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
895 #line 328 "x509if.cnf"
896   char *temp_dn;
897
898   rdn_one_value = FALSE;
899   top_of_rdn = tree;
900   last_rdn = ep_alloc(MAX_DN_STR_LEN); *last_rdn = '\0';
901   doing_dn = TRUE;
902
903     offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
904                                  RelativeDistinguishedName_set_of, hf_index, ett_x509if_RelativeDistinguishedName);
905
906
907   /* we've finished - close the bracket */
908   proto_item_append_text(top_of_rdn, " (%s)", last_rdn);
909
910   /* now append this to the DN */
911   if (last_dn) {
912     if(*last_dn) {
913       temp_dn = ep_alloc(MAX_DN_STR_LEN); /* is there a better way to use ep_alloc here ? */
914       g_snprintf(temp_dn, MAX_DN_STR_LEN, "%s,%s", last_rdn, last_dn);
915       last_dn[0] = '\0';
916       g_strlcat(last_dn, temp_dn, MAX_DN_STR_LEN);
917     } else {
918       g_strlcat(last_dn, last_rdn, MAX_DN_STR_LEN);
919     }
920   }
921
922   doing_dn = FALSE;
923   last_rdn = NULL; /* it will get freed when the next packet is dissected */
924
925
926
927   return offset;
928 }
929
930
931
932 static int
933 dissect_x509if_RDNSequence_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_) {
934 #line 391 "x509if.cnf"
935
936   if(!dn_one_rdn)  {
937     /* this is the first element - record the top */
938     top_of_dn = tree;
939   } 
940
941     offset = dissect_x509if_RelativeDistinguishedName(implicit_tag, tvb, offset, actx, tree, hf_index);
942
943
944   dn_one_rdn = TRUE;
945
946
947
948   return offset;
949 }
950
951
952 static const ber_sequence_t RDNSequence_sequence_of[1] = {
953   { &hf_x509if_RDNSequence_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_x509if_RDNSequence_item },
954 };
955
956 int
957 dissect_x509if_RDNSequence(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
958 #line 371 "x509if.cnf"
959   const char *fmt; 
960
961   dn_one_rdn = FALSE; /* reset */
962   last_dn = ep_alloc(MAX_DN_STR_LEN); *last_dn = '\0';
963   top_of_dn = NULL;
964
965     offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
966                                       RDNSequence_sequence_of, hf_index, ett_x509if_RDNSequence);
967
968
969   /* we've finished - append the dn */
970   proto_item_append_text(top_of_dn, " (%s)", last_dn);
971
972  /* see if we should append this to the col info */
973   if(check_col(actx->pinfo->cinfo, COL_INFO) &&
974      (fmt = val_to_str(hf_index, fmt_vals, "")) && *fmt) {
975       /* we have a format */
976         col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %s%s", fmt, last_dn);
977   }
978
979
980
981
982   return offset;
983 }
984
985
986 const value_string x509if_Name_vals[] = {
987   {   0, "rdnSequence" },
988   { 0, NULL }
989 };
990
991 static const ber_choice_t Name_choice[] = {
992   {   0, &hf_x509if_rdnSequence  , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_RDNSequence },
993   { 0, NULL, 0, 0, 0, NULL }
994 };
995
996 int
997 dissect_x509if_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_) {
998   offset = dissect_ber_choice(actx, tree, tvb, offset,
999                                  Name_choice, hf_index, ett_x509if_Name,
1000                                  NULL);
1001
1002   return offset;
1003 }
1004
1005
1006
1007 int
1008 dissect_x509if_DistinguishedName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1009   offset = dissect_x509if_RDNSequence(implicit_tag, tvb, offset, actx, tree, hf_index);
1010
1011   return offset;
1012 }
1013
1014
1015
1016 int
1017 dissect_x509if_LocalName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1018   offset = dissect_x509if_RDNSequence(implicit_tag, tvb, offset, actx, tree, hf_index);
1019
1020   return offset;
1021 }
1022
1023
1024 static const value_string x509if_T_specificExclusions_item_vals[] = {
1025   {   0, "chopBefore" },
1026   {   1, "chopAfter" },
1027   { 0, NULL }
1028 };
1029
1030 static const ber_choice_t T_specificExclusions_item_choice[] = {
1031   {   0, &hf_x509if_chopBefore   , BER_CLASS_CON, 0, 0, dissect_x509if_LocalName },
1032   {   1, &hf_x509if_chopAfter    , BER_CLASS_CON, 1, 0, dissect_x509if_LocalName },
1033   { 0, NULL, 0, 0, 0, NULL }
1034 };
1035
1036 static int
1037 dissect_x509if_T_specificExclusions_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_) {
1038   offset = dissect_ber_choice(actx, tree, tvb, offset,
1039                                  T_specificExclusions_item_choice, hf_index, ett_x509if_T_specificExclusions_item,
1040                                  NULL);
1041
1042   return offset;
1043 }
1044
1045
1046 static const ber_sequence_t T_specificExclusions_set_of[1] = {
1047   { &hf_x509if_specificExclusions_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_x509if_T_specificExclusions_item },
1048 };
1049
1050 static int
1051 dissect_x509if_T_specificExclusions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1052   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1053                                  T_specificExclusions_set_of, hf_index, ett_x509if_T_specificExclusions);
1054
1055   return offset;
1056 }
1057
1058
1059
1060 static int
1061 dissect_x509if_BaseDistance(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1062   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1063                                                 NULL);
1064
1065   return offset;
1066 }
1067
1068
1069 static const ber_sequence_t SET_OF_Refinement_set_of[1] = {
1070   { &hf_x509if_refinement_and_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_x509if_Refinement },
1071 };
1072
1073 static int
1074 dissect_x509if_SET_OF_Refinement(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_set_of(implicit_tag, actx, tree, tvb, offset,
1076                                  SET_OF_Refinement_set_of, hf_index, ett_x509if_SET_OF_Refinement);
1077
1078   return offset;
1079 }
1080
1081
1082 const value_string x509if_Refinement_vals[] = {
1083   {   0, "item" },
1084   {   1, "and" },
1085   {   2, "or" },
1086   {   3, "not" },
1087   { 0, NULL }
1088 };
1089
1090 static const ber_choice_t Refinement_choice[] = {
1091   {   0, &hf_x509if_item         , BER_CLASS_CON, 0, 0, dissect_x509if_OBJECT_IDENTIFIER },
1092   {   1, &hf_x509if_refinement_and, BER_CLASS_CON, 1, 0, dissect_x509if_SET_OF_Refinement },
1093   {   2, &hf_x509if_refinement_or, BER_CLASS_CON, 2, 0, dissect_x509if_SET_OF_Refinement },
1094   {   3, &hf_x509if_refinement_not, BER_CLASS_CON, 3, 0, dissect_x509if_Refinement },
1095   { 0, NULL, 0, 0, 0, NULL }
1096 };
1097
1098 int
1099 dissect_x509if_Refinement(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1100   offset = dissect_ber_choice(actx, tree, tvb, offset,
1101                                  Refinement_choice, hf_index, ett_x509if_Refinement,
1102                                  NULL);
1103
1104   return offset;
1105 }
1106
1107
1108 static const ber_sequence_t SubtreeSpecification_sequence[] = {
1109   { &hf_x509if_base         , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_x509if_LocalName },
1110   { &hf_x509if_specificExclusions, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_x509if_T_specificExclusions },
1111   { &hf_x509if_minimum      , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_x509if_BaseDistance },
1112   { &hf_x509if_maximum      , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_x509if_BaseDistance },
1113   { &hf_x509if_specificationFilter, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_x509if_Refinement },
1114   { NULL, 0, 0, 0, NULL }
1115 };
1116
1117 int
1118 dissect_x509if_SubtreeSpecification(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1119   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1120                                    SubtreeSpecification_sequence, hf_index, ett_x509if_SubtreeSpecification);
1121
1122   return offset;
1123 }
1124
1125
1126 static const value_string x509if_T_chopSpecificExclusions_item_vals[] = {
1127   {   0, "chopBefore" },
1128   {   1, "chopAfter" },
1129   { 0, NULL }
1130 };
1131
1132 static const ber_choice_t T_chopSpecificExclusions_item_choice[] = {
1133   {   0, &hf_x509if_chopBefore   , BER_CLASS_CON, 0, 0, dissect_x509if_LocalName },
1134   {   1, &hf_x509if_chopAfter    , BER_CLASS_CON, 1, 0, dissect_x509if_LocalName },
1135   { 0, NULL, 0, 0, 0, NULL }
1136 };
1137
1138 static int
1139 dissect_x509if_T_chopSpecificExclusions_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_) {
1140   offset = dissect_ber_choice(actx, tree, tvb, offset,
1141                                  T_chopSpecificExclusions_item_choice, hf_index, ett_x509if_T_chopSpecificExclusions_item,
1142                                  NULL);
1143
1144   return offset;
1145 }
1146
1147
1148 static const ber_sequence_t T_chopSpecificExclusions_set_of[1] = {
1149   { &hf_x509if_chopSpecificExclusions_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_x509if_T_chopSpecificExclusions_item },
1150 };
1151
1152 static int
1153 dissect_x509if_T_chopSpecificExclusions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1154   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1155                                  T_chopSpecificExclusions_set_of, hf_index, ett_x509if_T_chopSpecificExclusions);
1156
1157   return offset;
1158 }
1159
1160
1161 static const ber_sequence_t ChopSpecification_sequence[] = {
1162   { &hf_x509if_chopSpecificExclusions, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_x509if_T_chopSpecificExclusions },
1163   { &hf_x509if_minimum      , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_x509if_BaseDistance },
1164   { &hf_x509if_maximum      , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_x509if_BaseDistance },
1165   { NULL, 0, 0, 0, NULL }
1166 };
1167
1168 int
1169 dissect_x509if_ChopSpecification(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1170   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1171                                    ChopSpecification_sequence, hf_index, ett_x509if_ChopSpecification);
1172
1173   return offset;
1174 }
1175
1176
1177 const value_string x509if_AttributeUsage_vals[] = {
1178   {   0, "userApplications" },
1179   {   1, "directoryOperation" },
1180   {   2, "distributedOperation" },
1181   {   3, "dSAOperation" },
1182   { 0, NULL }
1183 };
1184
1185
1186 int
1187 dissect_x509if_AttributeUsage(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1188   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1189                                   NULL);
1190
1191   return offset;
1192 }
1193
1194
1195
1196 int
1197 dissect_x509if_RuleIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1198   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1199                                                 NULL);
1200
1201   return offset;
1202 }
1203
1204
1205 static const ber_sequence_t SET_SIZE_1_MAX_OF_RuleIdentifier_set_of[1] = {
1206   { &hf_x509if_superiorStructureRules_item, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_x509if_RuleIdentifier },
1207 };
1208
1209 static int
1210 dissect_x509if_SET_SIZE_1_MAX_OF_RuleIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1211   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1212                                  SET_SIZE_1_MAX_OF_RuleIdentifier_set_of, hf_index, ett_x509if_SET_SIZE_1_MAX_OF_RuleIdentifier);
1213
1214   return offset;
1215 }
1216
1217
1218 static const ber_sequence_t DITStructureRule_sequence[] = {
1219   { &hf_x509if_ruleIdentifier, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_x509if_RuleIdentifier },
1220   { &hf_x509if_nameForm     , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_OBJECT_IDENTIFIER },
1221   { &hf_x509if_superiorStructureRules, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_x509if_SET_SIZE_1_MAX_OF_RuleIdentifier },
1222   { NULL, 0, 0, 0, NULL }
1223 };
1224
1225 int
1226 dissect_x509if_DITStructureRule(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1227   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1228                                    DITStructureRule_sequence, hf_index, ett_x509if_DITStructureRule);
1229
1230   return offset;
1231 }
1232
1233
1234 static const ber_sequence_t T_auxiliaries_set_of[1] = {
1235   { &hf_x509if_auxiliaries_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_OBJECT_IDENTIFIER },
1236 };
1237
1238 static int
1239 dissect_x509if_T_auxiliaries(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1240   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1241                                  T_auxiliaries_set_of, hf_index, ett_x509if_T_auxiliaries);
1242
1243   return offset;
1244 }
1245
1246
1247 static const ber_sequence_t T_mandatory_set_of[1] = {
1248   { &hf_x509if_mandatory_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_OBJECT_IDENTIFIER },
1249 };
1250
1251 static int
1252 dissect_x509if_T_mandatory(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1253   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1254                                  T_mandatory_set_of, hf_index, ett_x509if_T_mandatory);
1255
1256   return offset;
1257 }
1258
1259
1260 static const ber_sequence_t T_optional_set_of[1] = {
1261   { &hf_x509if_optional_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_OBJECT_IDENTIFIER },
1262 };
1263
1264 static int
1265 dissect_x509if_T_optional(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1266   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1267                                  T_optional_set_of, hf_index, ett_x509if_T_optional);
1268
1269   return offset;
1270 }
1271
1272
1273 static const ber_sequence_t T_precluded_set_of[1] = {
1274   { &hf_x509if_precluded_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_OBJECT_IDENTIFIER },
1275 };
1276
1277 static int
1278 dissect_x509if_T_precluded(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1279   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1280                                  T_precluded_set_of, hf_index, ett_x509if_T_precluded);
1281
1282   return offset;
1283 }
1284
1285
1286 static const ber_sequence_t DITContentRule_sequence[] = {
1287   { &hf_x509if_structuralObjectClass, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_OBJECT_IDENTIFIER },
1288   { &hf_x509if_auxiliaries  , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_x509if_T_auxiliaries },
1289   { &hf_x509if_mandatory    , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_x509if_T_mandatory },
1290   { &hf_x509if_optional     , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_x509if_T_optional },
1291   { &hf_x509if_precluded    , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_x509if_T_precluded },
1292   { NULL, 0, 0, 0, NULL }
1293 };
1294
1295 int
1296 dissect_x509if_DITContentRule(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1297   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1298                                    DITContentRule_sequence, hf_index, ett_x509if_DITContentRule);
1299
1300   return offset;
1301 }
1302
1303
1304 static const ber_sequence_t T_mandatoryContexts_set_of[1] = {
1305   { &hf_x509if_mandatoryContexts_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_OBJECT_IDENTIFIER },
1306 };
1307
1308 static int
1309 dissect_x509if_T_mandatoryContexts(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1310   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1311                                  T_mandatoryContexts_set_of, hf_index, ett_x509if_T_mandatoryContexts);
1312
1313   return offset;
1314 }
1315
1316
1317 static const ber_sequence_t T_optionalContexts_set_of[1] = {
1318   { &hf_x509if_optionalContexts_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_OBJECT_IDENTIFIER },
1319 };
1320
1321 static int
1322 dissect_x509if_T_optionalContexts(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1323   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1324                                  T_optionalContexts_set_of, hf_index, ett_x509if_T_optionalContexts);
1325
1326   return offset;
1327 }
1328
1329
1330 static const ber_sequence_t DITContextUse_sequence[] = {
1331   { &hf_x509if_attributeType, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_OBJECT_IDENTIFIER },
1332   { &hf_x509if_mandatoryContexts, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_x509if_T_mandatoryContexts },
1333   { &hf_x509if_optionalContexts, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_x509if_T_optionalContexts },
1334   { NULL, 0, 0, 0, NULL }
1335 };
1336
1337 int
1338 dissect_x509if_DITContextUse(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1339   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1340                                    DITContextUse_sequence, hf_index, ett_x509if_DITContextUse);
1341
1342   return offset;
1343 }
1344
1345
1346
1347 static int
1348 dissect_x509if_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_) {
1349   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1350                                                 NULL);
1351
1352   return offset;
1353 }
1354
1355
1356
1357 static int
1358 dissect_x509if_T_attributeType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1359   offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_x509if_object_identifier_id, &object_identifier_id);
1360
1361   return offset;
1362 }
1363
1364
1365
1366 static int
1367 dissect_x509if_T_ra_selectedValues_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_) {
1368 #line 271 "x509if.cnf"
1369   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree);
1370
1371
1372
1373   return offset;
1374 }
1375
1376
1377 static const ber_sequence_t T_ra_selectedValues_sequence_of[1] = {
1378   { &hf_x509if_ra_selectedValues_item, BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_x509if_T_ra_selectedValues_item },
1379 };
1380
1381 static int
1382 dissect_x509if_T_ra_selectedValues(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1383   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1384                                       T_ra_selectedValues_sequence_of, hf_index, ett_x509if_T_ra_selectedValues);
1385
1386   return offset;
1387 }
1388
1389
1390
1391 static int
1392 dissect_x509if_T_entryType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1393   offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_x509if_object_identifier_id, &object_identifier_id);
1394
1395   return offset;
1396 }
1397
1398
1399
1400 static int
1401 dissect_x509if_T_ra_values_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_) {
1402 #line 277 "x509if.cnf"
1403   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree);
1404
1405
1406
1407   return offset;
1408 }
1409
1410
1411 static const ber_sequence_t T_ra_values_sequence_of[1] = {
1412   { &hf_x509if_ra_values_item, BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_x509if_T_ra_values_item },
1413 };
1414
1415 static int
1416 dissect_x509if_T_ra_values(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1417   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1418                                       T_ra_values_sequence_of, hf_index, ett_x509if_T_ra_values);
1419
1420   return offset;
1421 }
1422
1423
1424 static const ber_sequence_t T_defaultValues_item_sequence[] = {
1425   { &hf_x509if_entryType    , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_x509if_T_entryType },
1426   { &hf_x509if_ra_values    , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_T_ra_values },
1427   { NULL, 0, 0, 0, NULL }
1428 };
1429
1430 static int
1431 dissect_x509if_T_defaultValues_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_) {
1432   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1433                                    T_defaultValues_item_sequence, hf_index, ett_x509if_T_defaultValues_item);
1434
1435   return offset;
1436 }
1437
1438
1439 static const ber_sequence_t T_defaultValues_sequence_of[1] = {
1440   { &hf_x509if_defaultValues_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_T_defaultValues_item },
1441 };
1442
1443 static int
1444 dissect_x509if_T_defaultValues(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1445   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1446                                       T_defaultValues_sequence_of, hf_index, ett_x509if_T_defaultValues);
1447
1448   return offset;
1449 }
1450
1451
1452
1453 static int
1454 dissect_x509if_T_contextType_01(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1455   offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_x509if_object_identifier_id, &object_identifier_id);
1456
1457   return offset;
1458 }
1459
1460
1461
1462 static int
1463 dissect_x509if_T_contextValue_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_) {
1464 #line 316 "x509if.cnf"
1465   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree);
1466
1467
1468
1469   return offset;
1470 }
1471
1472
1473 static const ber_sequence_t T_contextValue_sequence_of[1] = {
1474   { &hf_x509if_contextValue_item, BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_x509if_T_contextValue_item },
1475 };
1476
1477 static int
1478 dissect_x509if_T_contextValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1479   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1480                                       T_contextValue_sequence_of, hf_index, ett_x509if_T_contextValue);
1481
1482   return offset;
1483 }
1484
1485
1486 static const ber_sequence_t ContextProfile_sequence[] = {
1487   { &hf_x509if_contextType_01, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_T_contextType_01 },
1488   { &hf_x509if_contextValue , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_x509if_T_contextValue },
1489   { NULL, 0, 0, 0, NULL }
1490 };
1491
1492 int
1493 dissect_x509if_ContextProfile(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1494   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1495                                    ContextProfile_sequence, hf_index, ett_x509if_ContextProfile);
1496
1497   return offset;
1498 }
1499
1500
1501 static const ber_sequence_t SEQUENCE_SIZE_0_MAX_OF_ContextProfile_sequence_of[1] = {
1502   { &hf_x509if_contexts_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_ContextProfile },
1503 };
1504
1505 static int
1506 dissect_x509if_SEQUENCE_SIZE_0_MAX_OF_ContextProfile(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1507   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1508                                       SEQUENCE_SIZE_0_MAX_OF_ContextProfile_sequence_of, hf_index, ett_x509if_SEQUENCE_SIZE_0_MAX_OF_ContextProfile);
1509
1510   return offset;
1511 }
1512
1513
1514 static const ber_sequence_t SEQUENCE_OF_ContextCombination_sequence_of[1] = {
1515   { &hf_x509if_contextcombination_and_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_x509if_ContextCombination },
1516 };
1517
1518 static int
1519 dissect_x509if_SEQUENCE_OF_ContextCombination(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1520   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1521                                       SEQUENCE_OF_ContextCombination_sequence_of, hf_index, ett_x509if_SEQUENCE_OF_ContextCombination);
1522
1523   return offset;
1524 }
1525
1526
1527 const value_string x509if_ContextCombination_vals[] = {
1528   {   0, "context" },
1529   {   1, "and" },
1530   {   2, "or" },
1531   {   3, "not" },
1532   { 0, NULL }
1533 };
1534
1535 static const ber_choice_t ContextCombination_choice[] = {
1536   {   0, &hf_x509if_context      , BER_CLASS_CON, 0, 0, dissect_x509if_OBJECT_IDENTIFIER },
1537   {   1, &hf_x509if_contextcombination_and, BER_CLASS_CON, 1, 0, dissect_x509if_SEQUENCE_OF_ContextCombination },
1538   {   2, &hf_x509if_contextcombination_or, BER_CLASS_CON, 2, 0, dissect_x509if_SEQUENCE_OF_ContextCombination },
1539   {   3, &hf_x509if_contextcombination_not, BER_CLASS_CON, 3, 0, dissect_x509if_ContextCombination },
1540   { 0, NULL, 0, 0, 0, NULL }
1541 };
1542
1543 int
1544 dissect_x509if_ContextCombination(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1545   offset = dissect_ber_choice(actx, tree, tvb, offset,
1546                                  ContextCombination_choice, hf_index, ett_x509if_ContextCombination,
1547                                  NULL);
1548
1549   return offset;
1550 }
1551
1552
1553
1554 static int
1555 dissect_x509if_T_restrictionType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1556   offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_x509if_object_identifier_id, &object_identifier_id);
1557
1558   return offset;
1559 }
1560
1561
1562
1563 static int
1564 dissect_x509if_T_restrictionValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1565 #line 322 "x509if.cnf"
1566   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree);
1567
1568
1569
1570   return offset;
1571 }
1572
1573
1574 static const ber_sequence_t MatchingUse_sequence[] = {
1575   { &hf_x509if_restrictionType, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_T_restrictionType },
1576   { &hf_x509if_restrictionValue, BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_x509if_T_restrictionValue },
1577   { NULL, 0, 0, 0, NULL }
1578 };
1579
1580 int
1581 dissect_x509if_MatchingUse(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1582   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1583                                    MatchingUse_sequence, hf_index, ett_x509if_MatchingUse);
1584
1585   return offset;
1586 }
1587
1588
1589 static const ber_sequence_t SEQUENCE_SIZE_1_MAX_OF_MatchingUse_sequence_of[1] = {
1590   { &hf_x509if_matchingUse_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_MatchingUse },
1591 };
1592
1593 static int
1594 dissect_x509if_SEQUENCE_SIZE_1_MAX_OF_MatchingUse(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1595   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1596                                       SEQUENCE_SIZE_1_MAX_OF_MatchingUse_sequence_of, hf_index, ett_x509if_SEQUENCE_SIZE_1_MAX_OF_MatchingUse);
1597
1598   return offset;
1599 }
1600
1601
1602 static const ber_sequence_t RequestAttribute_sequence[] = {
1603   { &hf_x509if_attributeType_01, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_T_attributeType },
1604   { &hf_x509if_includeSubtypes, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_x509if_BOOLEAN },
1605   { &hf_x509if_ra_selectedValues, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_x509if_T_ra_selectedValues },
1606   { &hf_x509if_defaultValues, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_x509if_T_defaultValues },
1607   { &hf_x509if_contexts     , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_x509if_SEQUENCE_SIZE_0_MAX_OF_ContextProfile },
1608   { &hf_x509if_contextCombination, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_x509if_ContextCombination },
1609   { &hf_x509if_matchingUse  , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_x509if_SEQUENCE_SIZE_1_MAX_OF_MatchingUse },
1610   { NULL, 0, 0, 0, NULL }
1611 };
1612
1613 int
1614 dissect_x509if_RequestAttribute(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1615   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1616                                    RequestAttribute_sequence, hf_index, ett_x509if_RequestAttribute);
1617
1618   return offset;
1619 }
1620
1621
1622 static const ber_sequence_t SEQUENCE_SIZE_0_MAX_OF_RequestAttribute_sequence_of[1] = {
1623   { &hf_x509if_inputAttributeTypes_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_RequestAttribute },
1624 };
1625
1626 static int
1627 dissect_x509if_SEQUENCE_SIZE_0_MAX_OF_RequestAttribute(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_of(implicit_tag, actx, tree, tvb, offset,
1629                                       SEQUENCE_SIZE_0_MAX_OF_RequestAttribute_sequence_of, hf_index, ett_x509if_SEQUENCE_SIZE_0_MAX_OF_RequestAttribute);
1630
1631   return offset;
1632 }
1633
1634
1635 static const ber_sequence_t SEQUENCE_OF_AttributeCombination_sequence_of[1] = {
1636   { &hf_x509if_and_item     , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_x509if_AttributeCombination },
1637 };
1638
1639 static int
1640 dissect_x509if_SEQUENCE_OF_AttributeCombination(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1641   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1642                                       SEQUENCE_OF_AttributeCombination_sequence_of, hf_index, ett_x509if_SEQUENCE_OF_AttributeCombination);
1643
1644   return offset;
1645 }
1646
1647
1648 const value_string x509if_AttributeCombination_vals[] = {
1649   {   0, "attribute" },
1650   {   1, "and" },
1651   {   2, "or" },
1652   {   3, "not" },
1653   { 0, NULL }
1654 };
1655
1656 static const ber_choice_t AttributeCombination_choice[] = {
1657   {   0, &hf_x509if_attribute    , BER_CLASS_CON, 0, 0, dissect_x509if_AttributeType },
1658   {   1, &hf_x509if_and          , BER_CLASS_CON, 1, 0, dissect_x509if_SEQUENCE_OF_AttributeCombination },
1659   {   2, &hf_x509if_or           , BER_CLASS_CON, 2, 0, dissect_x509if_SEQUENCE_OF_AttributeCombination },
1660   {   3, &hf_x509if_not          , BER_CLASS_CON, 3, 0, dissect_x509if_AttributeCombination },
1661   { 0, NULL, 0, 0, 0, NULL }
1662 };
1663
1664 int
1665 dissect_x509if_AttributeCombination(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1666   offset = dissect_ber_choice(actx, tree, tvb, offset,
1667                                  AttributeCombination_choice, hf_index, ett_x509if_AttributeCombination,
1668                                  NULL);
1669
1670   return offset;
1671 }
1672
1673
1674
1675 static int
1676 dissect_x509if_T_attributeType_01(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1677   offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_x509if_object_identifier_id, &object_identifier_id);
1678
1679   return offset;
1680 }
1681
1682
1683
1684 static int
1685 dissect_x509if_T_selectedValues_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_) {
1686 #line 286 "x509if.cnf"
1687   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree);
1688
1689
1690
1691   return offset;
1692 }
1693
1694
1695 static const ber_sequence_t T_selectedValues_sequence_of[1] = {
1696   { &hf_x509if_selectedValues_item, BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_x509if_T_selectedValues_item },
1697 };
1698
1699 static int
1700 dissect_x509if_T_selectedValues(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1701   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1702                                       T_selectedValues_sequence_of, hf_index, ett_x509if_T_selectedValues);
1703
1704   return offset;
1705 }
1706
1707
1708 static const value_string x509if_T_outputValues_vals[] = {
1709   {   0, "selectedValues" },
1710   {   1, "matchedValuesOnly" },
1711   { 0, NULL }
1712 };
1713
1714 static const ber_choice_t T_outputValues_choice[] = {
1715   {   0, &hf_x509if_selectedValues, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_T_selectedValues },
1716   {   1, &hf_x509if_matchedValuesOnly, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_x509if_NULL },
1717   { 0, NULL, 0, 0, 0, NULL }
1718 };
1719
1720 static int
1721 dissect_x509if_T_outputValues(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1722   offset = dissect_ber_choice(actx, tree, tvb, offset,
1723                                  T_outputValues_choice, hf_index, ett_x509if_T_outputValues,
1724                                  NULL);
1725
1726   return offset;
1727 }
1728
1729
1730 static const ber_sequence_t SEQUENCE_SIZE_1_MAX_OF_ContextProfile_sequence_of[1] = {
1731   { &hf_x509if_contexts_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_ContextProfile },
1732 };
1733
1734 static int
1735 dissect_x509if_SEQUENCE_SIZE_1_MAX_OF_ContextProfile(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1736   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1737                                       SEQUENCE_SIZE_1_MAX_OF_ContextProfile_sequence_of, hf_index, ett_x509if_SEQUENCE_SIZE_1_MAX_OF_ContextProfile);
1738
1739   return offset;
1740 }
1741
1742
1743 static const ber_sequence_t ResultAttribute_sequence[] = {
1744   { &hf_x509if_attributeType_02, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_T_attributeType_01 },
1745   { &hf_x509if_outputValues , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_x509if_T_outputValues },
1746   { &hf_x509if_contexts_01  , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_x509if_SEQUENCE_SIZE_1_MAX_OF_ContextProfile },
1747   { NULL, 0, 0, 0, NULL }
1748 };
1749
1750 int
1751 dissect_x509if_ResultAttribute(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1752   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1753                                    ResultAttribute_sequence, hf_index, ett_x509if_ResultAttribute);
1754
1755   return offset;
1756 }
1757
1758
1759 static const ber_sequence_t SEQUENCE_SIZE_1_MAX_OF_ResultAttribute_sequence_of[1] = {
1760   { &hf_x509if_outputAttributeTypes_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_ResultAttribute },
1761 };
1762
1763 static int
1764 dissect_x509if_SEQUENCE_SIZE_1_MAX_OF_ResultAttribute(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1765   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1766                                       SEQUENCE_SIZE_1_MAX_OF_ResultAttribute_sequence_of, hf_index, ett_x509if_SEQUENCE_SIZE_1_MAX_OF_ResultAttribute);
1767
1768   return offset;
1769 }
1770
1771
1772 static const ber_sequence_t ControlOptions_sequence[] = {
1773   { &hf_x509if_serviceControls, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_dap_ServiceControlOptions },
1774   { &hf_x509if_searchOptions, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_dap_SearchControlOptions },
1775   { &hf_x509if_hierarchyOptions, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_dap_HierarchySelections },
1776   { NULL, 0, 0, 0, NULL }
1777 };
1778
1779 int
1780 dissect_x509if_ControlOptions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1781   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1782                                    ControlOptions_sequence, hf_index, ett_x509if_ControlOptions);
1783
1784   return offset;
1785 }
1786
1787
1788 static const ber_sequence_t Mapping_sequence[] = {
1789   { &hf_x509if_mappingFunction, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_OBJECT_IDENTIFIER },
1790   { &hf_x509if_level        , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_x509if_INTEGER },
1791   { NULL, 0, 0, 0, NULL }
1792 };
1793
1794 int
1795 dissect_x509if_Mapping(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1796   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1797                                    Mapping_sequence, hf_index, ett_x509if_Mapping);
1798
1799   return offset;
1800 }
1801
1802
1803 static const ber_sequence_t SEQUENCE_SIZE_1_MAX_OF_Mapping_sequence_of[1] = {
1804   { &hf_x509if_mapping_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_Mapping },
1805 };
1806
1807 static int
1808 dissect_x509if_SEQUENCE_SIZE_1_MAX_OF_Mapping(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1809   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1810                                       SEQUENCE_SIZE_1_MAX_OF_Mapping_sequence_of, hf_index, ett_x509if_SEQUENCE_SIZE_1_MAX_OF_Mapping);
1811
1812   return offset;
1813 }
1814
1815
1816 static const ber_sequence_t MRSubstitution_sequence[] = {
1817   { &hf_x509if_attribute    , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_AttributeType },
1818   { &hf_x509if_oldMatchingRule, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_x509if_OBJECT_IDENTIFIER },
1819   { &hf_x509if_newMatchingRule, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_x509if_OBJECT_IDENTIFIER },
1820   { NULL, 0, 0, 0, NULL }
1821 };
1822
1823 int
1824 dissect_x509if_MRSubstitution(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1825   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1826                                    MRSubstitution_sequence, hf_index, ett_x509if_MRSubstitution);
1827
1828   return offset;
1829 }
1830
1831
1832 static const ber_sequence_t SEQUENCE_SIZE_1_MAX_OF_MRSubstitution_sequence_of[1] = {
1833   { &hf_x509if_substitution_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_MRSubstitution },
1834 };
1835
1836 static int
1837 dissect_x509if_SEQUENCE_SIZE_1_MAX_OF_MRSubstitution(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1838   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1839                                       SEQUENCE_SIZE_1_MAX_OF_MRSubstitution_sequence_of, hf_index, ett_x509if_SEQUENCE_SIZE_1_MAX_OF_MRSubstitution);
1840
1841   return offset;
1842 }
1843
1844
1845 static const ber_sequence_t MRMapping_sequence[] = {
1846   { &hf_x509if_mapping      , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_x509if_SEQUENCE_SIZE_1_MAX_OF_Mapping },
1847   { &hf_x509if_substitution , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_x509if_SEQUENCE_SIZE_1_MAX_OF_MRSubstitution },
1848   { NULL, 0, 0, 0, NULL }
1849 };
1850
1851 int
1852 dissect_x509if_MRMapping(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1853   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1854                                    MRMapping_sequence, hf_index, ett_x509if_MRMapping);
1855
1856   return offset;
1857 }
1858
1859
1860 static const ber_sequence_t SEQUENCE_SIZE_1_MAX_OF_MRMapping_sequence_of[1] = {
1861   { &hf_x509if_tightenings_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509if_MRMapping },
1862 };
1863
1864 static int
1865 dissect_x509if_SEQUENCE_SIZE_1_MAX_OF_MRMapping(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1866   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1867                                       SEQUENCE_SIZE_1_MAX_OF_MRMapping_sequence_of, hf_index, ett_x509if_SEQUENCE_SIZE_1_MAX_OF_MRMapping);
1868
1869   return offset;
1870 }
1871
1872
1873 static const ber_sequence_t RelaxationPolicy_sequence[] = {
1874   { &hf_x509if_basic        , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_x509if_MRMapping },
1875   { &hf_x509if_tightenings  , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_x509if_SEQUENCE_SIZE_1_MAX_OF_MRMapping },
1876   { &hf_x509if_relaxations  , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_x509if_SEQUENCE_SIZE_1_MAX_OF_MRMapping },
1877   { &hf_x509if_maximum_relaxation, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_x509if_INTEGER },
1878   { &hf_x509if_minimum_relaxation, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_x509if_INTEGER },
1879   { NULL, 0, 0, 0, NULL }
1880 };
1881
1882 int
1883 dissect_x509if_RelaxationPolicy(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1884   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1885                                    RelaxationPolicy_sequence, hf_index, ett_x509if_RelaxationPolicy);
1886
1887   return offset;
1888 }
1889
1890
1891 static const ber_sequence_t SEQUENCE_SIZE_1_MAX_OF_AttributeType_sequence_of[1] = {
1892   { &hf_x509if_additionalControl_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_x509if_AttributeType },
1893 };
1894
1895 static int
1896 dissect_x509if_SEQUENCE_SIZE_1_MAX_OF_AttributeType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1897   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1898                                       SEQUENCE_SIZE_1_MAX_OF_AttributeType_sequence_of, hf_index, ett_x509if_SEQUENCE_SIZE_1_MAX_OF_AttributeType);
1899
1900   return offset;
1901 }
1902
1903
1904 static const asn_namedbit AllowedSubset_bits[] = {
1905   {  0, &hf_x509if_AllowedSubset_baseObject, -1, -1, "baseObject", NULL },
1906   {  1, &hf_x509if_AllowedSubset_oneLevel, -1, -1, "oneLevel", NULL },
1907   {  2, &hf_x509if_AllowedSubset_wholeSubtree, -1, -1, "wholeSubtree", NULL },
1908   { 0, NULL, 0, 0, NULL, NULL }
1909 };
1910
1911 int
1912 dissect_x509if_AllowedSubset(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1913   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
1914                                     AllowedSubset_bits, hf_index, ett_x509if_AllowedSubset,
1915                                     NULL);
1916
1917   return offset;
1918 }
1919
1920
1921 const value_string x509if_ImposedSubset_vals[] = {
1922   {   0, "baseObject" },
1923   {   1, "oneLevel" },
1924   {   2, "wholeSubtree" },
1925   { 0, NULL }
1926 };
1927
1928
1929 int
1930 dissect_x509if_ImposedSubset(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1931   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1932                                   NULL);
1933
1934   return offset;
1935 }
1936
1937
1938 static const ber_sequence_t EntryLimit_sequence[] = {
1939   { &hf_x509if_default      , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_x509if_INTEGER },
1940   { &hf_x509if_max          , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_x509if_INTEGER },
1941   { NULL, 0, 0, 0, NULL }
1942 };
1943
1944 int
1945 dissect_x509if_EntryLimit(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_sequence(implicit_tag, actx, tree, tvb, offset,
1947                                    EntryLimit_sequence, hf_index, ett_x509if_EntryLimit);
1948
1949   return offset;
1950 }
1951
1952
1953 static const ber_sequence_t SET_SIZE_1_MAX_OF_DirectoryString_set_of[1] = {
1954   { &hf_x509if_name_item    , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_x509sat_DirectoryString },
1955 };
1956
1957 static int
1958 dissect_x509if_SET_SIZE_1_MAX_OF_DirectoryString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1959   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1960                                  SET_SIZE_1_MAX_OF_DirectoryString_set_of, hf_index, ett_x509if_SET_SIZE_1_MAX_OF_DirectoryString);
1961
1962   return offset;
1963 }
1964
1965
1966 static const ber_sequence_t SearchRuleDescription_sequence[] = {
1967   { &hf_x509if_id           , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_x509if_INTEGER },
1968   { &hf_x509if_dmdId        , BER_CLASS_CON, 0, 0, dissect_x509if_OBJECT_IDENTIFIER },
1969   { &hf_x509if_serviceType  , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_x509if_OBJECT_IDENTIFIER },
1970   { &hf_x509if_userClass    , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_x509if_INTEGER },
1971   { &hf_x509if_inputAttributeTypes, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_x509if_SEQUENCE_SIZE_0_MAX_OF_RequestAttribute },
1972   { &hf_x509if_attributeCombination, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_x509if_AttributeCombination },
1973   { &hf_x509if_outputAttributeTypes, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_x509if_SEQUENCE_SIZE_1_MAX_OF_ResultAttribute },
1974   { &hf_x509if_defaultControls, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_x509if_ControlOptions },
1975   { &hf_x509if_mandatoryControls, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_x509if_ControlOptions },
1976   { &hf_x509if_searchRuleControls, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_x509if_ControlOptions },
1977   { &hf_x509if_familyGrouping, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL, dissect_dap_FamilyGrouping },
1978   { &hf_x509if_familyReturn , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL, dissect_dap_FamilyReturn },
1979   { &hf_x509if_relaxation   , BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL, dissect_x509if_RelaxationPolicy },
1980   { &hf_x509if_additionalControl, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL, dissect_x509if_SEQUENCE_SIZE_1_MAX_OF_AttributeType },
1981   { &hf_x509if_allowedSubset, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL, dissect_x509if_AllowedSubset },
1982   { &hf_x509if_imposedSubset, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL, dissect_x509if_ImposedSubset },
1983   { &hf_x509if_entryLimit   , BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL, dissect_x509if_EntryLimit },
1984   { &hf_x509if_name         , BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_x509if_SET_SIZE_1_MAX_OF_DirectoryString },
1985   { &hf_x509if_description  , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_x509sat_DirectoryString },
1986   { NULL, 0, 0, 0, NULL }
1987 };
1988
1989 int
1990 dissect_x509if_SearchRuleDescription(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1991   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1992                                    SearchRuleDescription_sequence, hf_index, ett_x509if_SearchRuleDescription);
1993
1994   return offset;
1995 }
1996
1997
1998
1999 static int
2000 dissect_x509if_HierarchyLevel(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2001   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2002                                                 NULL);
2003
2004   return offset;
2005 }
2006
2007
2008
2009 static int
2010 dissect_x509if_HierarchyBelow(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2011   offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
2012
2013   return offset;
2014 }
2015
2016
2017 static const ber_sequence_t SearchRule_sequence[] = {
2018   { &hf_x509if_id           , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_x509if_INTEGER },
2019   { &hf_x509if_dmdId        , BER_CLASS_CON, 0, 0, dissect_x509if_OBJECT_IDENTIFIER },
2020   { &hf_x509if_serviceType  , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_x509if_OBJECT_IDENTIFIER },
2021   { &hf_x509if_userClass    , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_x509if_INTEGER },
2022   { &hf_x509if_inputAttributeTypes, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_x509if_SEQUENCE_SIZE_0_MAX_OF_RequestAttribute },
2023   { &hf_x509if_attributeCombination, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_x509if_AttributeCombination },
2024   { &hf_x509if_outputAttributeTypes, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_x509if_SEQUENCE_SIZE_1_MAX_OF_ResultAttribute },
2025   { &hf_x509if_defaultControls, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_x509if_ControlOptions },
2026   { &hf_x509if_mandatoryControls, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_x509if_ControlOptions },
2027   { &hf_x509if_searchRuleControls, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_x509if_ControlOptions },
2028   { &hf_x509if_familyGrouping, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL, dissect_dap_FamilyGrouping },
2029   { &hf_x509if_familyReturn , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL, dissect_dap_FamilyReturn },
2030   { &hf_x509if_relaxation   , BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL, dissect_x509if_RelaxationPolicy },
2031   { &hf_x509if_additionalControl, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL, dissect_x509if_SEQUENCE_SIZE_1_MAX_OF_AttributeType },
2032   { &hf_x509if_allowedSubset, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL, dissect_x509if_AllowedSubset },
2033   { &hf_x509if_imposedSubset, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL, dissect_x509if_ImposedSubset },
2034   { &hf_x509if_entryLimit   , BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL, dissect_x509if_EntryLimit },
2035   { NULL, 0, 0, 0, NULL }
2036 };
2037
2038 int
2039 dissect_x509if_SearchRule(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2040   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2041                                    SearchRule_sequence, hf_index, ett_x509if_SearchRule);
2042
2043   return offset;
2044 }
2045
2046
2047 static const ber_sequence_t SearchRuleId_sequence[] = {
2048   { &hf_x509if_id           , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_x509if_INTEGER },
2049   { &hf_x509if_dmdId        , BER_CLASS_CON, 0, 0, dissect_x509if_OBJECT_IDENTIFIER },
2050   { NULL, 0, 0, 0, NULL }
2051 };
2052
2053 int
2054 dissect_x509if_SearchRuleId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2055   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2056                                    SearchRuleId_sequence, hf_index, ett_x509if_SearchRuleId);
2057
2058   return offset;
2059 }
2060
2061 /*--- PDUs ---*/
2062
2063 static void dissect_DistinguishedName_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2064   asn1_ctx_t asn1_ctx;
2065   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2066   dissect_x509if_DistinguishedName(FALSE, tvb, 0, &asn1_ctx, tree, hf_x509if_DistinguishedName_PDU);
2067 }
2068 static void dissect_SubtreeSpecification_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2069   asn1_ctx_t asn1_ctx;
2070   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2071   dissect_x509if_SubtreeSpecification(FALSE, tvb, 0, &asn1_ctx, tree, hf_x509if_SubtreeSpecification_PDU);
2072 }
2073 static void dissect_HierarchyLevel_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2074   asn1_ctx_t asn1_ctx;
2075   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2076   dissect_x509if_HierarchyLevel(FALSE, tvb, 0, &asn1_ctx, tree, hf_x509if_HierarchyLevel_PDU);
2077 }
2078 static void dissect_HierarchyBelow_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2079   asn1_ctx_t asn1_ctx;
2080   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2081   dissect_x509if_HierarchyBelow(FALSE, tvb, 0, &asn1_ctx, tree, hf_x509if_HierarchyBelow_PDU);
2082 }
2083
2084
2085 /*--- End of included file: packet-x509if-fn.c ---*/
2086 #line 79 "packet-x509if-template.c"
2087
2088 const char * x509if_get_last_dn(void)
2089 {
2090   return last_dn;
2091 }
2092
2093 gboolean x509if_register_fmt(int hf_index, const gchar *fmt)
2094 {
2095   static int idx = 0;
2096
2097   if(idx < (MAX_FMT_VALS - 1)) {
2098
2099     fmt_vals[idx].value = hf_index;
2100     fmt_vals[idx].strptr = fmt;
2101
2102     idx++;
2103
2104     fmt_vals[idx].value = 0;
2105     fmt_vals[idx].strptr = NULL;
2106
2107     return TRUE;
2108
2109   } else 
2110     return FALSE; /* couldn't register it */
2111
2112 }
2113
2114 const char * x509if_get_last_ava(void)
2115 {
2116   return last_ava;
2117 }
2118
2119 /*--- proto_register_x509if ----------------------------------------------*/
2120 void proto_register_x509if(void) {
2121
2122   /* List of fields */
2123   static hf_register_info hf[] = {
2124     { &hf_x509if_object_identifier_id, 
2125       { "Id", "x509if.id", FT_OID, BASE_NONE, NULL, 0,
2126         "Object identifier Id", HFILL }},
2127     { &hf_x509if_any_string, 
2128       { "AnyString", "x509if.any.String", FT_BYTES, BASE_HEX,
2129             NULL, 0, "This is any String", HFILL }},
2130                          
2131
2132 /*--- Included file: packet-x509if-hfarr.c ---*/
2133 #line 1 "packet-x509if-hfarr.c"
2134     { &hf_x509if_DistinguishedName_PDU,
2135       { "DistinguishedName", "x509if.DistinguishedName",
2136         FT_UINT32, BASE_DEC, NULL, 0,
2137         "x509if.DistinguishedName", HFILL }},
2138     { &hf_x509if_SubtreeSpecification_PDU,
2139       { "SubtreeSpecification", "x509if.SubtreeSpecification",
2140         FT_NONE, BASE_NONE, NULL, 0,
2141         "x509if.SubtreeSpecification", HFILL }},
2142     { &hf_x509if_HierarchyLevel_PDU,
2143       { "HierarchyLevel", "x509if.HierarchyLevel",
2144         FT_INT32, BASE_DEC, NULL, 0,
2145         "x509if.HierarchyLevel", HFILL }},
2146     { &hf_x509if_HierarchyBelow_PDU,
2147       { "HierarchyBelow", "x509if.HierarchyBelow",
2148         FT_BOOLEAN, 8, NULL, 0,
2149         "x509if.HierarchyBelow", HFILL }},
2150     { &hf_x509if_type,
2151       { "type", "x509if.type",
2152         FT_OID, BASE_NONE, NULL, 0,
2153         "x509if.T_type", HFILL }},
2154     { &hf_x509if_values,
2155       { "values", "x509if.values",
2156         FT_UINT32, BASE_DEC, NULL, 0,
2157         "x509if.T_values", HFILL }},
2158     { &hf_x509if_values_item,
2159       { "values item", "x509if.values_item",
2160         FT_NONE, BASE_NONE, NULL, 0,
2161         "x509if.T_values_item", HFILL }},
2162     { &hf_x509if_valuesWithContext,
2163       { "valuesWithContext", "x509if.valuesWithContext",
2164         FT_UINT32, BASE_DEC, NULL, 0,
2165         "x509if.T_valuesWithContext", HFILL }},
2166     { &hf_x509if_valuesWithContext_item,
2167       { "valuesWithContext item", "x509if.valuesWithContext_item",
2168         FT_NONE, BASE_NONE, NULL, 0,
2169         "x509if.T_valuesWithContext_item", HFILL }},
2170     { &hf_x509if_value,
2171       { "value", "x509if.value",
2172         FT_NONE, BASE_NONE, NULL, 0,
2173         "x509if.T_value", HFILL }},
2174     { &hf_x509if_contextList,
2175       { "contextList", "x509if.contextList",
2176         FT_UINT32, BASE_DEC, NULL, 0,
2177         "x509if.SET_SIZE_1_MAX_OF_Context", HFILL }},
2178     { &hf_x509if_contextList_item,
2179       { "Context", "x509if.Context",
2180         FT_NONE, BASE_NONE, NULL, 0,
2181         "x509if.Context", HFILL }},
2182     { &hf_x509if_contextType,
2183       { "contextType", "x509if.contextType",
2184         FT_OID, BASE_NONE, NULL, 0,
2185         "x509if.T_contextType", HFILL }},
2186     { &hf_x509if_contextValues,
2187       { "contextValues", "x509if.contextValues",
2188         FT_UINT32, BASE_DEC, NULL, 0,
2189         "x509if.T_contextValues", HFILL }},
2190     { &hf_x509if_contextValues_item,
2191       { "contextValues item", "x509if.contextValues_item",
2192         FT_NONE, BASE_NONE, NULL, 0,
2193         "x509if.T_contextValues_item", HFILL }},
2194     { &hf_x509if_fallback,
2195       { "fallback", "x509if.fallback",
2196         FT_BOOLEAN, 8, NULL, 0,
2197         "x509if.BOOLEAN", HFILL }},
2198     { &hf_x509if_type_01,
2199       { "type", "x509if.type",
2200         FT_OID, BASE_NONE, NULL, 0,
2201         "x509if.T_type_01", HFILL }},
2202     { &hf_x509if_assertion,
2203       { "assertion", "x509if.assertion",
2204         FT_NONE, BASE_NONE, NULL, 0,
2205         "x509if.T_assertion", HFILL }},
2206     { &hf_x509if_assertedContexts,
2207       { "assertedContexts", "x509if.assertedContexts",
2208         FT_UINT32, BASE_DEC, VALS(x509if_T_assertedContexts_vals), 0,
2209         "x509if.T_assertedContexts", HFILL }},
2210     { &hf_x509if_allContexts,
2211       { "allContexts", "x509if.allContexts",
2212         FT_NONE, BASE_NONE, NULL, 0,
2213         "x509if.NULL", HFILL }},
2214     { &hf_x509if_selectedContexts,
2215       { "selectedContexts", "x509if.selectedContexts",
2216         FT_UINT32, BASE_DEC, NULL, 0,
2217         "x509if.SET_SIZE_1_MAX_OF_ContextAssertion", HFILL }},
2218     { &hf_x509if_selectedContexts_item,
2219       { "ContextAssertion", "x509if.ContextAssertion",
2220         FT_NONE, BASE_NONE, NULL, 0,
2221         "x509if.ContextAssertion", HFILL }},
2222     { &hf_x509if_ca_contextType,
2223       { "contextType", "x509if.contextType",
2224         FT_OID, BASE_NONE, NULL, 0,
2225         "x509if.T_ca_contextType", HFILL }},
2226     { &hf_x509if_ca_contextValues,
2227       { "contextValues", "x509if.contextValues",
2228         FT_UINT32, BASE_DEC, NULL, 0,
2229         "x509if.T_ca_contextValues", HFILL }},
2230     { &hf_x509if_ca_contextValues_item,
2231       { "contextValues item", "x509if.contextValues_item",
2232         FT_NONE, BASE_NONE, NULL, 0,
2233         "x509if.T_ca_contextValues_item", HFILL }},
2234     { &hf_x509if_type_02,
2235       { "type", "x509if.type",
2236         FT_OID, BASE_NONE, NULL, 0,
2237         "x509if.OBJECT_IDENTIFIER", HFILL }},
2238     { &hf_x509if_ata_assertedContexts,
2239       { "assertedContexts", "x509if.assertedContexts",
2240         FT_UINT32, BASE_DEC, NULL, 0,
2241         "x509if.SEQUENCE_SIZE_1_MAX_OF_ContextAssertion", HFILL }},
2242     { &hf_x509if_ata_assertedContexts_item,
2243       { "ContextAssertion", "x509if.ContextAssertion",
2244         FT_NONE, BASE_NONE, NULL, 0,
2245         "x509if.ContextAssertion", HFILL }},
2246     { &hf_x509if_rdnSequence,
2247       { "rdnSequence", "x509if.rdnSequence",
2248         FT_UINT32, BASE_DEC, NULL, 0,
2249         "x509if.RDNSequence", HFILL }},
2250     { &hf_x509if_RDNSequence_item,
2251       { "RDNSequence item", "x509if.RDNSequence_item",
2252         FT_UINT32, BASE_DEC, NULL, 0,
2253         "x509if.RDNSequence_item", HFILL }},
2254     { &hf_x509if_RelativeDistinguishedName_item,
2255       { "RelativeDistinguishedName item", "x509if.RelativeDistinguishedName_item",
2256         FT_NONE, BASE_NONE, NULL, 0,
2257         "x509if.RelativeDistinguishedName_item", HFILL }},
2258     { &hf_x509if_type_03,
2259       { "type", "x509if.type",
2260         FT_OID, BASE_NONE, NULL, 0,
2261         "x509if.T_type_02", HFILL }},
2262     { &hf_x509if_atadv_value,
2263       { "value", "x509if.value",
2264         FT_NONE, BASE_NONE, NULL, 0,
2265         "x509if.T_atadv_value", HFILL }},
2266     { &hf_x509if_primaryDistinguished,
2267       { "primaryDistinguished", "x509if.primaryDistinguished",
2268         FT_BOOLEAN, 8, NULL, 0,
2269         "x509if.BOOLEAN", HFILL }},
2270     { &hf_x509if_valueswithContext,
2271       { "valuesWithContext", "x509if.valuesWithContext",
2272         FT_UINT32, BASE_DEC, NULL, 0,
2273         "x509if.T_valWithContext", HFILL }},
2274     { &hf_x509if_valueswithContext_item,
2275       { "valuesWithContext item", "x509if.valuesWithContext_item",
2276         FT_NONE, BASE_NONE, NULL, 0,
2277         "x509if.T_valWithContext_item", HFILL }},
2278     { &hf_x509if_distingAttrValue,
2279       { "distingAttrValue", "x509if.distingAttrValue",
2280         FT_NONE, BASE_NONE, NULL, 0,
2281         "x509if.T_distingAttrValue", HFILL }},
2282     { &hf_x509if_chopSpecificExclusions,
2283       { "specificExclusions", "x509if.specificExclusions",
2284         FT_UINT32, BASE_DEC, NULL, 0,
2285         "x509if.T_chopSpecificExclusions", HFILL }},
2286     { &hf_x509if_chopSpecificExclusions_item,
2287       { "specificExclusions item", "x509if.specificExclusions_item",
2288         FT_UINT32, BASE_DEC, VALS(x509if_T_chopSpecificExclusions_item_vals), 0,
2289         "x509if.T_chopSpecificExclusions_item", HFILL }},
2290     { &hf_x509if_chopBefore,
2291       { "chopBefore", "x509if.chopBefore",
2292         FT_UINT32, BASE_DEC, NULL, 0,
2293         "x509if.LocalName", HFILL }},
2294     { &hf_x509if_chopAfter,
2295       { "chopAfter", "x509if.chopAfter",
2296         FT_UINT32, BASE_DEC, NULL, 0,
2297         "x509if.LocalName", HFILL }},
2298     { &hf_x509if_minimum,
2299       { "minimum", "x509if.minimum",
2300         FT_UINT32, BASE_DEC, NULL, 0,
2301         "x509if.BaseDistance", HFILL }},
2302     { &hf_x509if_maximum,
2303       { "maximum", "x509if.maximum",
2304         FT_UINT32, BASE_DEC, NULL, 0,
2305         "x509if.BaseDistance", HFILL }},
2306     { &hf_x509if_item,
2307       { "item", "x509if.item",
2308         FT_OID, BASE_NONE, NULL, 0,
2309         "x509if.OBJECT_IDENTIFIER", HFILL }},
2310     { &hf_x509if_refinement_and,
2311       { "and", "x509if.and",
2312         FT_UINT32, BASE_DEC, NULL, 0,
2313         "x509if.SET_OF_Refinement", HFILL }},
2314     { &hf_x509if_refinement_and_item,
2315       { "Refinement", "x509if.Refinement",
2316         FT_UINT32, BASE_DEC, VALS(x509if_Refinement_vals), 0,
2317         "x509if.Refinement", HFILL }},
2318     { &hf_x509if_refinement_or,
2319       { "or", "x509if.or",
2320         FT_UINT32, BASE_DEC, NULL, 0,
2321         "x509if.SET_OF_Refinement", HFILL }},
2322     { &hf_x509if_refinement_or_item,
2323       { "Refinement", "x509if.Refinement",
2324         FT_UINT32, BASE_DEC, VALS(x509if_Refinement_vals), 0,
2325         "x509if.Refinement", HFILL }},
2326     { &hf_x509if_refinement_not,
2327       { "not", "x509if.not",
2328         FT_UINT32, BASE_DEC, VALS(x509if_Refinement_vals), 0,
2329         "x509if.Refinement", HFILL }},
2330     { &hf_x509if_ruleIdentifier,
2331       { "ruleIdentifier", "x509if.ruleIdentifier",
2332         FT_INT32, BASE_DEC, NULL, 0,
2333         "x509if.RuleIdentifier", HFILL }},
2334     { &hf_x509if_nameForm,
2335       { "nameForm", "x509if.nameForm",
2336         FT_OID, BASE_NONE, NULL, 0,
2337         "x509if.OBJECT_IDENTIFIER", HFILL }},
2338     { &hf_x509if_superiorStructureRules,
2339       { "superiorStructureRules", "x509if.superiorStructureRules",
2340         FT_UINT32, BASE_DEC, NULL, 0,
2341         "x509if.SET_SIZE_1_MAX_OF_RuleIdentifier", HFILL }},
2342     { &hf_x509if_superiorStructureRules_item,
2343       { "RuleIdentifier", "x509if.RuleIdentifier",
2344         FT_INT32, BASE_DEC, NULL, 0,
2345         "x509if.RuleIdentifier", HFILL }},
2346     { &hf_x509if_structuralObjectClass,
2347       { "structuralObjectClass", "x509if.structuralObjectClass",
2348         FT_OID, BASE_NONE, NULL, 0,
2349         "x509if.OBJECT_IDENTIFIER", HFILL }},
2350     { &hf_x509if_auxiliaries,
2351       { "auxiliaries", "x509if.auxiliaries",
2352         FT_UINT32, BASE_DEC, NULL, 0,
2353         "x509if.T_auxiliaries", HFILL }},
2354     { &hf_x509if_auxiliaries_item,
2355       { "auxiliaries item", "x509if.auxiliaries_item",
2356         FT_OID, BASE_NONE, NULL, 0,
2357         "x509if.OBJECT_IDENTIFIER", HFILL }},
2358     { &hf_x509if_mandatory,
2359       { "mandatory", "x509if.mandatory",
2360         FT_UINT32, BASE_DEC, NULL, 0,
2361         "x509if.T_mandatory", HFILL }},
2362     { &hf_x509if_mandatory_item,
2363       { "mandatory item", "x509if.mandatory_item",
2364         FT_OID, BASE_NONE, NULL, 0,
2365         "x509if.OBJECT_IDENTIFIER", HFILL }},
2366     { &hf_x509if_optional,
2367       { "optional", "x509if.optional",
2368         FT_UINT32, BASE_DEC, NULL, 0,
2369         "x509if.T_optional", HFILL }},
2370     { &hf_x509if_optional_item,
2371       { "optional item", "x509if.optional_item",
2372         FT_OID, BASE_NONE, NULL, 0,
2373         "x509if.OBJECT_IDENTIFIER", HFILL }},
2374     { &hf_x509if_precluded,
2375       { "precluded", "x509if.precluded",
2376         FT_UINT32, BASE_DEC, NULL, 0,
2377         "x509if.T_precluded", HFILL }},
2378     { &hf_x509if_precluded_item,
2379       { "precluded item", "x509if.precluded_item",
2380         FT_OID, BASE_NONE, NULL, 0,
2381         "x509if.OBJECT_IDENTIFIER", HFILL }},
2382     { &hf_x509if_attributeType,
2383       { "attributeType", "x509if.attributeType",
2384         FT_OID, BASE_NONE, NULL, 0,
2385         "x509if.OBJECT_IDENTIFIER", HFILL }},
2386     { &hf_x509if_mandatoryContexts,
2387       { "mandatoryContexts", "x509if.mandatoryContexts",
2388         FT_UINT32, BASE_DEC, NULL, 0,
2389         "x509if.T_mandatoryContexts", HFILL }},
2390     { &hf_x509if_mandatoryContexts_item,
2391       { "mandatoryContexts item", "x509if.mandatoryContexts_item",
2392         FT_OID, BASE_NONE, NULL, 0,
2393         "x509if.OBJECT_IDENTIFIER", HFILL }},
2394     { &hf_x509if_optionalContexts,
2395       { "optionalContexts", "x509if.optionalContexts",
2396         FT_UINT32, BASE_DEC, NULL, 0,
2397         "x509if.T_optionalContexts", HFILL }},
2398     { &hf_x509if_optionalContexts_item,
2399       { "optionalContexts item", "x509if.optionalContexts_item",
2400         FT_OID, BASE_NONE, NULL, 0,
2401         "x509if.OBJECT_IDENTIFIER", HFILL }},
2402     { &hf_x509if_id,
2403       { "id", "x509if.id",
2404         FT_INT32, BASE_DEC, NULL, 0,
2405         "x509if.INTEGER", HFILL }},
2406     { &hf_x509if_dmdId,
2407       { "dmdId", "x509if.dmdId",
2408         FT_OID, BASE_NONE, NULL, 0,
2409         "x509if.OBJECT_IDENTIFIER", HFILL }},
2410     { &hf_x509if_attributeType_01,
2411       { "attributeType", "x509if.attributeType",
2412         FT_OID, BASE_NONE, NULL, 0,
2413         "x509if.T_attributeType", HFILL }},
2414     { &hf_x509if_includeSubtypes,
2415       { "includeSubtypes", "x509if.includeSubtypes",
2416         FT_BOOLEAN, 8, NULL, 0,
2417         "x509if.BOOLEAN", HFILL }},
2418     { &hf_x509if_ra_selectedValues,
2419       { "selectedValues", "x509if.selectedValues",
2420         FT_UINT32, BASE_DEC, NULL, 0,
2421         "x509if.T_ra_selectedValues", HFILL }},
2422     { &hf_x509if_ra_selectedValues_item,
2423       { "selectedValues item", "x509if.selectedValues_item",
2424         FT_NONE, BASE_NONE, NULL, 0,
2425         "x509if.T_ra_selectedValues_item", HFILL }},
2426     { &hf_x509if_defaultValues,
2427       { "defaultValues", "x509if.defaultValues",
2428         FT_UINT32, BASE_DEC, NULL, 0,
2429         "x509if.T_defaultValues", HFILL }},
2430     { &hf_x509if_defaultValues_item,
2431       { "defaultValues item", "x509if.defaultValues_item",
2432         FT_NONE, BASE_NONE, NULL, 0,
2433         "x509if.T_defaultValues_item", HFILL }},
2434     { &hf_x509if_entryType,
2435       { "entryType", "x509if.entryType",
2436         FT_OID, BASE_NONE, NULL, 0,
2437         "x509if.T_entryType", HFILL }},
2438     { &hf_x509if_ra_values,
2439       { "values", "x509if.values",
2440         FT_UINT32, BASE_DEC, NULL, 0,
2441         "x509if.T_ra_values", HFILL }},
2442     { &hf_x509if_ra_values_item,
2443       { "values item", "x509if.values_item",
2444         FT_NONE, BASE_NONE, NULL, 0,
2445         "x509if.T_ra_values_item", HFILL }},
2446     { &hf_x509if_contexts,
2447       { "contexts", "x509if.contexts",
2448         FT_UINT32, BASE_DEC, NULL, 0,
2449         "x509if.SEQUENCE_SIZE_0_MAX_OF_ContextProfile", HFILL }},
2450     { &hf_x509if_contexts_item,
2451       { "ContextProfile", "x509if.ContextProfile",
2452         FT_NONE, BASE_NONE, NULL, 0,
2453         "x509if.ContextProfile", HFILL }},
2454     { &hf_x509if_contextCombination,
2455       { "contextCombination", "x509if.contextCombination",
2456         FT_UINT32, BASE_DEC, VALS(x509if_ContextCombination_vals), 0,
2457         "x509if.ContextCombination", HFILL }},
2458     { &hf_x509if_matchingUse,
2459       { "matchingUse", "x509if.matchingUse",
2460         FT_UINT32, BASE_DEC, NULL, 0,
2461         "x509if.SEQUENCE_SIZE_1_MAX_OF_MatchingUse", HFILL }},
2462     { &hf_x509if_matchingUse_item,
2463       { "MatchingUse", "x509if.MatchingUse",
2464         FT_NONE, BASE_NONE, NULL, 0,
2465         "x509if.MatchingUse", HFILL }},
2466     { &hf_x509if_contextType_01,
2467       { "contextType", "x509if.contextType",
2468         FT_OID, BASE_NONE, NULL, 0,
2469         "x509if.T_contextType_01", HFILL }},
2470     { &hf_x509if_contextValue,
2471       { "contextValue", "x509if.contextValue",
2472         FT_UINT32, BASE_DEC, NULL, 0,
2473         "x509if.T_contextValue", HFILL }},
2474     { &hf_x509if_contextValue_item,
2475       { "contextValue item", "x509if.contextValue_item",
2476         FT_NONE, BASE_NONE, NULL, 0,
2477         "x509if.T_contextValue_item", HFILL }},
2478     { &hf_x509if_context,
2479       { "context", "x509if.context",
2480         FT_OID, BASE_NONE, NULL, 0,
2481         "x509if.OBJECT_IDENTIFIER", HFILL }},
2482     { &hf_x509if_contextcombination_and,
2483       { "and", "x509if.and",
2484         FT_UINT32, BASE_DEC, NULL, 0,
2485         "x509if.SEQUENCE_OF_ContextCombination", HFILL }},
2486     { &hf_x509if_contextcombination_and_item,
2487       { "ContextCombination", "x509if.ContextCombination",
2488         FT_UINT32, BASE_DEC, VALS(x509if_ContextCombination_vals), 0,
2489         "x509if.ContextCombination", HFILL }},
2490     { &hf_x509if_contextcombination_or,
2491       { "or", "x509if.or",
2492         FT_UINT32, BASE_DEC, NULL, 0,
2493         "x509if.SEQUENCE_OF_ContextCombination", HFILL }},
2494     { &hf_x509if_contextcombination_or_item,
2495       { "ContextCombination", "x509if.ContextCombination",
2496         FT_UINT32, BASE_DEC, VALS(x509if_ContextCombination_vals), 0,
2497         "x509if.ContextCombination", HFILL }},
2498     { &hf_x509if_contextcombination_not,
2499       { "not", "x509if.not",
2500         FT_UINT32, BASE_DEC, VALS(x509if_ContextCombination_vals), 0,
2501         "x509if.ContextCombination", HFILL }},
2502     { &hf_x509if_restrictionType,
2503       { "restrictionType", "x509if.restrictionType",
2504         FT_OID, BASE_NONE, NULL, 0,
2505         "x509if.T_restrictionType", HFILL }},
2506     { &hf_x509if_restrictionValue,
2507       { "restrictionValue", "x509if.restrictionValue",
2508         FT_NONE, BASE_NONE, NULL, 0,
2509         "x509if.T_restrictionValue", HFILL }},
2510     { &hf_x509if_attribute,
2511       { "attribute", "x509if.attribute",
2512         FT_OID, BASE_NONE, NULL, 0,
2513         "x509if.AttributeType", HFILL }},
2514     { &hf_x509if_and,
2515       { "and", "x509if.and",
2516         FT_UINT32, BASE_DEC, NULL, 0,
2517         "x509if.SEQUENCE_OF_AttributeCombination", HFILL }},
2518     { &hf_x509if_and_item,
2519       { "AttributeCombination", "x509if.AttributeCombination",
2520         FT_UINT32, BASE_DEC, VALS(x509if_AttributeCombination_vals), 0,
2521         "x509if.AttributeCombination", HFILL }},
2522     { &hf_x509if_or,
2523       { "or", "x509if.or",
2524         FT_UINT32, BASE_DEC, NULL, 0,
2525         "x509if.SEQUENCE_OF_AttributeCombination", HFILL }},
2526     { &hf_x509if_or_item,
2527       { "AttributeCombination", "x509if.AttributeCombination",
2528         FT_UINT32, BASE_DEC, VALS(x509if_AttributeCombination_vals), 0,
2529         "x509if.AttributeCombination", HFILL }},
2530     { &hf_x509if_not,
2531       { "not", "x509if.not",
2532         FT_UINT32, BASE_DEC, VALS(x509if_AttributeCombination_vals), 0,
2533         "x509if.AttributeCombination", HFILL }},
2534     { &hf_x509if_attributeType_02,
2535       { "attributeType", "x509if.attributeType",
2536         FT_OID, BASE_NONE, NULL, 0,
2537         "x509if.T_attributeType_01", HFILL }},
2538     { &hf_x509if_outputValues,
2539       { "outputValues", "x509if.outputValues",
2540         FT_UINT32, BASE_DEC, VALS(x509if_T_outputValues_vals), 0,
2541         "x509if.T_outputValues", HFILL }},
2542     { &hf_x509if_selectedValues,
2543       { "selectedValues", "x509if.selectedValues",
2544         FT_UINT32, BASE_DEC, NULL, 0,
2545         "x509if.T_selectedValues", HFILL }},
2546     { &hf_x509if_selectedValues_item,
2547       { "selectedValues item", "x509if.selectedValues_item",
2548         FT_NONE, BASE_NONE, NULL, 0,
2549         "x509if.T_selectedValues_item", HFILL }},
2550     { &hf_x509if_matchedValuesOnly,
2551       { "matchedValuesOnly", "x509if.matchedValuesOnly",
2552         FT_NONE, BASE_NONE, NULL, 0,
2553         "x509if.NULL", HFILL }},
2554     { &hf_x509if_contexts_01,
2555       { "contexts", "x509if.contexts",
2556         FT_UINT32, BASE_DEC, NULL, 0,
2557         "x509if.SEQUENCE_SIZE_1_MAX_OF_ContextProfile", HFILL }},
2558     { &hf_x509if_serviceControls,
2559       { "serviceControls", "x509if.serviceControls",
2560         FT_NONE, BASE_NONE, NULL, 0,
2561         "dap.ServiceControlOptions", HFILL }},
2562     { &hf_x509if_searchOptions,
2563       { "searchOptions", "x509if.searchOptions",
2564         FT_NONE, BASE_NONE, NULL, 0,
2565         "dap.SearchControlOptions", HFILL }},
2566     { &hf_x509if_hierarchyOptions,
2567       { "hierarchyOptions", "x509if.hierarchyOptions",
2568         FT_NONE, BASE_NONE, NULL, 0,
2569         "dap.HierarchySelections", HFILL }},
2570     { &hf_x509if_default,
2571       { "default", "x509if.default",
2572         FT_INT32, BASE_DEC, NULL, 0,
2573         "x509if.INTEGER", HFILL }},
2574     { &hf_x509if_max,
2575       { "max", "x509if.max",
2576         FT_INT32, BASE_DEC, NULL, 0,
2577         "x509if.INTEGER", HFILL }},
2578     { &hf_x509if_basic,
2579       { "basic", "x509if.basic",
2580         FT_NONE, BASE_NONE, NULL, 0,
2581         "x509if.MRMapping", HFILL }},
2582     { &hf_x509if_tightenings,
2583       { "tightenings", "x509if.tightenings",
2584         FT_UINT32, BASE_DEC, NULL, 0,
2585         "x509if.SEQUENCE_SIZE_1_MAX_OF_MRMapping", HFILL }},
2586     { &hf_x509if_tightenings_item,
2587       { "MRMapping", "x509if.MRMapping",
2588         FT_NONE, BASE_NONE, NULL, 0,
2589         "x509if.MRMapping", HFILL }},
2590     { &hf_x509if_relaxations,
2591       { "relaxations", "x509if.relaxations",
2592         FT_UINT32, BASE_DEC, NULL, 0,
2593         "x509if.SEQUENCE_SIZE_1_MAX_OF_MRMapping", HFILL }},
2594     { &hf_x509if_relaxations_item,
2595       { "MRMapping", "x509if.MRMapping",
2596         FT_NONE, BASE_NONE, NULL, 0,
2597         "x509if.MRMapping", HFILL }},
2598     { &hf_x509if_maximum_relaxation,
2599       { "maximum", "x509if.maximum",
2600         FT_INT32, BASE_DEC, NULL, 0,
2601         "x509if.INTEGER", HFILL }},
2602     { &hf_x509if_minimum_relaxation,
2603       { "minimum", "x509if.minimum",
2604         FT_INT32, BASE_DEC, NULL, 0,
2605         "x509if.INTEGER", HFILL }},
2606     { &hf_x509if_mapping,
2607       { "mapping", "x509if.mapping",
2608         FT_UINT32, BASE_DEC, NULL, 0,
2609         "x509if.SEQUENCE_SIZE_1_MAX_OF_Mapping", HFILL }},
2610     { &hf_x509if_mapping_item,
2611       { "Mapping", "x509if.Mapping",
2612         FT_NONE, BASE_NONE, NULL, 0,
2613         "x509if.Mapping", HFILL }},
2614     { &hf_x509if_substitution,
2615       { "substitution", "x509if.substitution",
2616         FT_UINT32, BASE_DEC, NULL, 0,
2617         "x509if.SEQUENCE_SIZE_1_MAX_OF_MRSubstitution", HFILL }},
2618     { &hf_x509if_substitution_item,
2619       { "MRSubstitution", "x509if.MRSubstitution",
2620         FT_NONE, BASE_NONE, NULL, 0,
2621         "x509if.MRSubstitution", HFILL }},
2622     { &hf_x509if_mappingFunction,
2623       { "mappingFunction", "x509if.mappingFunction",
2624         FT_OID, BASE_NONE, NULL, 0,
2625         "x509if.OBJECT_IDENTIFIER", HFILL }},
2626     { &hf_x509if_level,
2627       { "level", "x509if.level",
2628         FT_INT32, BASE_DEC, NULL, 0,
2629         "x509if.INTEGER", HFILL }},
2630     { &hf_x509if_oldMatchingRule,
2631       { "oldMatchingRule", "x509if.oldMatchingRule",
2632         FT_OID, BASE_NONE, NULL, 0,
2633         "x509if.OBJECT_IDENTIFIER", HFILL }},
2634     { &hf_x509if_newMatchingRule,
2635       { "newMatchingRule", "x509if.newMatchingRule",
2636         FT_OID, BASE_NONE, NULL, 0,
2637         "x509if.OBJECT_IDENTIFIER", HFILL }},
2638     { &hf_x509if_base,
2639       { "base", "x509if.base",
2640         FT_UINT32, BASE_DEC, NULL, 0,
2641         "x509if.LocalName", HFILL }},
2642     { &hf_x509if_specificExclusions,
2643       { "specificExclusions", "x509if.specificExclusions",
2644         FT_UINT32, BASE_DEC, NULL, 0,
2645         "x509if.T_specificExclusions", HFILL }},
2646     { &hf_x509if_specificExclusions_item,
2647       { "specificExclusions item", "x509if.specificExclusions_item",
2648         FT_UINT32, BASE_DEC, VALS(x509if_T_specificExclusions_item_vals), 0,
2649         "x509if.T_specificExclusions_item", HFILL }},
2650     { &hf_x509if_specificationFilter,
2651       { "specificationFilter", "x509if.specificationFilter",
2652         FT_UINT32, BASE_DEC, VALS(x509if_Refinement_vals), 0,
2653         "x509if.Refinement", HFILL }},
2654     { &hf_x509if_serviceType,
2655       { "serviceType", "x509if.serviceType",
2656         FT_OID, BASE_NONE, NULL, 0,
2657         "x509if.OBJECT_IDENTIFIER", HFILL }},
2658     { &hf_x509if_userClass,
2659       { "userClass", "x509if.userClass",
2660         FT_INT32, BASE_DEC, NULL, 0,
2661         "x509if.INTEGER", HFILL }},
2662     { &hf_x509if_inputAttributeTypes,
2663       { "inputAttributeTypes", "x509if.inputAttributeTypes",
2664         FT_UINT32, BASE_DEC, NULL, 0,
2665         "x509if.SEQUENCE_SIZE_0_MAX_OF_RequestAttribute", HFILL }},
2666     { &hf_x509if_inputAttributeTypes_item,
2667       { "RequestAttribute", "x509if.RequestAttribute",
2668         FT_NONE, BASE_NONE, NULL, 0,
2669         "x509if.RequestAttribute", HFILL }},
2670     { &hf_x509if_attributeCombination,
2671       { "attributeCombination", "x509if.attributeCombination",
2672         FT_UINT32, BASE_DEC, VALS(x509if_AttributeCombination_vals), 0,
2673         "x509if.AttributeCombination", HFILL }},
2674     { &hf_x509if_outputAttributeTypes,
2675       { "outputAttributeTypes", "x509if.outputAttributeTypes",
2676         FT_UINT32, BASE_DEC, NULL, 0,
2677         "x509if.SEQUENCE_SIZE_1_MAX_OF_ResultAttribute", HFILL }},
2678     { &hf_x509if_outputAttributeTypes_item,
2679       { "ResultAttribute", "x509if.ResultAttribute",
2680         FT_NONE, BASE_NONE, NULL, 0,
2681         "x509if.ResultAttribute", HFILL }},
2682     { &hf_x509if_defaultControls,
2683       { "defaultControls", "x509if.defaultControls",
2684         FT_NONE, BASE_NONE, NULL, 0,
2685         "x509if.ControlOptions", HFILL }},
2686     { &hf_x509if_mandatoryControls,
2687       { "mandatoryControls", "x509if.mandatoryControls",
2688         FT_NONE, BASE_NONE, NULL, 0,
2689         "x509if.ControlOptions", HFILL }},
2690     { &hf_x509if_searchRuleControls,
2691       { "searchRuleControls", "x509if.searchRuleControls",
2692         FT_NONE, BASE_NONE, NULL, 0,
2693         "x509if.ControlOptions", HFILL }},
2694     { &hf_x509if_familyGrouping,
2695       { "familyGrouping", "x509if.familyGrouping",
2696         FT_NONE, BASE_NONE, NULL, 0,
2697         "dap.FamilyGrouping", HFILL }},
2698     { &hf_x509if_familyReturn,
2699       { "familyReturn", "x509if.familyReturn",
2700         FT_NONE, BASE_NONE, NULL, 0,
2701         "dap.FamilyReturn", HFILL }},
2702     { &hf_x509if_relaxation,
2703       { "relaxation", "x509if.relaxation",
2704         FT_NONE, BASE_NONE, NULL, 0,
2705         "x509if.RelaxationPolicy", HFILL }},
2706     { &hf_x509if_additionalControl,
2707       { "additionalControl", "x509if.additionalControl",
2708         FT_UINT32, BASE_DEC, NULL, 0,
2709         "x509if.SEQUENCE_SIZE_1_MAX_OF_AttributeType", HFILL }},
2710     { &hf_x509if_additionalControl_item,
2711       { "AttributeType", "x509if.AttributeType",
2712         FT_OID, BASE_NONE, NULL, 0,
2713         "x509if.AttributeType", HFILL }},
2714     { &hf_x509if_allowedSubset,
2715       { "allowedSubset", "x509if.allowedSubset",
2716         FT_BYTES, BASE_HEX, NULL, 0,
2717         "x509if.AllowedSubset", HFILL }},
2718     { &hf_x509if_imposedSubset,
2719       { "imposedSubset", "x509if.imposedSubset",
2720         FT_UINT32, BASE_DEC, VALS(x509if_ImposedSubset_vals), 0,
2721         "x509if.ImposedSubset", HFILL }},
2722     { &hf_x509if_entryLimit,
2723       { "entryLimit", "x509if.entryLimit",
2724         FT_NONE, BASE_NONE, NULL, 0,
2725         "x509if.EntryLimit", HFILL }},
2726     { &hf_x509if_name,
2727       { "name", "x509if.name",
2728         FT_UINT32, BASE_DEC, NULL, 0,
2729         "x509if.SET_SIZE_1_MAX_OF_DirectoryString", HFILL }},
2730     { &hf_x509if_name_item,
2731       { "DirectoryString", "x509if.DirectoryString",
2732         FT_UINT32, BASE_DEC, VALS(x509sat_DirectoryString_vals), 0,
2733         "x509sat.DirectoryString", HFILL }},
2734     { &hf_x509if_description,
2735       { "description", "x509if.description",
2736         FT_UINT32, BASE_DEC, VALS(x509sat_DirectoryString_vals), 0,
2737         "x509sat.DirectoryString", HFILL }},
2738     { &hf_x509if_AllowedSubset_baseObject,
2739       { "baseObject", "x509if.baseObject",
2740         FT_BOOLEAN, 8, NULL, 0x80,
2741         "", HFILL }},
2742     { &hf_x509if_AllowedSubset_oneLevel,
2743       { "oneLevel", "x509if.oneLevel",
2744         FT_BOOLEAN, 8, NULL, 0x40,
2745         "", HFILL }},
2746     { &hf_x509if_AllowedSubset_wholeSubtree,
2747       { "wholeSubtree", "x509if.wholeSubtree",
2748         FT_BOOLEAN, 8, NULL, 0x20,
2749         "", HFILL }},
2750
2751 /*--- End of included file: packet-x509if-hfarr.c ---*/
2752 #line 124 "packet-x509if-template.c"
2753   };
2754
2755   /* List of subtrees */
2756   static gint *ett[] = {
2757
2758 /*--- Included file: packet-x509if-ettarr.c ---*/
2759 #line 1 "packet-x509if-ettarr.c"
2760     &ett_x509if_Attribute,
2761     &ett_x509if_T_values,
2762     &ett_x509if_T_valuesWithContext,
2763     &ett_x509if_T_valuesWithContext_item,
2764     &ett_x509if_SET_SIZE_1_MAX_OF_Context,
2765     &ett_x509if_Context,
2766     &ett_x509if_T_contextValues,
2767     &ett_x509if_AttributeValueAssertion,
2768     &ett_x509if_T_assertedContexts,
2769     &ett_x509if_SET_SIZE_1_MAX_OF_ContextAssertion,
2770     &ett_x509if_ContextAssertion,
2771     &ett_x509if_T_ca_contextValues,
2772     &ett_x509if_AttributeTypeAssertion,
2773     &ett_x509if_SEQUENCE_SIZE_1_MAX_OF_ContextAssertion,
2774     &ett_x509if_Name,
2775     &ett_x509if_RDNSequence,
2776     &ett_x509if_RelativeDistinguishedName,
2777     &ett_x509if_AttributeTypeAndDistinguishedValue,
2778     &ett_x509if_T_valWithContext,
2779     &ett_x509if_T_valWithContext_item,
2780     &ett_x509if_SubtreeSpecification,
2781     &ett_x509if_ChopSpecification,
2782     &ett_x509if_T_chopSpecificExclusions,
2783     &ett_x509if_T_chopSpecificExclusions_item,
2784     &ett_x509if_Refinement,
2785     &ett_x509if_SET_OF_Refinement,
2786     &ett_x509if_DITStructureRule,
2787     &ett_x509if_SET_SIZE_1_MAX_OF_RuleIdentifier,
2788     &ett_x509if_DITContentRule,
2789     &ett_x509if_T_auxiliaries,
2790     &ett_x509if_T_mandatory,
2791     &ett_x509if_T_optional,
2792     &ett_x509if_T_precluded,
2793     &ett_x509if_DITContextUse,
2794     &ett_x509if_T_mandatoryContexts,
2795     &ett_x509if_T_optionalContexts,
2796     &ett_x509if_SearchRuleDescription,
2797     &ett_x509if_SearchRule,
2798     &ett_x509if_SearchRuleId,
2799     &ett_x509if_AllowedSubset,
2800     &ett_x509if_RequestAttribute,
2801     &ett_x509if_T_ra_selectedValues,
2802     &ett_x509if_T_defaultValues,
2803     &ett_x509if_T_defaultValues_item,
2804     &ett_x509if_T_ra_values,
2805     &ett_x509if_SEQUENCE_SIZE_0_MAX_OF_ContextProfile,
2806     &ett_x509if_SEQUENCE_SIZE_1_MAX_OF_MatchingUse,
2807     &ett_x509if_ContextProfile,
2808     &ett_x509if_T_contextValue,
2809     &ett_x509if_ContextCombination,
2810     &ett_x509if_SEQUENCE_OF_ContextCombination,
2811     &ett_x509if_MatchingUse,
2812     &ett_x509if_AttributeCombination,
2813     &ett_x509if_SEQUENCE_OF_AttributeCombination,
2814     &ett_x509if_ResultAttribute,
2815     &ett_x509if_T_outputValues,
2816     &ett_x509if_T_selectedValues,
2817     &ett_x509if_SEQUENCE_SIZE_1_MAX_OF_ContextProfile,
2818     &ett_x509if_ControlOptions,
2819     &ett_x509if_EntryLimit,
2820     &ett_x509if_RelaxationPolicy,
2821     &ett_x509if_SEQUENCE_SIZE_1_MAX_OF_MRMapping,
2822     &ett_x509if_MRMapping,
2823     &ett_x509if_SEQUENCE_SIZE_1_MAX_OF_Mapping,
2824     &ett_x509if_SEQUENCE_SIZE_1_MAX_OF_MRSubstitution,
2825     &ett_x509if_Mapping,
2826     &ett_x509if_MRSubstitution,
2827     &ett_x509if_T_specificExclusions,
2828     &ett_x509if_T_specificExclusions_item,
2829     &ett_x509if_SEQUENCE_SIZE_0_MAX_OF_RequestAttribute,
2830     &ett_x509if_SEQUENCE_SIZE_1_MAX_OF_ResultAttribute,
2831     &ett_x509if_SEQUENCE_SIZE_1_MAX_OF_AttributeType,
2832     &ett_x509if_SET_SIZE_1_MAX_OF_DirectoryString,
2833
2834 /*--- End of included file: packet-x509if-ettarr.c ---*/
2835 #line 129 "packet-x509if-template.c"
2836   };
2837
2838   /* Register protocol */
2839   proto_x509if = proto_register_protocol(PNAME, PSNAME, PFNAME);
2840
2841   /* Register fields and subtrees */
2842   proto_register_field_array(proto_x509if, hf, array_length(hf));
2843   proto_register_subtree_array(ett, array_length(ett));
2844
2845   /* initialise array */
2846   fmt_vals[0].value = 0;
2847   fmt_vals[0].strptr = NULL;
2848
2849 }
2850
2851
2852 /*--- proto_reg_handoff_x509if -------------------------------------------*/
2853 void proto_reg_handoff_x509if(void) {
2854
2855 /*--- Included file: packet-x509if-dis-tab.c ---*/
2856 #line 1 "packet-x509if-dis-tab.c"
2857   register_ber_oid_dissector("2.5.4.1", dissect_DistinguishedName_PDU, proto_x509if, "id-at-aliasedEntryName");
2858   register_ber_oid_dissector("2.5.4.31", dissect_DistinguishedName_PDU, proto_x509if, "id-at-member");
2859   register_ber_oid_dissector("2.5.4.32", dissect_DistinguishedName_PDU, proto_x509if, "id-at-owner");
2860   register_ber_oid_dissector("2.5.4.33", dissect_DistinguishedName_PDU, proto_x509if, "id-at-roleOccupant");
2861   register_ber_oid_dissector("2.5.4.34", dissect_DistinguishedName_PDU, proto_x509if, "id-at-seeAlso");
2862   register_ber_oid_dissector("2.5.4.49", dissect_DistinguishedName_PDU, proto_x509if, "id-at-distinguishedName");
2863   register_ber_oid_dissector("2.5.18.3", dissect_DistinguishedName_PDU, proto_x509if, "id-oa-creatorsName");
2864   register_ber_oid_dissector("2.5.18.4", dissect_DistinguishedName_PDU, proto_x509if, "id-oa-modifiersName");
2865   register_ber_oid_dissector("2.5.18.6", dissect_SubtreeSpecification_PDU, proto_x509if, "id-oa-subtreeSpecification");
2866   register_ber_oid_dissector("2.5.18.10", dissect_DistinguishedName_PDU, proto_x509if, "id-oa-subschemaSubentry");
2867   register_ber_oid_dissector("2.5.18.11", dissect_DistinguishedName_PDU, proto_x509if, "id-oa-accessControlSubentry");
2868   register_ber_oid_dissector("2.5.18.12", dissect_DistinguishedName_PDU, proto_x509if, "id-oa-collectiveAttributeSubentry");
2869   register_ber_oid_dissector("2.5.18.13", dissect_DistinguishedName_PDU, proto_x509if, "id-oa-contextDefaultSubentry");
2870   register_ber_oid_dissector("2.5.18.17", dissect_HierarchyLevel_PDU, proto_x509if, "id-oa-hierarchyLevel");
2871   register_ber_oid_dissector("2.5.18.18", dissect_HierarchyBelow_PDU, proto_x509if, "iid-oa-hierarchyBelow");
2872   register_ber_oid_dissector("2.6.5.2.5", dissect_DistinguishedName_PDU, proto_x509if, "id-at-mhs-message-store-dn");
2873   register_ber_oid_dissector("2.6.5.2.14", dissect_DistinguishedName_PDU, proto_x509if, "id-at-mhs-dl-related-lists");
2874   register_ber_oid_dissector("2.16.840.1.101.2.2.1.3", dissect_DistinguishedName_PDU, proto_x509if, "id-at-alternateRecipient");
2875   register_ber_oid_dissector("2.16.840.1.101.2.2.1.4", dissect_DistinguishedName_PDU, proto_x509if, "id-at-associatedOrganization");
2876   register_ber_oid_dissector("2.16.840.1.101.2.2.1.6", dissect_DistinguishedName_PDU, proto_x509if, "id-at-associatedPLA");
2877   register_ber_oid_dissector("2.16.840.1.101.2.2.1.49", dissect_DistinguishedName_PDU, proto_x509if, "id-at-aliasPointer");
2878   register_ber_oid_dissector("2.16.840.1.101.2.2.1.61", dissect_DistinguishedName_PDU, proto_x509if, "id-at-listPointer");
2879   register_ber_oid_dissector("2.16.840.1.101.2.2.1.110", dissect_DistinguishedName_PDU, proto_x509if, "id-at-administrator");
2880   register_ber_oid_dissector("2.16.840.1.101.2.2.1.111", dissect_DistinguishedName_PDU, proto_x509if, "id-at-aigsExpanded");
2881   register_ber_oid_dissector("2.16.840.1.101.2.2.1.113", dissect_DistinguishedName_PDU, proto_x509if, "id-at-associatedAL");
2882   register_ber_oid_dissector("2.16.840.1.101.2.2.1.114", dissect_DistinguishedName_PDU, proto_x509if, "id-at-copyMember");
2883   register_ber_oid_dissector("2.16.840.1.101.2.2.1.117", dissect_DistinguishedName_PDU, proto_x509if, "id-at-guard");
2884   register_ber_oid_dissector("2.16.840.1.101.2.2.1.121", dissect_DistinguishedName_PDU, proto_x509if, "id-at-networkDN");
2885   register_ber_oid_dissector("2.16.840.1.101.2.2.1.138", dissect_DistinguishedName_PDU, proto_x509if, "id-at-plasServed");
2886   register_ber_oid_dissector("2.16.840.1.101.2.2.1.139", dissect_DistinguishedName_PDU, proto_x509if, "id-at-deployed");
2887   register_ber_oid_dissector("2.16.840.1.101.2.2.1.140", dissect_DistinguishedName_PDU, proto_x509if, "id-at-garrison");
2888
2889
2890 /*--- End of included file: packet-x509if-dis-tab.c ---*/
2891 #line 148 "packet-x509if-template.c"
2892 }
2893