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