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 InformationFramework.asn */
6 /* Input file: packet-x509if-template.c */
8 #line 1 "packet-x509if-template.c"
10 * Routines for X.509 Information Framework packet dissection
11 * Ronnie Sahlberg 2004
15 * Wireshark - Network traffic analyzer
16 * By Gerald Combs <gerald@wireshark.org>
17 * Copyright 1998 Gerald Combs
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.
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.
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.
39 #include <epan/packet.h>
40 #include <epan/conversation.h>
45 #include "packet-x509if.h"
46 #include "packet-ber.h"
47 #include "packet-x509sat.h"
48 #include <epan/emem.h>
49 #include <epan/strutil.h>
51 #define PNAME "X.509 Information Framework"
52 #define PSNAME "X509IF"
53 #define PFNAME "x509if"
55 /* Initialize the protocol and registered fields */
56 int proto_x509if = -1;
57 static int hf_x509if_object_identifier_id = -1;
58 static int hf_x509if_any_string = -1;
60 /*--- Included file: packet-x509if-hf.c ---*/
61 #line 1 "packet-x509if-hf.c"
62 static int hf_x509if_Name_PDU = -1; /* Name */
63 static int hf_x509if_DistinguishedName_PDU = -1; /* DistinguishedName */
64 static int hf_x509if_type = -1; /* AttributeId */
65 static int hf_x509if_values = -1; /* SET_OF_AttributeValue */
66 static int hf_x509if_values_item = -1; /* AttributeValue */
67 static int hf_x509if_valuesWithContext = -1; /* T_valuesWithContext */
68 static int hf_x509if_valuesWithContext_item = -1; /* T_valuesWithContext_item */
69 static int hf_x509if_value = -1; /* ValuesWithContextValue */
70 static int hf_x509if_contextList = -1; /* SET_OF_Context */
71 static int hf_x509if_contextList_item = -1; /* Context */
72 static int hf_x509if_contextType = -1; /* AttributeId */
73 static int hf_x509if_contextValues = -1; /* SET_OF_AttributeValue */
74 static int hf_x509if_contextValues_item = -1; /* AttributeValue */
75 static int hf_x509if_fallback = -1; /* BOOLEAN */
76 static int hf_x509if_assertion = -1; /* AttributeValue */
77 static int hf_x509if_assertedContexts = -1; /* T_assertedContexts */
78 static int hf_x509if_allContexts = -1; /* NULL */
79 static int hf_x509if_selectedContexts = -1; /* SET_OF_ContextAssertion */
80 static int hf_x509if_selectedContexts_item = -1; /* ContextAssertion */
81 static int hf_x509if_ca_contextType = -1; /* ContextId */
82 static int hf_x509if_ca_contextValues = -1; /* SET_OF_ContextValue */
83 static int hf_x509if_ca_contextValues_item = -1; /* ContextValue */
84 static int hf_x509if_ata_assertedContexts = -1; /* SEQUENCE_OF_ContextAssertion */
85 static int hf_x509if_assertedContexts_item = -1; /* ContextAssertion */
86 static int hf_x509if_rdnSequence = -1; /* RDNSequence */
87 static int hf_x509if_RDNSequence_item = -1; /* RDNSequence_item */
88 static int hf_x509if_RelativeDistinguishedName_item = -1; /* RelativeDistinguishedName_item */
89 static int hf_x509if_atadv_value = -1; /* AttributeValue */
90 static int hf_x509if_primaryDistinguished = -1; /* BOOLEAN */
91 static int hf_x509if_valueswithContext = -1; /* T_valWithContext */
92 static int hf_x509if_valueswithContext_item = -1; /* T_valWithContext_item */
93 static int hf_x509if_distingAttrValue = -1; /* ValuesWithContextValue */
94 static int hf_x509if_base = -1; /* LocalName */
95 static int hf_x509if_specificExclusions = -1; /* T_specificExclusions */
96 static int hf_x509if_specificExclusions_item = -1; /* T_specificExclusions_item */
97 static int hf_x509if_chopBefore = -1; /* LocalName */
98 static int hf_x509if_chopAfter = -1; /* LocalName */
99 static int hf_x509if_minimum = -1; /* BaseDistance */
100 static int hf_x509if_maximum = -1; /* BaseDistance */
101 static int hf_x509if_specificationFilter = -1; /* Refinement */
102 static int hf_x509if_chopSpecificExclusions = -1; /* T_chopSpecificExclusions */
103 static int hf_x509if_chopSpecificExclusions_item = -1; /* T_chopSpecificExclusions_item */
104 static int hf_x509if_item = -1; /* OBJECT_IDENTIFIER */
105 static int hf_x509if_refinement_and = -1; /* SET_OF_Refinement */
106 static int hf_x509if_refinement_and_item = -1; /* Refinement */
107 static int hf_x509if_refinement_or = -1; /* SET_OF_Refinement */
108 static int hf_x509if_refinement_or_item = -1; /* Refinement */
109 static int hf_x509if_refinement_not = -1; /* Refinement */
110 static int hf_x509if_ruleIdentifier = -1; /* RuleIdentifier */
111 static int hf_x509if_nameForm = -1; /* OBJECT_IDENTIFIER */
112 static int hf_x509if_superiorStructureRules = -1; /* SET_OF_RuleIdentifier */
113 static int hf_x509if_superiorStructureRules_item = -1; /* RuleIdentifier */
114 static int hf_x509if_structuralObjectClass = -1; /* OBJECT_IDENTIFIER */
115 static int hf_x509if_auxiliaries = -1; /* T_auxiliaries */
116 static int hf_x509if_auxiliaries_item = -1; /* OBJECT_IDENTIFIER */
117 static int hf_x509if_mandatory = -1; /* SET_SIZE_1_MAX_OF_AttributeId */
118 static int hf_x509if_mandatory_item = -1; /* AttributeId */
119 static int hf_x509if_optional = -1; /* SET_SIZE_1_MAX_OF_AttributeId */
120 static int hf_x509if_optional_item = -1; /* AttributeId */
121 static int hf_x509if_precluded = -1; /* SET_SIZE_1_MAX_OF_AttributeId */
122 static int hf_x509if_precluded_item = -1; /* AttributeId */
123 static int hf_x509if_attributeType = -1; /* AttributeId */
124 static int hf_x509if_mandatoryContexts = -1; /* T_mandatoryContexts */
125 static int hf_x509if_mandatoryContexts_item = -1; /* OBJECT_IDENTIFIER */
126 static int hf_x509if_optionalContexts = -1; /* T_optionalContexts */
127 static int hf_x509if_optionalContexts_item = -1; /* OBJECT_IDENTIFIER */
128 static int hf_x509if_id = -1; /* INTEGER */
129 static int hf_x509if_dmdId = -1; /* OBJECT_IDENTIFIER */
130 static int hf_x509if_serviceType = -1; /* OBJECT_IDENTIFIER */
131 static int hf_x509if_userClass = -1; /* INTEGER */
132 static int hf_x509if_inputAttributeTypes = -1; /* SEQUENCE_OF_RequestAttribute */
133 static int hf_x509if_inputAttributeTypes_item = -1; /* RequestAttribute */
134 static int hf_x509if_attributeCombination = -1; /* AttributeCombination */
135 static int hf_x509if_outputAttributeTypes = -1; /* SEQUENCE_OF_ResultAttribute */
136 static int hf_x509if_outputAttributeTypes_item = -1; /* ResultAttribute */
137 static int hf_x509if_defaultControls = -1; /* ControlOptions */
138 static int hf_x509if_mandatoryControls = -1; /* ControlOptions */
139 static int hf_x509if_searchRuleControls = -1; /* ControlOptions */
140 static int hf_x509if_relaxation = -1; /* RelaxationPolicy */
141 static int hf_x509if_additionalControl = -1; /* SEQUENCE_OF_AttributeType */
142 static int hf_x509if_additionalControl_item = -1; /* AttributeType */
143 static int hf_x509if_allowedSubset = -1; /* AllowedSubset */
144 static int hf_x509if_imposedSubset = -1; /* ImposedSubset */
145 static int hf_x509if_entryLimit = -1; /* EntryLimit */
146 static int hf_x509if_name = -1; /* SET_OF_DirectoryString */
147 static int hf_x509if_name_item = -1; /* DirectoryString */
148 static int hf_x509if_description = -1; /* DirectoryString */
149 static int hf_x509if_obsolete = -1; /* BOOLEAN */
150 static int hf_x509if_includeSubtypes = -1; /* BOOLEAN */
151 static int hf_x509if_ra_selectedValues = -1; /* SEQUENCE_OF_SelectedValues */
152 static int hf_x509if_ra_selectedValues_item = -1; /* SelectedValues */
153 static int hf_x509if_defaultValues = -1; /* T_defaultValues */
154 static int hf_x509if_defaultValues_item = -1; /* T_defaultValues_item */
155 static int hf_x509if_entryType = -1; /* DefaultValueType */
156 static int hf_x509if_ra_values = -1; /* SEQUENCE_OF_DefaultValueValues */
157 static int hf_x509if_ra_values_item = -1; /* DefaultValueValues */
158 static int hf_x509if_contexts = -1; /* SEQUENCE_OF_ContextProfile */
159 static int hf_x509if_contexts_item = -1; /* ContextProfile */
160 static int hf_x509if_contextCombination = -1; /* ContextCombination */
161 static int hf_x509if_matchingUse = -1; /* SEQUENCE_OF_MatchingUse */
162 static int hf_x509if_matchingUse_item = -1; /* MatchingUse */
163 static int hf_x509if_contextValue = -1; /* SEQUENCE_OF_AttributeValue */
164 static int hf_x509if_contextValue_item = -1; /* AttributeValue */
165 static int hf_x509if_context = -1; /* OBJECT_IDENTIFIER */
166 static int hf_x509if_contextcombination_and = -1; /* SEQUENCE_OF_ContextCombination */
167 static int hf_x509if_contextcombination_and_item = -1; /* ContextCombination */
168 static int hf_x509if_contextcombination_or = -1; /* SEQUENCE_OF_ContextCombination */
169 static int hf_x509if_contextcombination_or_item = -1; /* ContextCombination */
170 static int hf_x509if_contextcombination_not = -1; /* ContextCombination */
171 static int hf_x509if_restrictionType = -1; /* AttributeId */
172 static int hf_x509if_restrictionValue = -1; /* AttributeValue */
173 static int hf_x509if_attribute = -1; /* AttributeType */
174 static int hf_x509if_and = -1; /* SEQUENCE_OF_AttributeCombination */
175 static int hf_x509if_and_item = -1; /* AttributeCombination */
176 static int hf_x509if_or = -1; /* SEQUENCE_OF_AttributeCombination */
177 static int hf_x509if_or_item = -1; /* AttributeCombination */
178 static int hf_x509if_not = -1; /* AttributeCombination */
179 static int hf_x509if_outputValues = -1; /* T_outputValues */
180 static int hf_x509if_selectedValues = -1; /* SEQUENCE_OF_AttributeValue */
181 static int hf_x509if_selectedValues_item = -1; /* AttributeValue */
182 static int hf_x509if_matchedValuesOnly = -1; /* NULL */
183 static int hf_x509if_default = -1; /* INTEGER */
184 static int hf_x509if_max = -1; /* INTEGER */
185 static int hf_x509if_basic = -1; /* MRMapping */
186 static int hf_x509if_tightenings = -1; /* SEQUENCE_OF_MRMapping */
187 static int hf_x509if_tightenings_item = -1; /* MRMapping */
188 static int hf_x509if_relaxations = -1; /* SEQUENCE_OF_MRMapping */
189 static int hf_x509if_relaxations_item = -1; /* MRMapping */
190 static int hf_x509if_maximum_relaxation = -1; /* INTEGER */
191 static int hf_x509if_minimum_relaxation = -1; /* INTEGER */
192 static int hf_x509if_mapping = -1; /* SEQUENCE_OF_Mapping */
193 static int hf_x509if_mapping_item = -1; /* Mapping */
194 static int hf_x509if_substitution = -1; /* SEQUENCE_OF_MRSubstitution */
195 static int hf_x509if_substitution_item = -1; /* MRSubstitution */
196 static int hf_x509if_mappingFunction = -1; /* OBJECT_IDENTIFIER */
197 static int hf_x509if_level = -1; /* INTEGER */
198 static int hf_x509if_oldMatchingRule = -1; /* OBJECT_IDENTIFIER */
199 static int hf_x509if_newMatchingRule = -1; /* OBJECT_IDENTIFIER */
201 static int hf_x509if_AllowedSubset_baseObject = -1;
202 static int hf_x509if_AllowedSubset_oneLevel = -1;
203 static int hf_x509if_AllowedSubset_wholeSubtree = -1;
205 /*--- End of included file: packet-x509if-hf.c ---*/
206 #line 52 "packet-x509if-template.c"
208 /* Initialize the subtree pointers */
210 /*--- Included file: packet-x509if-ett.c ---*/
211 #line 1 "packet-x509if-ett.c"
212 static gint ett_x509if_Attribute = -1;
213 static gint ett_x509if_SET_OF_AttributeValue = -1;
214 static gint ett_x509if_T_valuesWithContext = -1;
215 static gint ett_x509if_T_valuesWithContext_item = -1;
216 static gint ett_x509if_SET_OF_Context = -1;
217 static gint ett_x509if_Context = -1;
218 static gint ett_x509if_AttributeValueAssertion = -1;
219 static gint ett_x509if_T_assertedContexts = -1;
220 static gint ett_x509if_SET_OF_ContextAssertion = -1;
221 static gint ett_x509if_ContextAssertion = -1;
222 static gint ett_x509if_SET_OF_ContextValue = -1;
223 static gint ett_x509if_AttributeTypeAssertion = -1;
224 static gint ett_x509if_SEQUENCE_OF_ContextAssertion = -1;
225 static gint ett_x509if_Name = -1;
226 static gint ett_x509if_RDNSequence = -1;
227 static gint ett_x509if_RelativeDistinguishedName = -1;
228 static gint ett_x509if_AttributeTypeAndDistinguishedValue = -1;
229 static gint ett_x509if_T_valWithContext = -1;
230 static gint ett_x509if_T_valWithContext_item = -1;
231 static gint ett_x509if_SubtreeSpecification = -1;
232 static gint ett_x509if_T_specificExclusions = -1;
233 static gint ett_x509if_T_specificExclusions_item = -1;
234 static gint ett_x509if_ChopSpecification = -1;
235 static gint ett_x509if_T_chopSpecificExclusions = -1;
236 static gint ett_x509if_T_chopSpecificExclusions_item = -1;
237 static gint ett_x509if_Refinement = -1;
238 static gint ett_x509if_SET_OF_Refinement = -1;
239 static gint ett_x509if_DITStructureRule = -1;
240 static gint ett_x509if_SET_OF_RuleIdentifier = -1;
241 static gint ett_x509if_DITContentRule = -1;
242 static gint ett_x509if_T_auxiliaries = -1;
243 static gint ett_x509if_SET_SIZE_1_MAX_OF_AttributeId = -1;
244 static gint ett_x509if_DITContextUse = -1;
245 static gint ett_x509if_T_mandatoryContexts = -1;
246 static gint ett_x509if_T_optionalContexts = -1;
247 static gint ett_x509if_SearchRuleDescription = -1;
248 static gint ett_x509if_SEQUENCE_OF_RequestAttribute = -1;
249 static gint ett_x509if_SEQUENCE_OF_ResultAttribute = -1;
250 static gint ett_x509if_SEQUENCE_OF_AttributeType = -1;
251 static gint ett_x509if_SET_OF_DirectoryString = -1;
252 static gint ett_x509if_SearchRule = -1;
253 static gint ett_x509if_SearchRuleId = -1;
254 static gint ett_x509if_AllowedSubset = -1;
255 static gint ett_x509if_RequestAttribute = -1;
256 static gint ett_x509if_SEQUENCE_OF_SelectedValues = -1;
257 static gint ett_x509if_T_defaultValues = -1;
258 static gint ett_x509if_T_defaultValues_item = -1;
259 static gint ett_x509if_SEQUENCE_OF_DefaultValueValues = -1;
260 static gint ett_x509if_SEQUENCE_OF_ContextProfile = -1;
261 static gint ett_x509if_SEQUENCE_OF_MatchingUse = -1;
262 static gint ett_x509if_ContextProfile = -1;
263 static gint ett_x509if_SEQUENCE_OF_AttributeValue = -1;
264 static gint ett_x509if_ContextCombination = -1;
265 static gint ett_x509if_SEQUENCE_OF_ContextCombination = -1;
266 static gint ett_x509if_MatchingUse = -1;
267 static gint ett_x509if_AttributeCombination = -1;
268 static gint ett_x509if_SEQUENCE_OF_AttributeCombination = -1;
269 static gint ett_x509if_ResultAttribute = -1;
270 static gint ett_x509if_T_outputValues = -1;
271 static gint ett_x509if_OutputValues = -1;
272 static gint ett_x509if_ControlOptions = -1;
273 static gint ett_x509if_EntryLimit = -1;
274 static gint ett_x509if_RelaxationPolicy = -1;
275 static gint ett_x509if_SEQUENCE_OF_MRMapping = -1;
276 static gint ett_x509if_MRMapping = -1;
277 static gint ett_x509if_SEQUENCE_OF_Mapping = -1;
278 static gint ett_x509if_SEQUENCE_OF_MRSubstitution = -1;
279 static gint ett_x509if_Mapping = -1;
280 static gint ett_x509if_MRSubstitution = -1;
282 /*--- End of included file: packet-x509if-ett.c ---*/
283 #line 55 "packet-x509if-template.c"
285 static const char *object_identifier_id;
286 static proto_tree *top_of_dn = NULL;
287 static proto_tree *top_of_rdn = NULL;
289 static gboolean rdn_one_value = FALSE; /* have we seen one value in an RDN yet */
290 static gboolean dn_one_rdn = FALSE; /* have we seen one RDN in a DN yet */
291 static gboolean doing_dn = TRUE;
293 #define MAX_RDN_STR_LEN 64
294 #define MAX_DN_STR_LEN (20 * MAX_RDN_STR_LEN)
296 static char *last_dn = NULL;
297 static char *last_rdn = NULL;
299 static int ava_hf_index;
300 #define MAX_FMT_VALS 32
301 static value_string fmt_vals[MAX_FMT_VALS];
302 #define MAX_AVA_STR_LEN 64
303 static char *last_ava = NULL;
306 /*--- Included file: packet-x509if-fn.c ---*/
307 #line 1 "packet-x509if-fn.c"
308 /*--- Cyclic dependencies ---*/
310 /* Refinement -> Refinement/and -> Refinement */
311 /* Refinement -> Refinement */
312 int dissect_x509if_Refinement(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
314 static int dissect_specificationFilter(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
315 return dissect_x509if_Refinement(FALSE, tvb, offset, pinfo, tree, hf_x509if_specificationFilter);
317 static int dissect_refinement_and_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
318 return dissect_x509if_Refinement(FALSE, tvb, offset, pinfo, tree, hf_x509if_refinement_and_item);
320 static int dissect_refinement_or_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
321 return dissect_x509if_Refinement(FALSE, tvb, offset, pinfo, tree, hf_x509if_refinement_or_item);
323 static int dissect_refinement_not(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
324 return dissect_x509if_Refinement(FALSE, tvb, offset, pinfo, tree, hf_x509if_refinement_not);
327 /* ContextCombination -> ContextCombination/and -> ContextCombination */
328 /* ContextCombination -> ContextCombination */
329 int dissect_x509if_ContextCombination(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
331 static int dissect_contextCombination(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
332 return dissect_x509if_ContextCombination(FALSE, tvb, offset, pinfo, tree, hf_x509if_contextCombination);
334 static int dissect_contextcombination_and_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
335 return dissect_x509if_ContextCombination(FALSE, tvb, offset, pinfo, tree, hf_x509if_contextcombination_and_item);
337 static int dissect_contextcombination_or_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
338 return dissect_x509if_ContextCombination(FALSE, tvb, offset, pinfo, tree, hf_x509if_contextcombination_or_item);
340 static int dissect_contextcombination_not(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
341 return dissect_x509if_ContextCombination(FALSE, tvb, offset, pinfo, tree, hf_x509if_contextcombination_not);
344 /* AttributeCombination -> AttributeCombination/and -> AttributeCombination */
345 /* AttributeCombination -> AttributeCombination */
346 int dissect_x509if_AttributeCombination(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
348 static int dissect_attributeCombination(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
349 return dissect_x509if_AttributeCombination(FALSE, tvb, offset, pinfo, tree, hf_x509if_attributeCombination);
351 static int dissect_and_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
352 return dissect_x509if_AttributeCombination(FALSE, tvb, offset, pinfo, tree, hf_x509if_and_item);
354 static int dissect_or_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
355 return dissect_x509if_AttributeCombination(FALSE, tvb, offset, pinfo, tree, hf_x509if_or_item);
357 static int dissect_not(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
358 return dissect_x509if_AttributeCombination(FALSE, tvb, offset, pinfo, tree, hf_x509if_not);
362 /*--- Fields for imported types ---*/
364 static int dissect_name_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
365 return dissect_x509sat_DirectoryString(FALSE, tvb, offset, pinfo, tree, hf_x509if_name_item);
367 static int dissect_description(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
368 return dissect_x509sat_DirectoryString(FALSE, tvb, offset, pinfo, tree, hf_x509if_description);
374 dissect_x509if_AttributeId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
375 #line 137 "x509if.cnf"
379 offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_x509if_object_identifier_id, &object_identifier_id);
382 if(object_identifier_id) {
383 /* see if we can find a nice name */
384 name = get_ber_oid_name(object_identifier_id);
385 if(!name) name = object_identifier_id;
387 if(doing_dn) { /* append it to the RDN */
388 g_strlcat(last_rdn, name, MAX_RDN_STR_LEN);
389 g_strlcat(last_rdn, "=", MAX_RDN_STR_LEN);
391 /* append it to the tree */
392 proto_item_append_text(tree, " (%s=", name);
395 if((fmt = val_to_str(hf_index, fmt_vals, "")) && *fmt) {
396 /* we have a format */
397 last_ava = ep_alloc(MAX_AVA_STR_LEN); *last_ava = '\0';
399 g_snprintf(last_ava, MAX_AVA_STR_LEN, "%s %s", name, fmt);
401 proto_item_append_text(tree, " %s", last_ava);
410 static int dissect_type(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
411 return dissect_x509if_AttributeId(FALSE, tvb, offset, pinfo, tree, hf_x509if_type);
413 static int dissect_contextType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
414 return dissect_x509if_AttributeId(FALSE, tvb, offset, pinfo, tree, hf_x509if_contextType);
416 static int dissect_mandatory_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
417 return dissect_x509if_AttributeId(FALSE, tvb, offset, pinfo, tree, hf_x509if_mandatory_item);
419 static int dissect_optional_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
420 return dissect_x509if_AttributeId(FALSE, tvb, offset, pinfo, tree, hf_x509if_optional_item);
422 static int dissect_precluded_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
423 return dissect_x509if_AttributeId(FALSE, tvb, offset, pinfo, tree, hf_x509if_precluded_item);
425 static int dissect_attributeType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
426 return dissect_x509if_AttributeId(FALSE, tvb, offset, pinfo, tree, hf_x509if_attributeType);
428 static int dissect_restrictionType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
429 return dissect_x509if_AttributeId(FALSE, tvb, offset, pinfo, tree, hf_x509if_restrictionType);
435 dissect_x509if_AttributeValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
436 #line 167 "x509if.cnf"
437 int old_offset = offset;
441 const char *name = NULL;
442 const char *orig_oid = object_identifier_id;
444 offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
446 /* in dissecting the value we may have overridden the OID of the value - which is
447 a problem if there are multiple values */
448 object_identifier_id = orig_oid;
450 /* try and dissect as a string */
451 dissect_ber_octet_string(FALSE, pinfo, NULL, tvb, old_offset, hf_x509if_any_string, &out_tvb);
453 /* should also try and dissect as an OID and integer */
454 /* of course, if I can look up the syntax .... */
457 /* it was a string - format it */
458 value = tvb_format_text(out_tvb, 0, tvb_length(out_tvb));
461 g_strlcat(last_rdn, value, MAX_RDN_STR_LEN);
463 /* append it to the tree*/
464 proto_item_append_text(tree, "%s)", value);
467 if((fmt = val_to_str(ava_hf_index, fmt_vals, "")) && *fmt) {
468 /* we have a format */
470 if(!(name = get_ber_oid_name(object_identifier_id)))
471 name = object_identifier_id;
472 g_snprintf(last_ava, MAX_AVA_STR_LEN, "%s %s %s", name, fmt, value);
474 proto_item_append_text(tree, " %s", last_ava);
483 static int dissect_values_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
484 return dissect_x509if_AttributeValue(FALSE, tvb, offset, pinfo, tree, hf_x509if_values_item);
486 static int dissect_contextValues_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
487 return dissect_x509if_AttributeValue(FALSE, tvb, offset, pinfo, tree, hf_x509if_contextValues_item);
489 static int dissect_assertion(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
490 return dissect_x509if_AttributeValue(FALSE, tvb, offset, pinfo, tree, hf_x509if_assertion);
492 static int dissect_atadv_value(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
493 return dissect_x509if_AttributeValue(FALSE, tvb, offset, pinfo, tree, hf_x509if_atadv_value);
495 static int dissect_contextValue_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
496 return dissect_x509if_AttributeValue(FALSE, tvb, offset, pinfo, tree, hf_x509if_contextValue_item);
498 static int dissect_restrictionValue(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
499 return dissect_x509if_AttributeValue(FALSE, tvb, offset, pinfo, tree, hf_x509if_restrictionValue);
501 static int dissect_selectedValues_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
502 return dissect_x509if_AttributeValue(FALSE, tvb, offset, pinfo, tree, hf_x509if_selectedValues_item);
508 dissect_x509if_ValuesWithContextValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
509 #line 219 "x509if.cnf"
510 offset=call_ber_oid_callback("unknown", tvb, offset, pinfo, tree);
516 static int dissect_value(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
517 return dissect_x509if_ValuesWithContextValue(FALSE, tvb, offset, pinfo, tree, hf_x509if_value);
519 static int dissect_distingAttrValue(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
520 return dissect_x509if_ValuesWithContextValue(FALSE, tvb, offset, pinfo, tree, hf_x509if_distingAttrValue);
524 static const ber_sequence_t SET_OF_AttributeValue_set_of[1] = {
525 { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_values_item },
529 dissect_x509if_SET_OF_AttributeValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
530 offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
531 SET_OF_AttributeValue_set_of, hf_index, ett_x509if_SET_OF_AttributeValue);
535 static int dissect_values(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
536 return dissect_x509if_SET_OF_AttributeValue(FALSE, tvb, offset, pinfo, tree, hf_x509if_values);
538 static int dissect_contextValues(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
539 return dissect_x509if_SET_OF_AttributeValue(FALSE, tvb, offset, pinfo, tree, hf_x509if_contextValues);
545 dissect_x509if_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
546 offset = dissect_ber_boolean(implicit_tag, pinfo, tree, tvb, offset, hf_index);
550 static int dissect_fallback(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
551 return dissect_x509if_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_x509if_fallback);
553 static int dissect_primaryDistinguished(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
554 return dissect_x509if_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_x509if_primaryDistinguished);
556 static int dissect_obsolete(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
557 return dissect_x509if_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_x509if_obsolete);
559 static int dissect_includeSubtypes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
560 return dissect_x509if_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_x509if_includeSubtypes);
564 static const ber_sequence_t Context_sequence[] = {
565 { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_contextType },
566 { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_contextValues },
567 { BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_fallback },
572 dissect_x509if_Context(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
573 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
574 Context_sequence, hf_index, ett_x509if_Context);
578 static int dissect_contextList_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
579 return dissect_x509if_Context(FALSE, tvb, offset, pinfo, tree, hf_x509if_contextList_item);
583 static const ber_sequence_t SET_OF_Context_set_of[1] = {
584 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_contextList_item },
588 dissect_x509if_SET_OF_Context(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
589 offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
590 SET_OF_Context_set_of, hf_index, ett_x509if_SET_OF_Context);
594 static int dissect_contextList(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
595 return dissect_x509if_SET_OF_Context(FALSE, tvb, offset, pinfo, tree, hf_x509if_contextList);
599 static const ber_sequence_t T_valuesWithContext_item_sequence[] = {
600 { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_value },
601 { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_contextList },
606 dissect_x509if_T_valuesWithContext_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
607 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
608 T_valuesWithContext_item_sequence, hf_index, ett_x509if_T_valuesWithContext_item);
612 static int dissect_valuesWithContext_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
613 return dissect_x509if_T_valuesWithContext_item(FALSE, tvb, offset, pinfo, tree, hf_x509if_valuesWithContext_item);
617 static const ber_sequence_t T_valuesWithContext_set_of[1] = {
618 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_valuesWithContext_item },
622 dissect_x509if_T_valuesWithContext(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
623 offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
624 T_valuesWithContext_set_of, hf_index, ett_x509if_T_valuesWithContext);
628 static int dissect_valuesWithContext(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
629 return dissect_x509if_T_valuesWithContext(FALSE, tvb, offset, pinfo, tree, hf_x509if_valuesWithContext);
633 static const ber_sequence_t Attribute_sequence[] = {
634 { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_type },
635 { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_values },
636 { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_valuesWithContext },
641 dissect_x509if_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
642 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
643 Attribute_sequence, hf_index, ett_x509if_Attribute);
651 dissect_x509if_AttributeType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
652 offset = dissect_x509if_AttributeId(implicit_tag, tvb, offset, pinfo, tree, hf_index);
656 static int dissect_additionalControl_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
657 return dissect_x509if_AttributeType(FALSE, tvb, offset, pinfo, tree, hf_x509if_additionalControl_item);
659 static int dissect_attribute(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
660 return dissect_x509if_AttributeType(FALSE, tvb, offset, pinfo, tree, hf_x509if_attribute);
666 dissect_x509if_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
667 offset = dissect_ber_null(implicit_tag, pinfo, tree, tvb, offset, hf_index);
671 static int dissect_allContexts(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
672 return dissect_x509if_NULL(FALSE, tvb, offset, pinfo, tree, hf_x509if_allContexts);
674 static int dissect_matchedValuesOnly(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
675 return dissect_x509if_NULL(FALSE, tvb, offset, pinfo, tree, hf_x509if_matchedValuesOnly);
681 dissect_x509if_ContextId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
682 offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_x509if_object_identifier_id, &object_identifier_id);
686 static int dissect_ca_contextType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
687 return dissect_x509if_ContextId(FALSE, tvb, offset, pinfo, tree, hf_x509if_ca_contextType);
693 dissect_x509if_ContextValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
694 #line 131 "x509if.cnf"
695 offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
701 static int dissect_ca_contextValues_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
702 return dissect_x509if_ContextValue(FALSE, tvb, offset, pinfo, tree, hf_x509if_ca_contextValues_item);
706 static const ber_sequence_t SET_OF_ContextValue_set_of[1] = {
707 { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_ca_contextValues_item },
711 dissect_x509if_SET_OF_ContextValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
712 offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
713 SET_OF_ContextValue_set_of, hf_index, ett_x509if_SET_OF_ContextValue);
717 static int dissect_ca_contextValues(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
718 return dissect_x509if_SET_OF_ContextValue(FALSE, tvb, offset, pinfo, tree, hf_x509if_ca_contextValues);
722 static const ber_sequence_t ContextAssertion_sequence[] = {
723 { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_ca_contextType },
724 { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_ca_contextValues },
729 dissect_x509if_ContextAssertion(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
730 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
731 ContextAssertion_sequence, hf_index, ett_x509if_ContextAssertion);
735 static int dissect_selectedContexts_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
736 return dissect_x509if_ContextAssertion(FALSE, tvb, offset, pinfo, tree, hf_x509if_selectedContexts_item);
738 static int dissect_assertedContexts_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
739 return dissect_x509if_ContextAssertion(FALSE, tvb, offset, pinfo, tree, hf_x509if_assertedContexts_item);
743 static const ber_sequence_t SET_OF_ContextAssertion_set_of[1] = {
744 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_selectedContexts_item },
748 dissect_x509if_SET_OF_ContextAssertion(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
749 offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
750 SET_OF_ContextAssertion_set_of, hf_index, ett_x509if_SET_OF_ContextAssertion);
754 static int dissect_selectedContexts(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
755 return dissect_x509if_SET_OF_ContextAssertion(FALSE, tvb, offset, pinfo, tree, hf_x509if_selectedContexts);
759 static const value_string x509if_T_assertedContexts_vals[] = {
760 { 0, "allContexts" },
761 { 1, "selectedContexts" },
765 static const ber_choice_t T_assertedContexts_choice[] = {
766 { 0, BER_CLASS_CON, 0, 0, dissect_allContexts },
767 { 1, BER_CLASS_CON, 1, 0, dissect_selectedContexts },
772 dissect_x509if_T_assertedContexts(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
773 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
774 T_assertedContexts_choice, hf_index, ett_x509if_T_assertedContexts,
779 static int dissect_assertedContexts(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
780 return dissect_x509if_T_assertedContexts(FALSE, tvb, offset, pinfo, tree, hf_x509if_assertedContexts);
784 static const ber_sequence_t AttributeValueAssertion_sequence[] = {
785 { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_type },
786 { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_assertion },
787 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_assertedContexts },
792 dissect_x509if_AttributeValueAssertion(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
793 #line 296 "x509if.cnf"
795 ava_hf_index = hf_index;
796 last_ava = ep_alloc(MAX_AVA_STR_LEN); *last_ava = '\0';
798 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
799 AttributeValueAssertion_sequence, hf_index, ett_x509if_AttributeValueAssertion);
810 static const ber_sequence_t SEQUENCE_OF_ContextAssertion_sequence_of[1] = {
811 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_assertedContexts_item },
815 dissect_x509if_SEQUENCE_OF_ContextAssertion(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
816 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
817 SEQUENCE_OF_ContextAssertion_sequence_of, hf_index, ett_x509if_SEQUENCE_OF_ContextAssertion);
821 static int dissect_ata_assertedContexts(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
822 return dissect_x509if_SEQUENCE_OF_ContextAssertion(FALSE, tvb, offset, pinfo, tree, hf_x509if_ata_assertedContexts);
826 static const ber_sequence_t AttributeTypeAssertion_sequence[] = {
827 { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_type },
828 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_ata_assertedContexts },
833 dissect_x509if_AttributeTypeAssertion(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
834 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
835 AttributeTypeAssertion_sequence, hf_index, ett_x509if_AttributeTypeAssertion);
841 static const ber_sequence_t T_valWithContext_item_sequence[] = {
842 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_distingAttrValue },
843 { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_contextList },
848 dissect_x509if_T_valWithContext_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
849 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
850 T_valWithContext_item_sequence, hf_index, ett_x509if_T_valWithContext_item);
854 static int dissect_valueswithContext_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
855 return dissect_x509if_T_valWithContext_item(FALSE, tvb, offset, pinfo, tree, hf_x509if_valueswithContext_item);
859 static const ber_sequence_t T_valWithContext_set_of[1] = {
860 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_valueswithContext_item },
864 dissect_x509if_T_valWithContext(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
865 offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
866 T_valWithContext_set_of, hf_index, ett_x509if_T_valWithContext);
870 static int dissect_valueswithContext(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
871 return dissect_x509if_T_valWithContext(FALSE, tvb, offset, pinfo, tree, hf_x509if_valueswithContext);
875 static const ber_sequence_t AttributeTypeAndDistinguishedValue_sequence[] = {
876 { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_type },
877 { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_atadv_value },
878 { BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_primaryDistinguished },
879 { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_valueswithContext },
884 dissect_x509if_AttributeTypeAndDistinguishedValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
885 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
886 AttributeTypeAndDistinguishedValue_sequence, hf_index, ett_x509if_AttributeTypeAndDistinguishedValue);
894 dissect_x509if_RelativeDistinguishedName_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
895 #line 250 "x509if.cnf"
902 /* this is an additional value - delimit */
903 g_strlcat(last_rdn, "+", MAX_RDN_STR_LEN);
906 offset = dissect_x509if_AttributeTypeAndDistinguishedValue(implicit_tag, tvb, offset, pinfo, tree, hf_index);
909 rdn_one_value = TRUE;
915 static int dissect_RelativeDistinguishedName_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
916 return dissect_x509if_RelativeDistinguishedName_item(FALSE, tvb, offset, pinfo, tree, hf_x509if_RelativeDistinguishedName_item);
920 static const ber_sequence_t RelativeDistinguishedName_set_of[1] = {
921 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_RelativeDistinguishedName_item },
925 dissect_x509if_RelativeDistinguishedName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
926 #line 222 "x509if.cnf"
929 rdn_one_value = FALSE;
931 last_rdn = ep_alloc(MAX_DN_STR_LEN); *last_rdn = '\0';
934 offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
935 RelativeDistinguishedName_set_of, hf_index, ett_x509if_RelativeDistinguishedName);
938 /* we've finished - close the bracket */
939 proto_item_append_text(top_of_rdn, " (%s)", last_rdn);
941 /* now append this to the DN */
944 temp_dn = ep_alloc(MAX_DN_STR_LEN); /* is there a better way to use ep_alloc here ? */
945 g_snprintf(temp_dn, MAX_DN_STR_LEN, "%s,%s", last_rdn, last_dn);
947 g_strlcat(last_dn, temp_dn, MAX_DN_STR_LEN);
949 g_strlcat(last_dn, last_rdn, MAX_DN_STR_LEN);
954 last_rdn = NULL; /* it will get freed when the next packet is dissected */
964 dissect_x509if_RDNSequence_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
965 #line 285 "x509if.cnf"
968 /* this is the first element - record the top */
972 offset = dissect_x509if_RelativeDistinguishedName(implicit_tag, tvb, offset, pinfo, tree, hf_index);
981 static int dissect_RDNSequence_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
982 return dissect_x509if_RDNSequence_item(FALSE, tvb, offset, pinfo, tree, hf_x509if_RDNSequence_item);
986 static const ber_sequence_t RDNSequence_sequence_of[1] = {
987 { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_RDNSequence_item },
991 dissect_x509if_RDNSequence(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
992 #line 265 "x509if.cnf"
995 dn_one_rdn = FALSE; /* reset */
996 last_dn = ep_alloc(MAX_DN_STR_LEN); *last_dn = '\0';
999 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1000 RDNSequence_sequence_of, hf_index, ett_x509if_RDNSequence);
1003 /* we've finished - append the dn */
1004 proto_item_append_text(top_of_dn, " (%s)", last_dn);
1006 /* see if we should append this to the col info */
1007 if(check_col(pinfo->cinfo, COL_INFO) &&
1008 (fmt = val_to_str(hf_index, fmt_vals, "")) && *fmt) {
1009 /* we have a format */
1010 col_append_fstr(pinfo->cinfo, COL_INFO, " %s%s", fmt, last_dn);
1018 static int dissect_rdnSequence(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1019 return dissect_x509if_RDNSequence(FALSE, tvb, offset, pinfo, tree, hf_x509if_rdnSequence);
1023 const value_string x509if_Name_vals[] = {
1024 { 0, "rdnSequence" },
1028 static const ber_choice_t Name_choice[] = {
1029 { 0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_rdnSequence },
1030 { 0, 0, 0, 0, NULL }
1034 dissect_x509if_Name(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1035 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1036 Name_choice, hf_index, ett_x509if_Name,
1045 dissect_x509if_DistinguishedName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1046 offset = dissect_x509if_RDNSequence(implicit_tag, tvb, offset, pinfo, tree, hf_index);
1054 dissect_x509if_LocalName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1055 offset = dissect_x509if_RDNSequence(implicit_tag, tvb, offset, pinfo, tree, hf_index);
1059 static int dissect_base(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1060 return dissect_x509if_LocalName(FALSE, tvb, offset, pinfo, tree, hf_x509if_base);
1062 static int dissect_chopBefore(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1063 return dissect_x509if_LocalName(FALSE, tvb, offset, pinfo, tree, hf_x509if_chopBefore);
1065 static int dissect_chopAfter(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1066 return dissect_x509if_LocalName(FALSE, tvb, offset, pinfo, tree, hf_x509if_chopAfter);
1070 static const value_string x509if_T_specificExclusions_item_vals[] = {
1071 { 0, "chopBefore" },
1076 static const ber_choice_t T_specificExclusions_item_choice[] = {
1077 { 0, BER_CLASS_CON, 0, 0, dissect_chopBefore },
1078 { 1, BER_CLASS_CON, 1, 0, dissect_chopAfter },
1079 { 0, 0, 0, 0, NULL }
1083 dissect_x509if_T_specificExclusions_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1084 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1085 T_specificExclusions_item_choice, hf_index, ett_x509if_T_specificExclusions_item,
1090 static int dissect_specificExclusions_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1091 return dissect_x509if_T_specificExclusions_item(FALSE, tvb, offset, pinfo, tree, hf_x509if_specificExclusions_item);
1095 static const ber_sequence_t T_specificExclusions_set_of[1] = {
1096 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_specificExclusions_item },
1100 dissect_x509if_T_specificExclusions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1101 offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
1102 T_specificExclusions_set_of, hf_index, ett_x509if_T_specificExclusions);
1106 static int dissect_specificExclusions(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1107 return dissect_x509if_T_specificExclusions(FALSE, tvb, offset, pinfo, tree, hf_x509if_specificExclusions);
1113 dissect_x509if_BaseDistance(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1114 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1119 static int dissect_minimum(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1120 return dissect_x509if_BaseDistance(FALSE, tvb, offset, pinfo, tree, hf_x509if_minimum);
1122 static int dissect_maximum(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1123 return dissect_x509if_BaseDistance(FALSE, tvb, offset, pinfo, tree, hf_x509if_maximum);
1129 dissect_x509if_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1130 offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
1134 static int dissect_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1135 return dissect_x509if_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_x509if_item);
1137 static int dissect_nameForm(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1138 return dissect_x509if_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_x509if_nameForm);
1140 static int dissect_structuralObjectClass(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1141 return dissect_x509if_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_x509if_structuralObjectClass);
1143 static int dissect_auxiliaries_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1144 return dissect_x509if_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_x509if_auxiliaries_item);
1146 static int dissect_mandatoryContexts_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1147 return dissect_x509if_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_x509if_mandatoryContexts_item);
1149 static int dissect_optionalContexts_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1150 return dissect_x509if_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_x509if_optionalContexts_item);
1152 static int dissect_dmdId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1153 return dissect_x509if_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_x509if_dmdId);
1155 static int dissect_serviceType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1156 return dissect_x509if_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_x509if_serviceType);
1158 static int dissect_context(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1159 return dissect_x509if_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_x509if_context);
1161 static int dissect_mappingFunction(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1162 return dissect_x509if_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_x509if_mappingFunction);
1164 static int dissect_oldMatchingRule(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1165 return dissect_x509if_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_x509if_oldMatchingRule);
1167 static int dissect_newMatchingRule(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1168 return dissect_x509if_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_x509if_newMatchingRule);
1172 static const ber_sequence_t SET_OF_Refinement_set_of[1] = {
1173 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_refinement_and_item },
1177 dissect_x509if_SET_OF_Refinement(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1178 offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
1179 SET_OF_Refinement_set_of, hf_index, ett_x509if_SET_OF_Refinement);
1183 static int dissect_refinement_and(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1184 return dissect_x509if_SET_OF_Refinement(FALSE, tvb, offset, pinfo, tree, hf_x509if_refinement_and);
1186 static int dissect_refinement_or(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1187 return dissect_x509if_SET_OF_Refinement(FALSE, tvb, offset, pinfo, tree, hf_x509if_refinement_or);
1191 const value_string x509if_Refinement_vals[] = {
1199 static const ber_choice_t Refinement_choice[] = {
1200 { 0, BER_CLASS_CON, 0, 0, dissect_item },
1201 { 1, BER_CLASS_CON, 1, 0, dissect_refinement_and },
1202 { 2, BER_CLASS_CON, 2, 0, dissect_refinement_or },
1203 { 3, BER_CLASS_CON, 3, 0, dissect_refinement_not },
1204 { 0, 0, 0, 0, NULL }
1208 dissect_x509if_Refinement(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1209 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1210 Refinement_choice, hf_index, ett_x509if_Refinement,
1217 static const ber_sequence_t SubtreeSpecification_sequence[] = {
1218 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_base },
1219 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_specificExclusions },
1220 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_minimum },
1221 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_maximum },
1222 { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_specificationFilter },
1227 dissect_x509if_SubtreeSpecification(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1228 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1229 SubtreeSpecification_sequence, hf_index, ett_x509if_SubtreeSpecification);
1235 static const value_string x509if_T_chopSpecificExclusions_item_vals[] = {
1236 { 0, "chopBefore" },
1241 static const ber_choice_t T_chopSpecificExclusions_item_choice[] = {
1242 { 0, BER_CLASS_CON, 0, 0, dissect_chopBefore },
1243 { 1, BER_CLASS_CON, 1, 0, dissect_chopAfter },
1244 { 0, 0, 0, 0, NULL }
1248 dissect_x509if_T_chopSpecificExclusions_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1249 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1250 T_chopSpecificExclusions_item_choice, hf_index, ett_x509if_T_chopSpecificExclusions_item,
1255 static int dissect_chopSpecificExclusions_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1256 return dissect_x509if_T_chopSpecificExclusions_item(FALSE, tvb, offset, pinfo, tree, hf_x509if_chopSpecificExclusions_item);
1260 static const ber_sequence_t T_chopSpecificExclusions_set_of[1] = {
1261 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_chopSpecificExclusions_item },
1265 dissect_x509if_T_chopSpecificExclusions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1266 offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
1267 T_chopSpecificExclusions_set_of, hf_index, ett_x509if_T_chopSpecificExclusions);
1271 static int dissect_chopSpecificExclusions(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1272 return dissect_x509if_T_chopSpecificExclusions(FALSE, tvb, offset, pinfo, tree, hf_x509if_chopSpecificExclusions);
1276 static const ber_sequence_t ChopSpecification_sequence[] = {
1277 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_chopSpecificExclusions },
1278 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_minimum },
1279 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_maximum },
1284 dissect_x509if_ChopSpecification(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1285 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1286 ChopSpecification_sequence, hf_index, ett_x509if_ChopSpecification);
1292 static const value_string x509if_ObjectClassKind_vals[] = {
1294 { 1, "structural" },
1301 dissect_x509if_ObjectClassKind(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1302 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1309 const value_string x509if_AttributeUsage_vals[] = {
1310 { 0, "userApplications" },
1311 { 1, "directoryOperation" },
1312 { 2, "distributedOperation" },
1313 { 3, "dSAOperation" },
1319 dissect_x509if_AttributeUsage(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1320 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1329 dissect_x509if_RuleIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1330 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1335 static int dissect_ruleIdentifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1336 return dissect_x509if_RuleIdentifier(FALSE, tvb, offset, pinfo, tree, hf_x509if_ruleIdentifier);
1338 static int dissect_superiorStructureRules_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1339 return dissect_x509if_RuleIdentifier(FALSE, tvb, offset, pinfo, tree, hf_x509if_superiorStructureRules_item);
1343 static const ber_sequence_t SET_OF_RuleIdentifier_set_of[1] = {
1344 { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_superiorStructureRules_item },
1348 dissect_x509if_SET_OF_RuleIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1349 offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
1350 SET_OF_RuleIdentifier_set_of, hf_index, ett_x509if_SET_OF_RuleIdentifier);
1354 static int dissect_superiorStructureRules(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1355 return dissect_x509if_SET_OF_RuleIdentifier(FALSE, tvb, offset, pinfo, tree, hf_x509if_superiorStructureRules);
1359 static const ber_sequence_t DITStructureRule_sequence[] = {
1360 { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_ruleIdentifier },
1361 { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_nameForm },
1362 { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_superiorStructureRules },
1367 dissect_x509if_DITStructureRule(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1368 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1369 DITStructureRule_sequence, hf_index, ett_x509if_DITStructureRule);
1375 static const ber_sequence_t T_auxiliaries_set_of[1] = {
1376 { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_auxiliaries_item },
1380 dissect_x509if_T_auxiliaries(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1381 offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
1382 T_auxiliaries_set_of, hf_index, ett_x509if_T_auxiliaries);
1386 static int dissect_auxiliaries(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1387 return dissect_x509if_T_auxiliaries(FALSE, tvb, offset, pinfo, tree, hf_x509if_auxiliaries);
1391 static const ber_sequence_t SET_SIZE_1_MAX_OF_AttributeId_set_of[1] = {
1392 { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_mandatory_item },
1396 dissect_x509if_SET_SIZE_1_MAX_OF_AttributeId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1397 offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
1398 SET_SIZE_1_MAX_OF_AttributeId_set_of, hf_index, ett_x509if_SET_SIZE_1_MAX_OF_AttributeId);
1402 static int dissect_mandatory(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1403 return dissect_x509if_SET_SIZE_1_MAX_OF_AttributeId(FALSE, tvb, offset, pinfo, tree, hf_x509if_mandatory);
1405 static int dissect_optional(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1406 return dissect_x509if_SET_SIZE_1_MAX_OF_AttributeId(FALSE, tvb, offset, pinfo, tree, hf_x509if_optional);
1408 static int dissect_precluded(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1409 return dissect_x509if_SET_SIZE_1_MAX_OF_AttributeId(FALSE, tvb, offset, pinfo, tree, hf_x509if_precluded);
1413 static const ber_sequence_t DITContentRule_sequence[] = {
1414 { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_structuralObjectClass },
1415 { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_auxiliaries },
1416 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_mandatory },
1417 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_optional },
1418 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_precluded },
1423 dissect_x509if_DITContentRule(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1424 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1425 DITContentRule_sequence, hf_index, ett_x509if_DITContentRule);
1431 static const ber_sequence_t T_mandatoryContexts_set_of[1] = {
1432 { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_mandatoryContexts_item },
1436 dissect_x509if_T_mandatoryContexts(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1437 offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
1438 T_mandatoryContexts_set_of, hf_index, ett_x509if_T_mandatoryContexts);
1442 static int dissect_mandatoryContexts(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1443 return dissect_x509if_T_mandatoryContexts(FALSE, tvb, offset, pinfo, tree, hf_x509if_mandatoryContexts);
1447 static const ber_sequence_t T_optionalContexts_set_of[1] = {
1448 { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_optionalContexts_item },
1452 dissect_x509if_T_optionalContexts(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1453 offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
1454 T_optionalContexts_set_of, hf_index, ett_x509if_T_optionalContexts);
1458 static int dissect_optionalContexts(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1459 return dissect_x509if_T_optionalContexts(FALSE, tvb, offset, pinfo, tree, hf_x509if_optionalContexts);
1463 static const ber_sequence_t DITContextUse_sequence[] = {
1464 { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_attributeType },
1465 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_mandatoryContexts },
1466 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_optionalContexts },
1471 dissect_x509if_DITContextUse(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1472 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1473 DITContextUse_sequence, hf_index, ett_x509if_DITContextUse);
1481 dissect_x509if_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1482 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1487 static int dissect_id(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1488 return dissect_x509if_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_x509if_id);
1490 static int dissect_userClass(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1491 return dissect_x509if_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_x509if_userClass);
1493 static int dissect_default(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1494 return dissect_x509if_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_x509if_default);
1496 static int dissect_max(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1497 return dissect_x509if_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_x509if_max);
1499 static int dissect_maximum_relaxation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1500 return dissect_x509if_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_x509if_maximum_relaxation);
1502 static int dissect_minimum_relaxation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1503 return dissect_x509if_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_x509if_minimum_relaxation);
1505 static int dissect_level(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1506 return dissect_x509if_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_x509if_level);
1512 dissect_x509if_SelectedValues(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1513 #line 210 "x509if.cnf"
1514 offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
1520 static int dissect_ra_selectedValues_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1521 return dissect_x509if_SelectedValues(FALSE, tvb, offset, pinfo, tree, hf_x509if_ra_selectedValues_item);
1525 static const ber_sequence_t SEQUENCE_OF_SelectedValues_sequence_of[1] = {
1526 { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_ra_selectedValues_item },
1530 dissect_x509if_SEQUENCE_OF_SelectedValues(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1531 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1532 SEQUENCE_OF_SelectedValues_sequence_of, hf_index, ett_x509if_SEQUENCE_OF_SelectedValues);
1536 static int dissect_ra_selectedValues(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1537 return dissect_x509if_SEQUENCE_OF_SelectedValues(FALSE, tvb, offset, pinfo, tree, hf_x509if_ra_selectedValues);
1543 dissect_x509if_DefaultValueType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1544 offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_x509if_object_identifier_id, &object_identifier_id);
1548 static int dissect_entryType(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1549 return dissect_x509if_DefaultValueType(FALSE, tvb, offset, pinfo, tree, hf_x509if_entryType);
1555 dissect_x509if_DefaultValueValues(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1556 #line 216 "x509if.cnf"
1557 offset=call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
1563 static int dissect_ra_values_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1564 return dissect_x509if_DefaultValueValues(FALSE, tvb, offset, pinfo, tree, hf_x509if_ra_values_item);
1568 static const ber_sequence_t SEQUENCE_OF_DefaultValueValues_sequence_of[1] = {
1569 { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_ra_values_item },
1573 dissect_x509if_SEQUENCE_OF_DefaultValueValues(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1574 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1575 SEQUENCE_OF_DefaultValueValues_sequence_of, hf_index, ett_x509if_SEQUENCE_OF_DefaultValueValues);
1579 static int dissect_ra_values(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1580 return dissect_x509if_SEQUENCE_OF_DefaultValueValues(FALSE, tvb, offset, pinfo, tree, hf_x509if_ra_values);
1584 static const ber_sequence_t T_defaultValues_item_sequence[] = {
1585 { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_entryType },
1586 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ra_values },
1591 dissect_x509if_T_defaultValues_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1592 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1593 T_defaultValues_item_sequence, hf_index, ett_x509if_T_defaultValues_item);
1597 static int dissect_defaultValues_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1598 return dissect_x509if_T_defaultValues_item(FALSE, tvb, offset, pinfo, tree, hf_x509if_defaultValues_item);
1602 static const ber_sequence_t T_defaultValues_sequence_of[1] = {
1603 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_defaultValues_item },
1607 dissect_x509if_T_defaultValues(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1608 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1609 T_defaultValues_sequence_of, hf_index, ett_x509if_T_defaultValues);
1613 static int dissect_defaultValues(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1614 return dissect_x509if_T_defaultValues(FALSE, tvb, offset, pinfo, tree, hf_x509if_defaultValues);
1618 static const ber_sequence_t SEQUENCE_OF_AttributeValue_sequence_of[1] = {
1619 { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_contextValue_item },
1623 dissect_x509if_SEQUENCE_OF_AttributeValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1624 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1625 SEQUENCE_OF_AttributeValue_sequence_of, hf_index, ett_x509if_SEQUENCE_OF_AttributeValue);
1629 static int dissect_contextValue(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1630 return dissect_x509if_SEQUENCE_OF_AttributeValue(FALSE, tvb, offset, pinfo, tree, hf_x509if_contextValue);
1632 static int dissect_selectedValues(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1633 return dissect_x509if_SEQUENCE_OF_AttributeValue(FALSE, tvb, offset, pinfo, tree, hf_x509if_selectedValues);
1637 static const ber_sequence_t ContextProfile_sequence[] = {
1638 { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_contextType },
1639 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_contextValue },
1644 dissect_x509if_ContextProfile(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1645 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1646 ContextProfile_sequence, hf_index, ett_x509if_ContextProfile);
1650 static int dissect_contexts_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1651 return dissect_x509if_ContextProfile(FALSE, tvb, offset, pinfo, tree, hf_x509if_contexts_item);
1655 static const ber_sequence_t SEQUENCE_OF_ContextProfile_sequence_of[1] = {
1656 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_contexts_item },
1660 dissect_x509if_SEQUENCE_OF_ContextProfile(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1661 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1662 SEQUENCE_OF_ContextProfile_sequence_of, hf_index, ett_x509if_SEQUENCE_OF_ContextProfile);
1666 static int dissect_contexts(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1667 return dissect_x509if_SEQUENCE_OF_ContextProfile(FALSE, tvb, offset, pinfo, tree, hf_x509if_contexts);
1671 static const ber_sequence_t SEQUENCE_OF_ContextCombination_sequence_of[1] = {
1672 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_contextcombination_and_item },
1676 dissect_x509if_SEQUENCE_OF_ContextCombination(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1677 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1678 SEQUENCE_OF_ContextCombination_sequence_of, hf_index, ett_x509if_SEQUENCE_OF_ContextCombination);
1682 static int dissect_contextcombination_and(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1683 return dissect_x509if_SEQUENCE_OF_ContextCombination(FALSE, tvb, offset, pinfo, tree, hf_x509if_contextcombination_and);
1685 static int dissect_contextcombination_or(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1686 return dissect_x509if_SEQUENCE_OF_ContextCombination(FALSE, tvb, offset, pinfo, tree, hf_x509if_contextcombination_or);
1690 const value_string x509if_ContextCombination_vals[] = {
1698 static const ber_choice_t ContextCombination_choice[] = {
1699 { 0, BER_CLASS_CON, 0, 0, dissect_context },
1700 { 1, BER_CLASS_CON, 1, 0, dissect_contextcombination_and },
1701 { 2, BER_CLASS_CON, 2, 0, dissect_contextcombination_or },
1702 { 3, BER_CLASS_CON, 3, 0, dissect_contextcombination_not },
1703 { 0, 0, 0, 0, NULL }
1707 dissect_x509if_ContextCombination(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1708 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1709 ContextCombination_choice, hf_index, ett_x509if_ContextCombination,
1716 static const ber_sequence_t MatchingUse_sequence[] = {
1717 { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_restrictionType },
1718 { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_restrictionValue },
1723 dissect_x509if_MatchingUse(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1724 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1725 MatchingUse_sequence, hf_index, ett_x509if_MatchingUse);
1729 static int dissect_matchingUse_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1730 return dissect_x509if_MatchingUse(FALSE, tvb, offset, pinfo, tree, hf_x509if_matchingUse_item);
1734 static const ber_sequence_t SEQUENCE_OF_MatchingUse_sequence_of[1] = {
1735 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_matchingUse_item },
1739 dissect_x509if_SEQUENCE_OF_MatchingUse(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1740 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1741 SEQUENCE_OF_MatchingUse_sequence_of, hf_index, ett_x509if_SEQUENCE_OF_MatchingUse);
1745 static int dissect_matchingUse(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1746 return dissect_x509if_SEQUENCE_OF_MatchingUse(FALSE, tvb, offset, pinfo, tree, hf_x509if_matchingUse);
1750 static const ber_sequence_t RequestAttribute_sequence[] = {
1751 { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_attributeType },
1752 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_includeSubtypes },
1753 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_ra_selectedValues },
1754 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_defaultValues },
1755 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_contexts },
1756 { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_contextCombination },
1757 { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_matchingUse },
1762 dissect_x509if_RequestAttribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1763 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1764 RequestAttribute_sequence, hf_index, ett_x509if_RequestAttribute);
1768 static int dissect_inputAttributeTypes_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1769 return dissect_x509if_RequestAttribute(FALSE, tvb, offset, pinfo, tree, hf_x509if_inputAttributeTypes_item);
1773 static const ber_sequence_t SEQUENCE_OF_RequestAttribute_sequence_of[1] = {
1774 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_inputAttributeTypes_item },
1778 dissect_x509if_SEQUENCE_OF_RequestAttribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1779 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1780 SEQUENCE_OF_RequestAttribute_sequence_of, hf_index, ett_x509if_SEQUENCE_OF_RequestAttribute);
1784 static int dissect_inputAttributeTypes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1785 return dissect_x509if_SEQUENCE_OF_RequestAttribute(FALSE, tvb, offset, pinfo, tree, hf_x509if_inputAttributeTypes);
1789 static const ber_sequence_t SEQUENCE_OF_AttributeCombination_sequence_of[1] = {
1790 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_and_item },
1794 dissect_x509if_SEQUENCE_OF_AttributeCombination(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1795 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1796 SEQUENCE_OF_AttributeCombination_sequence_of, hf_index, ett_x509if_SEQUENCE_OF_AttributeCombination);
1800 static int dissect_and(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1801 return dissect_x509if_SEQUENCE_OF_AttributeCombination(FALSE, tvb, offset, pinfo, tree, hf_x509if_and);
1803 static int dissect_or(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1804 return dissect_x509if_SEQUENCE_OF_AttributeCombination(FALSE, tvb, offset, pinfo, tree, hf_x509if_or);
1808 const value_string x509if_AttributeCombination_vals[] = {
1816 static const ber_choice_t AttributeCombination_choice[] = {
1817 { 0, BER_CLASS_CON, 0, 0, dissect_attribute },
1818 { 1, BER_CLASS_CON, 1, 0, dissect_and },
1819 { 2, BER_CLASS_CON, 2, 0, dissect_or },
1820 { 3, BER_CLASS_CON, 3, 0, dissect_not },
1821 { 0, 0, 0, 0, NULL }
1825 dissect_x509if_AttributeCombination(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1826 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1827 AttributeCombination_choice, hf_index, ett_x509if_AttributeCombination,
1834 static const value_string x509if_T_outputValues_vals[] = {
1835 { 0, "selectedValues" },
1836 { 1, "matchedValuesOnly" },
1840 static const ber_choice_t T_outputValues_choice[] = {
1841 { 0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_selectedValues },
1842 { 1, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_matchedValuesOnly },
1843 { 0, 0, 0, 0, NULL }
1847 dissect_x509if_T_outputValues(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1848 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1849 T_outputValues_choice, hf_index, ett_x509if_T_outputValues,
1854 static int dissect_outputValues(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1855 return dissect_x509if_T_outputValues(FALSE, tvb, offset, pinfo, tree, hf_x509if_outputValues);
1859 static const ber_sequence_t ResultAttribute_sequence[] = {
1860 { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_attributeType },
1861 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_outputValues },
1862 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_contexts },
1867 dissect_x509if_ResultAttribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1868 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1869 ResultAttribute_sequence, hf_index, ett_x509if_ResultAttribute);
1873 static int dissect_outputAttributeTypes_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1874 return dissect_x509if_ResultAttribute(FALSE, tvb, offset, pinfo, tree, hf_x509if_outputAttributeTypes_item);
1878 static const ber_sequence_t SEQUENCE_OF_ResultAttribute_sequence_of[1] = {
1879 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_outputAttributeTypes_item },
1883 dissect_x509if_SEQUENCE_OF_ResultAttribute(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1884 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1885 SEQUENCE_OF_ResultAttribute_sequence_of, hf_index, ett_x509if_SEQUENCE_OF_ResultAttribute);
1889 static int dissect_outputAttributeTypes(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1890 return dissect_x509if_SEQUENCE_OF_ResultAttribute(FALSE, tvb, offset, pinfo, tree, hf_x509if_outputAttributeTypes);
1894 static const ber_sequence_t ControlOptions_sequence[] = {
1899 dissect_x509if_ControlOptions(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1900 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1901 ControlOptions_sequence, hf_index, ett_x509if_ControlOptions);
1905 static int dissect_defaultControls(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1906 return dissect_x509if_ControlOptions(FALSE, tvb, offset, pinfo, tree, hf_x509if_defaultControls);
1908 static int dissect_mandatoryControls(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1909 return dissect_x509if_ControlOptions(FALSE, tvb, offset, pinfo, tree, hf_x509if_mandatoryControls);
1911 static int dissect_searchRuleControls(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1912 return dissect_x509if_ControlOptions(FALSE, tvb, offset, pinfo, tree, hf_x509if_searchRuleControls);
1916 static const ber_sequence_t Mapping_sequence[] = {
1917 { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_mappingFunction },
1918 { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_level },
1923 dissect_x509if_Mapping(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1924 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1925 Mapping_sequence, hf_index, ett_x509if_Mapping);
1929 static int dissect_mapping_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1930 return dissect_x509if_Mapping(FALSE, tvb, offset, pinfo, tree, hf_x509if_mapping_item);
1934 static const ber_sequence_t SEQUENCE_OF_Mapping_sequence_of[1] = {
1935 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_mapping_item },
1939 dissect_x509if_SEQUENCE_OF_Mapping(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1940 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1941 SEQUENCE_OF_Mapping_sequence_of, hf_index, ett_x509if_SEQUENCE_OF_Mapping);
1945 static int dissect_mapping(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1946 return dissect_x509if_SEQUENCE_OF_Mapping(FALSE, tvb, offset, pinfo, tree, hf_x509if_mapping);
1950 static const ber_sequence_t MRSubstitution_sequence[] = {
1951 { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_attribute },
1952 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_oldMatchingRule },
1953 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_newMatchingRule },
1958 dissect_x509if_MRSubstitution(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1959 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1960 MRSubstitution_sequence, hf_index, ett_x509if_MRSubstitution);
1964 static int dissect_substitution_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1965 return dissect_x509if_MRSubstitution(FALSE, tvb, offset, pinfo, tree, hf_x509if_substitution_item);
1969 static const ber_sequence_t SEQUENCE_OF_MRSubstitution_sequence_of[1] = {
1970 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_substitution_item },
1974 dissect_x509if_SEQUENCE_OF_MRSubstitution(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1975 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1976 SEQUENCE_OF_MRSubstitution_sequence_of, hf_index, ett_x509if_SEQUENCE_OF_MRSubstitution);
1980 static int dissect_substitution(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1981 return dissect_x509if_SEQUENCE_OF_MRSubstitution(FALSE, tvb, offset, pinfo, tree, hf_x509if_substitution);
1985 static const ber_sequence_t MRMapping_sequence[] = {
1986 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_mapping },
1987 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_substitution },
1992 dissect_x509if_MRMapping(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
1993 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1994 MRMapping_sequence, hf_index, ett_x509if_MRMapping);
1998 static int dissect_basic(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
1999 return dissect_x509if_MRMapping(FALSE, tvb, offset, pinfo, tree, hf_x509if_basic);
2001 static int dissect_tightenings_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2002 return dissect_x509if_MRMapping(FALSE, tvb, offset, pinfo, tree, hf_x509if_tightenings_item);
2004 static int dissect_relaxations_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2005 return dissect_x509if_MRMapping(FALSE, tvb, offset, pinfo, tree, hf_x509if_relaxations_item);
2009 static const ber_sequence_t SEQUENCE_OF_MRMapping_sequence_of[1] = {
2010 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_tightenings_item },
2014 dissect_x509if_SEQUENCE_OF_MRMapping(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2015 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2016 SEQUENCE_OF_MRMapping_sequence_of, hf_index, ett_x509if_SEQUENCE_OF_MRMapping);
2020 static int dissect_tightenings(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2021 return dissect_x509if_SEQUENCE_OF_MRMapping(FALSE, tvb, offset, pinfo, tree, hf_x509if_tightenings);
2023 static int dissect_relaxations(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2024 return dissect_x509if_SEQUENCE_OF_MRMapping(FALSE, tvb, offset, pinfo, tree, hf_x509if_relaxations);
2028 static const ber_sequence_t RelaxationPolicy_sequence[] = {
2029 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_basic },
2030 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_tightenings },
2031 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_relaxations },
2032 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_maximum_relaxation },
2033 { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_minimum_relaxation },
2038 dissect_x509if_RelaxationPolicy(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2039 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2040 RelaxationPolicy_sequence, hf_index, ett_x509if_RelaxationPolicy);
2044 static int dissect_relaxation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2045 return dissect_x509if_RelaxationPolicy(FALSE, tvb, offset, pinfo, tree, hf_x509if_relaxation);
2049 static const ber_sequence_t SEQUENCE_OF_AttributeType_sequence_of[1] = {
2050 { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_additionalControl_item },
2054 dissect_x509if_SEQUENCE_OF_AttributeType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2055 offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2056 SEQUENCE_OF_AttributeType_sequence_of, hf_index, ett_x509if_SEQUENCE_OF_AttributeType);
2060 static int dissect_additionalControl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2061 return dissect_x509if_SEQUENCE_OF_AttributeType(FALSE, tvb, offset, pinfo, tree, hf_x509if_additionalControl);
2065 static const asn_namedbit AllowedSubset_bits[] = {
2066 { 0, &hf_x509if_AllowedSubset_baseObject, -1, -1, "baseObject", NULL },
2067 { 1, &hf_x509if_AllowedSubset_oneLevel, -1, -1, "oneLevel", NULL },
2068 { 2, &hf_x509if_AllowedSubset_wholeSubtree, -1, -1, "wholeSubtree", NULL },
2069 { 0, NULL, 0, 0, NULL, NULL }
2073 dissect_x509if_AllowedSubset(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2074 offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
2075 AllowedSubset_bits, hf_index, ett_x509if_AllowedSubset,
2080 static int dissect_allowedSubset(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2081 return dissect_x509if_AllowedSubset(FALSE, tvb, offset, pinfo, tree, hf_x509if_allowedSubset);
2085 const value_string x509if_ImposedSubset_vals[] = {
2086 { 0, "baseObject" },
2088 { 2, "wholeSubtree" },
2094 dissect_x509if_ImposedSubset(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2095 offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2100 static int dissect_imposedSubset(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2101 return dissect_x509if_ImposedSubset(FALSE, tvb, offset, pinfo, tree, hf_x509if_imposedSubset);
2105 static const ber_sequence_t EntryLimit_sequence[] = {
2106 { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_default },
2107 { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_max },
2112 dissect_x509if_EntryLimit(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2113 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2114 EntryLimit_sequence, hf_index, ett_x509if_EntryLimit);
2118 static int dissect_entryLimit(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2119 return dissect_x509if_EntryLimit(FALSE, tvb, offset, pinfo, tree, hf_x509if_entryLimit);
2123 static const ber_sequence_t SET_OF_DirectoryString_set_of[1] = {
2124 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_name_item },
2128 dissect_x509if_SET_OF_DirectoryString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2129 offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
2130 SET_OF_DirectoryString_set_of, hf_index, ett_x509if_SET_OF_DirectoryString);
2134 static int dissect_name(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
2135 return dissect_x509if_SET_OF_DirectoryString(FALSE, tvb, offset, pinfo, tree, hf_x509if_name);
2139 static const ber_sequence_t SearchRuleDescription_sequence[] = {
2140 { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_id },
2141 { BER_CLASS_CON, 0, 0, dissect_dmdId },
2142 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_serviceType },
2143 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_userClass },
2144 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_inputAttributeTypes },
2145 { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_attributeCombination },
2146 { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_outputAttributeTypes },
2147 { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_defaultControls },
2148 { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_mandatoryControls },
2149 { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_searchRuleControls },
2150 { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL, dissect_relaxation },
2151 { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL, dissect_additionalControl },
2152 { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL, dissect_allowedSubset },
2153 { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL, dissect_imposedSubset },
2154 { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL, dissect_entryLimit },
2155 { BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL, dissect_name },
2156 { BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL, dissect_description },
2157 { BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL, dissect_obsolete },
2162 dissect_x509if_SearchRuleDescription(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2163 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2164 SearchRuleDescription_sequence, hf_index, ett_x509if_SearchRuleDescription);
2170 static const ber_sequence_t SearchRule_sequence[] = {
2171 { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_id },
2172 { BER_CLASS_CON, 0, 0, dissect_dmdId },
2173 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_serviceType },
2174 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_userClass },
2175 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_inputAttributeTypes },
2176 { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_attributeCombination },
2177 { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_outputAttributeTypes },
2178 { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_defaultControls },
2179 { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_mandatoryControls },
2180 { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_searchRuleControls },
2181 { BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL, dissect_relaxation },
2182 { BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL, dissect_additionalControl },
2183 { BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL, dissect_allowedSubset },
2184 { BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL, dissect_imposedSubset },
2185 { BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL, dissect_entryLimit },
2190 dissect_x509if_SearchRule(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2191 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2192 SearchRule_sequence, hf_index, ett_x509if_SearchRule);
2198 static const ber_sequence_t SearchRuleId_sequence[] = {
2199 { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_id },
2200 { BER_CLASS_CON, 0, 0, dissect_dmdId },
2205 dissect_x509if_SearchRuleId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2206 offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2207 SearchRuleId_sequence, hf_index, ett_x509if_SearchRuleId);
2213 const value_string x509if_OutputValues_vals[] = {
2214 { 0, "selectedValues" },
2215 { 1, "matchedValuesOnly" },
2219 static const ber_choice_t OutputValues_choice[] = {
2220 { 0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_selectedValues },
2221 { 1, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_matchedValuesOnly },
2222 { 0, 0, 0, 0, NULL }
2226 dissect_x509if_OutputValues(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
2227 offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2228 OutputValues_choice, hf_index, ett_x509if_OutputValues,
2236 static void dissect_Name_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
2237 dissect_x509if_Name(FALSE, tvb, 0, pinfo, tree, hf_x509if_Name_PDU);
2239 static void dissect_DistinguishedName_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
2240 dissect_x509if_DistinguishedName(FALSE, tvb, 0, pinfo, tree, hf_x509if_DistinguishedName_PDU);
2244 /*--- End of included file: packet-x509if-fn.c ---*/
2245 #line 77 "packet-x509if-template.c"
2247 const char * x509if_get_last_dn(void)
2252 gboolean x509if_register_fmt(int hf_index, const gchar *fmt)
2256 if(idx < (MAX_FMT_VALS - 1)) {
2258 fmt_vals[idx].value = hf_index;
2259 fmt_vals[idx].strptr = fmt;
2263 fmt_vals[idx].value = 0;
2264 fmt_vals[idx].strptr = NULL;
2269 return FALSE; /* couldn't register it */
2273 const char * x509if_get_last_ava(void)
2278 /*--- proto_register_x509if ----------------------------------------------*/
2279 void proto_register_x509if(void) {
2281 /* List of fields */
2282 static hf_register_info hf[] = {
2283 { &hf_x509if_object_identifier_id,
2284 { "Id", "x509if.id", FT_OID, BASE_NONE, NULL, 0,
2285 "Object identifier Id", HFILL }},
2286 { &hf_x509if_any_string,
2287 { "AnyString", "x509if.any.String", FT_BYTES, BASE_HEX,
2288 NULL, 0, "This is any String", HFILL }},
2291 /*--- Included file: packet-x509if-hfarr.c ---*/
2292 #line 1 "packet-x509if-hfarr.c"
2293 { &hf_x509if_Name_PDU,
2294 { "Name", "x509if.Name",
2295 FT_UINT32, BASE_DEC, VALS(x509if_Name_vals), 0,
2297 { &hf_x509if_DistinguishedName_PDU,
2298 { "DistinguishedName", "x509if.DistinguishedName",
2299 FT_UINT32, BASE_DEC, NULL, 0,
2300 "DistinguishedName", HFILL }},
2302 { "type", "x509if.type",
2303 FT_OID, BASE_NONE, NULL, 0,
2305 { &hf_x509if_values,
2306 { "values", "x509if.values",
2307 FT_UINT32, BASE_DEC, NULL, 0,
2308 "Attribute/values", HFILL }},
2309 { &hf_x509if_values_item,
2310 { "Item", "x509if.values_item",
2311 FT_NONE, BASE_NONE, NULL, 0,
2312 "Attribute/values/_item", HFILL }},
2313 { &hf_x509if_valuesWithContext,
2314 { "valuesWithContext", "x509if.valuesWithContext",
2315 FT_UINT32, BASE_DEC, NULL, 0,
2316 "Attribute/valuesWithContext", HFILL }},
2317 { &hf_x509if_valuesWithContext_item,
2318 { "Item", "x509if.valuesWithContext_item",
2319 FT_NONE, BASE_NONE, NULL, 0,
2320 "Attribute/valuesWithContext/_item", HFILL }},
2322 { "value", "x509if.value",
2323 FT_NONE, BASE_NONE, NULL, 0,
2324 "Attribute/valuesWithContext/_item/value", HFILL }},
2325 { &hf_x509if_contextList,
2326 { "contextList", "x509if.contextList",
2327 FT_UINT32, BASE_DEC, NULL, 0,
2329 { &hf_x509if_contextList_item,
2330 { "Item", "x509if.contextList_item",
2331 FT_NONE, BASE_NONE, NULL, 0,
2333 { &hf_x509if_contextType,
2334 { "contextType", "x509if.contextType",
2335 FT_OID, BASE_NONE, NULL, 0,
2337 { &hf_x509if_contextValues,
2338 { "contextValues", "x509if.contextValues",
2339 FT_UINT32, BASE_DEC, NULL, 0,
2340 "Context/contextValues", HFILL }},
2341 { &hf_x509if_contextValues_item,
2342 { "Item", "x509if.contextValues_item",
2343 FT_NONE, BASE_NONE, NULL, 0,
2344 "Context/contextValues/_item", HFILL }},
2345 { &hf_x509if_fallback,
2346 { "fallback", "x509if.fallback",
2347 FT_BOOLEAN, 8, NULL, 0,
2348 "Context/fallback", HFILL }},
2349 { &hf_x509if_assertion,
2350 { "assertion", "x509if.assertion",
2351 FT_NONE, BASE_NONE, NULL, 0,
2352 "AttributeValueAssertion/assertion", HFILL }},
2353 { &hf_x509if_assertedContexts,
2354 { "assertedContexts", "x509if.assertedContexts",
2355 FT_UINT32, BASE_DEC, VALS(x509if_T_assertedContexts_vals), 0,
2356 "AttributeValueAssertion/assertedContexts", HFILL }},
2357 { &hf_x509if_allContexts,
2358 { "allContexts", "x509if.allContexts",
2359 FT_NONE, BASE_NONE, NULL, 0,
2360 "AttributeValueAssertion/assertedContexts/allContexts", HFILL }},
2361 { &hf_x509if_selectedContexts,
2362 { "selectedContexts", "x509if.selectedContexts",
2363 FT_UINT32, BASE_DEC, NULL, 0,
2364 "AttributeValueAssertion/assertedContexts/selectedContexts", HFILL }},
2365 { &hf_x509if_selectedContexts_item,
2366 { "Item", "x509if.selectedContexts_item",
2367 FT_NONE, BASE_NONE, NULL, 0,
2368 "AttributeValueAssertion/assertedContexts/selectedContexts/_item", HFILL }},
2369 { &hf_x509if_ca_contextType,
2370 { "contextType", "x509if.contextType",
2371 FT_OID, BASE_NONE, NULL, 0,
2372 "ContextAssertion/contextType", HFILL }},
2373 { &hf_x509if_ca_contextValues,
2374 { "contextValues", "x509if.contextValues",
2375 FT_UINT32, BASE_DEC, NULL, 0,
2376 "ContextAssertion/contextValues", HFILL }},
2377 { &hf_x509if_ca_contextValues_item,
2378 { "Item", "x509if.contextValues_item",
2379 FT_NONE, BASE_NONE, NULL, 0,
2380 "ContextAssertion/contextValues/_item", HFILL }},
2381 { &hf_x509if_ata_assertedContexts,
2382 { "assertedContexts", "x509if.assertedContexts",
2383 FT_UINT32, BASE_DEC, NULL, 0,
2384 "AttributeTypeAssertion/assertedContexts", HFILL }},
2385 { &hf_x509if_assertedContexts_item,
2386 { "Item", "x509if.assertedContexts_item",
2387 FT_NONE, BASE_NONE, NULL, 0,
2388 "AttributeTypeAssertion/assertedContexts/_item", HFILL }},
2389 { &hf_x509if_rdnSequence,
2390 { "rdnSequence", "x509if.rdnSequence",
2391 FT_UINT32, BASE_DEC, NULL, 0,
2392 "Name/rdnSequence", HFILL }},
2393 { &hf_x509if_RDNSequence_item,
2394 { "Item", "x509if.RDNSequence_item",
2395 FT_UINT32, BASE_DEC, NULL, 0,
2396 "RDNSequence/_item", HFILL }},
2397 { &hf_x509if_RelativeDistinguishedName_item,
2398 { "Item", "x509if.RelativeDistinguishedName_item",
2399 FT_NONE, BASE_NONE, NULL, 0,
2400 "RelativeDistinguishedName/_item", HFILL }},
2401 { &hf_x509if_atadv_value,
2402 { "value", "x509if.value",
2403 FT_NONE, BASE_NONE, NULL, 0,
2404 "AttributeTypeAndDistinguishedValue/value", HFILL }},
2405 { &hf_x509if_primaryDistinguished,
2406 { "primaryDistinguished", "x509if.primaryDistinguished",
2407 FT_BOOLEAN, 8, NULL, 0,
2408 "AttributeTypeAndDistinguishedValue/primaryDistinguished", HFILL }},
2409 { &hf_x509if_valueswithContext,
2410 { "valuesWithContext", "x509if.valuesWithContext",
2411 FT_UINT32, BASE_DEC, NULL, 0,
2412 "AttributeTypeAndDistinguishedValue/valuesWithContext", HFILL }},
2413 { &hf_x509if_valueswithContext_item,
2414 { "Item", "x509if.valuesWithContext_item",
2415 FT_NONE, BASE_NONE, NULL, 0,
2416 "AttributeTypeAndDistinguishedValue/valuesWithContext/_item", HFILL }},
2417 { &hf_x509if_distingAttrValue,
2418 { "distingAttrValue", "x509if.distingAttrValue",
2419 FT_NONE, BASE_NONE, NULL, 0,
2420 "AttributeTypeAndDistinguishedValue/valuesWithContext/_item/distingAttrValue", HFILL }},
2422 { "base", "x509if.base",
2423 FT_UINT32, BASE_DEC, NULL, 0,
2424 "SubtreeSpecification/base", HFILL }},
2425 { &hf_x509if_specificExclusions,
2426 { "specificExclusions", "x509if.specificExclusions",
2427 FT_UINT32, BASE_DEC, NULL, 0,
2428 "SubtreeSpecification/specificExclusions", HFILL }},
2429 { &hf_x509if_specificExclusions_item,
2430 { "Item", "x509if.specificExclusions_item",
2431 FT_UINT32, BASE_DEC, VALS(x509if_T_specificExclusions_item_vals), 0,
2432 "SubtreeSpecification/specificExclusions/_item", HFILL }},
2433 { &hf_x509if_chopBefore,
2434 { "chopBefore", "x509if.chopBefore",
2435 FT_UINT32, BASE_DEC, NULL, 0,
2437 { &hf_x509if_chopAfter,
2438 { "chopAfter", "x509if.chopAfter",
2439 FT_UINT32, BASE_DEC, NULL, 0,
2441 { &hf_x509if_minimum,
2442 { "minimum", "x509if.minimum",
2443 FT_INT32, BASE_DEC, NULL, 0,
2445 { &hf_x509if_maximum,
2446 { "maximum", "x509if.maximum",
2447 FT_INT32, BASE_DEC, NULL, 0,
2449 { &hf_x509if_specificationFilter,
2450 { "specificationFilter", "x509if.specificationFilter",
2451 FT_UINT32, BASE_DEC, VALS(x509if_Refinement_vals), 0,
2452 "SubtreeSpecification/specificationFilter", HFILL }},
2453 { &hf_x509if_chopSpecificExclusions,
2454 { "specificExclusions", "x509if.specificExclusions",
2455 FT_UINT32, BASE_DEC, NULL, 0,
2456 "ChopSpecification/specificExclusions", HFILL }},
2457 { &hf_x509if_chopSpecificExclusions_item,
2458 { "Item", "x509if.specificExclusions_item",
2459 FT_UINT32, BASE_DEC, VALS(x509if_T_chopSpecificExclusions_item_vals), 0,
2460 "ChopSpecification/specificExclusions/_item", HFILL }},
2462 { "item", "x509if.item",
2463 FT_OID, BASE_NONE, NULL, 0,
2464 "Refinement/item", HFILL }},
2465 { &hf_x509if_refinement_and,
2466 { "and", "x509if.and",
2467 FT_UINT32, BASE_DEC, NULL, 0,
2468 "Refinement/and", HFILL }},
2469 { &hf_x509if_refinement_and_item,
2470 { "Item", "x509if.and_item",
2471 FT_UINT32, BASE_DEC, VALS(x509if_Refinement_vals), 0,
2472 "Refinement/and/_item", HFILL }},
2473 { &hf_x509if_refinement_or,
2474 { "or", "x509if.or",
2475 FT_UINT32, BASE_DEC, NULL, 0,
2476 "Refinement/or", HFILL }},
2477 { &hf_x509if_refinement_or_item,
2478 { "Item", "x509if.or_item",
2479 FT_UINT32, BASE_DEC, VALS(x509if_Refinement_vals), 0,
2480 "Refinement/or/_item", HFILL }},
2481 { &hf_x509if_refinement_not,
2482 { "not", "x509if.not",
2483 FT_UINT32, BASE_DEC, VALS(x509if_Refinement_vals), 0,
2484 "Refinement/not", HFILL }},
2485 { &hf_x509if_ruleIdentifier,
2486 { "ruleIdentifier", "x509if.ruleIdentifier",
2487 FT_INT32, BASE_DEC, NULL, 0,
2488 "DITStructureRule/ruleIdentifier", HFILL }},
2489 { &hf_x509if_nameForm,
2490 { "nameForm", "x509if.nameForm",
2491 FT_OID, BASE_NONE, NULL, 0,
2492 "DITStructureRule/nameForm", HFILL }},
2493 { &hf_x509if_superiorStructureRules,
2494 { "superiorStructureRules", "x509if.superiorStructureRules",
2495 FT_UINT32, BASE_DEC, NULL, 0,
2496 "DITStructureRule/superiorStructureRules", HFILL }},
2497 { &hf_x509if_superiorStructureRules_item,
2498 { "Item", "x509if.superiorStructureRules_item",
2499 FT_INT32, BASE_DEC, NULL, 0,
2500 "DITStructureRule/superiorStructureRules/_item", HFILL }},
2501 { &hf_x509if_structuralObjectClass,
2502 { "structuralObjectClass", "x509if.structuralObjectClass",
2503 FT_OID, BASE_NONE, NULL, 0,
2504 "DITContentRule/structuralObjectClass", HFILL }},
2505 { &hf_x509if_auxiliaries,
2506 { "auxiliaries", "x509if.auxiliaries",
2507 FT_UINT32, BASE_DEC, NULL, 0,
2508 "DITContentRule/auxiliaries", HFILL }},
2509 { &hf_x509if_auxiliaries_item,
2510 { "Item", "x509if.auxiliaries_item",
2511 FT_OID, BASE_NONE, NULL, 0,
2512 "DITContentRule/auxiliaries/_item", HFILL }},
2513 { &hf_x509if_mandatory,
2514 { "mandatory", "x509if.mandatory",
2515 FT_UINT32, BASE_DEC, NULL, 0,
2516 "DITContentRule/mandatory", HFILL }},
2517 { &hf_x509if_mandatory_item,
2518 { "Item", "x509if.mandatory_item",
2519 FT_OID, BASE_NONE, NULL, 0,
2520 "DITContentRule/mandatory/_item", HFILL }},
2521 { &hf_x509if_optional,
2522 { "optional", "x509if.optional",
2523 FT_UINT32, BASE_DEC, NULL, 0,
2524 "DITContentRule/optional", HFILL }},
2525 { &hf_x509if_optional_item,
2526 { "Item", "x509if.optional_item",
2527 FT_OID, BASE_NONE, NULL, 0,
2528 "DITContentRule/optional/_item", HFILL }},
2529 { &hf_x509if_precluded,
2530 { "precluded", "x509if.precluded",
2531 FT_UINT32, BASE_DEC, NULL, 0,
2532 "DITContentRule/precluded", HFILL }},
2533 { &hf_x509if_precluded_item,
2534 { "Item", "x509if.precluded_item",
2535 FT_OID, BASE_NONE, NULL, 0,
2536 "DITContentRule/precluded/_item", HFILL }},
2537 { &hf_x509if_attributeType,
2538 { "attributeType", "x509if.attributeType",
2539 FT_OID, BASE_NONE, NULL, 0,
2541 { &hf_x509if_mandatoryContexts,
2542 { "mandatoryContexts", "x509if.mandatoryContexts",
2543 FT_UINT32, BASE_DEC, NULL, 0,
2544 "DITContextUse/mandatoryContexts", HFILL }},
2545 { &hf_x509if_mandatoryContexts_item,
2546 { "Item", "x509if.mandatoryContexts_item",
2547 FT_OID, BASE_NONE, NULL, 0,
2548 "DITContextUse/mandatoryContexts/_item", HFILL }},
2549 { &hf_x509if_optionalContexts,
2550 { "optionalContexts", "x509if.optionalContexts",
2551 FT_UINT32, BASE_DEC, NULL, 0,
2552 "DITContextUse/optionalContexts", HFILL }},
2553 { &hf_x509if_optionalContexts_item,
2554 { "Item", "x509if.optionalContexts_item",
2555 FT_OID, BASE_NONE, NULL, 0,
2556 "DITContextUse/optionalContexts/_item", HFILL }},
2558 { "id", "x509if.id",
2559 FT_INT32, BASE_DEC, NULL, 0,
2562 { "dmdId", "x509if.dmdId",
2563 FT_OID, BASE_NONE, NULL, 0,
2565 { &hf_x509if_serviceType,
2566 { "serviceType", "x509if.serviceType",
2567 FT_OID, BASE_NONE, NULL, 0,
2569 { &hf_x509if_userClass,
2570 { "userClass", "x509if.userClass",
2571 FT_INT32, BASE_DEC, NULL, 0,
2573 { &hf_x509if_inputAttributeTypes,
2574 { "inputAttributeTypes", "x509if.inputAttributeTypes",
2575 FT_UINT32, BASE_DEC, NULL, 0,
2577 { &hf_x509if_inputAttributeTypes_item,
2578 { "Item", "x509if.inputAttributeTypes_item",
2579 FT_NONE, BASE_NONE, NULL, 0,
2581 { &hf_x509if_attributeCombination,
2582 { "attributeCombination", "x509if.attributeCombination",
2583 FT_UINT32, BASE_DEC, VALS(x509if_AttributeCombination_vals), 0,
2585 { &hf_x509if_outputAttributeTypes,
2586 { "outputAttributeTypes", "x509if.outputAttributeTypes",
2587 FT_UINT32, BASE_DEC, NULL, 0,
2589 { &hf_x509if_outputAttributeTypes_item,
2590 { "Item", "x509if.outputAttributeTypes_item",
2591 FT_NONE, BASE_NONE, NULL, 0,
2593 { &hf_x509if_defaultControls,
2594 { "defaultControls", "x509if.defaultControls",
2595 FT_NONE, BASE_NONE, NULL, 0,
2597 { &hf_x509if_mandatoryControls,
2598 { "mandatoryControls", "x509if.mandatoryControls",
2599 FT_NONE, BASE_NONE, NULL, 0,
2601 { &hf_x509if_searchRuleControls,
2602 { "searchRuleControls", "x509if.searchRuleControls",
2603 FT_NONE, BASE_NONE, NULL, 0,
2605 { &hf_x509if_relaxation,
2606 { "relaxation", "x509if.relaxation",
2607 FT_NONE, BASE_NONE, NULL, 0,
2609 { &hf_x509if_additionalControl,
2610 { "additionalControl", "x509if.additionalControl",
2611 FT_UINT32, BASE_DEC, NULL, 0,
2613 { &hf_x509if_additionalControl_item,
2614 { "Item", "x509if.additionalControl_item",
2615 FT_OID, BASE_NONE, NULL, 0,
2617 { &hf_x509if_allowedSubset,
2618 { "allowedSubset", "x509if.allowedSubset",
2619 FT_BYTES, BASE_HEX, NULL, 0,
2621 { &hf_x509if_imposedSubset,
2622 { "imposedSubset", "x509if.imposedSubset",
2623 FT_UINT32, BASE_DEC, VALS(x509if_ImposedSubset_vals), 0,
2625 { &hf_x509if_entryLimit,
2626 { "entryLimit", "x509if.entryLimit",
2627 FT_NONE, BASE_NONE, NULL, 0,
2630 { "name", "x509if.name",
2631 FT_UINT32, BASE_DEC, NULL, 0,
2632 "SearchRuleDescription/name", HFILL }},
2633 { &hf_x509if_name_item,
2634 { "Item", "x509if.name_item",
2635 FT_UINT32, BASE_DEC, VALS(x509sat_DirectoryString_vals), 0,
2636 "SearchRuleDescription/name/_item", HFILL }},
2637 { &hf_x509if_description,
2638 { "description", "x509if.description",
2639 FT_UINT32, BASE_DEC, VALS(x509sat_DirectoryString_vals), 0,
2640 "SearchRuleDescription/description", HFILL }},
2641 { &hf_x509if_obsolete,
2642 { "obsolete", "x509if.obsolete",
2643 FT_BOOLEAN, 8, NULL, 0,
2644 "SearchRuleDescription/obsolete", HFILL }},
2645 { &hf_x509if_includeSubtypes,
2646 { "includeSubtypes", "x509if.includeSubtypes",
2647 FT_BOOLEAN, 8, NULL, 0,
2648 "RequestAttribute/includeSubtypes", HFILL }},
2649 { &hf_x509if_ra_selectedValues,
2650 { "selectedValues", "x509if.selectedValues",
2651 FT_UINT32, BASE_DEC, NULL, 0,
2652 "RequestAttribute/selectedValues", HFILL }},
2653 { &hf_x509if_ra_selectedValues_item,
2654 { "Item", "x509if.selectedValues_item",
2655 FT_NONE, BASE_NONE, NULL, 0,
2656 "RequestAttribute/selectedValues/_item", HFILL }},
2657 { &hf_x509if_defaultValues,
2658 { "defaultValues", "x509if.defaultValues",
2659 FT_UINT32, BASE_DEC, NULL, 0,
2660 "RequestAttribute/defaultValues", HFILL }},
2661 { &hf_x509if_defaultValues_item,
2662 { "Item", "x509if.defaultValues_item",
2663 FT_NONE, BASE_NONE, NULL, 0,
2664 "RequestAttribute/defaultValues/_item", HFILL }},
2665 { &hf_x509if_entryType,
2666 { "entryType", "x509if.entryType",
2667 FT_OID, BASE_NONE, NULL, 0,
2668 "RequestAttribute/defaultValues/_item/entryType", HFILL }},
2669 { &hf_x509if_ra_values,
2670 { "values", "x509if.values",
2671 FT_UINT32, BASE_DEC, NULL, 0,
2672 "RequestAttribute/defaultValues/_item/values", HFILL }},
2673 { &hf_x509if_ra_values_item,
2674 { "Item", "x509if.values_item",
2675 FT_NONE, BASE_NONE, NULL, 0,
2676 "RequestAttribute/defaultValues/_item/values/_item", HFILL }},
2677 { &hf_x509if_contexts,
2678 { "contexts", "x509if.contexts",
2679 FT_UINT32, BASE_DEC, NULL, 0,
2681 { &hf_x509if_contexts_item,
2682 { "Item", "x509if.contexts_item",
2683 FT_NONE, BASE_NONE, NULL, 0,
2685 { &hf_x509if_contextCombination,
2686 { "contextCombination", "x509if.contextCombination",
2687 FT_UINT32, BASE_DEC, VALS(x509if_ContextCombination_vals), 0,
2688 "RequestAttribute/contextCombination", HFILL }},
2689 { &hf_x509if_matchingUse,
2690 { "matchingUse", "x509if.matchingUse",
2691 FT_UINT32, BASE_DEC, NULL, 0,
2692 "RequestAttribute/matchingUse", HFILL }},
2693 { &hf_x509if_matchingUse_item,
2694 { "Item", "x509if.matchingUse_item",
2695 FT_NONE, BASE_NONE, NULL, 0,
2696 "RequestAttribute/matchingUse/_item", HFILL }},
2697 { &hf_x509if_contextValue,
2698 { "contextValue", "x509if.contextValue",
2699 FT_UINT32, BASE_DEC, NULL, 0,
2700 "ContextProfile/contextValue", HFILL }},
2701 { &hf_x509if_contextValue_item,
2702 { "Item", "x509if.contextValue_item",
2703 FT_NONE, BASE_NONE, NULL, 0,
2704 "ContextProfile/contextValue/_item", HFILL }},
2705 { &hf_x509if_context,
2706 { "context", "x509if.context",
2707 FT_OID, BASE_NONE, NULL, 0,
2708 "ContextCombination/context", HFILL }},
2709 { &hf_x509if_contextcombination_and,
2710 { "and", "x509if.and",
2711 FT_UINT32, BASE_DEC, NULL, 0,
2712 "ContextCombination/and", HFILL }},
2713 { &hf_x509if_contextcombination_and_item,
2714 { "Item", "x509if.and_item",
2715 FT_UINT32, BASE_DEC, VALS(x509if_ContextCombination_vals), 0,
2716 "ContextCombination/and/_item", HFILL }},
2717 { &hf_x509if_contextcombination_or,
2718 { "or", "x509if.or",
2719 FT_UINT32, BASE_DEC, NULL, 0,
2720 "ContextCombination/or", HFILL }},
2721 { &hf_x509if_contextcombination_or_item,
2722 { "Item", "x509if.or_item",
2723 FT_UINT32, BASE_DEC, VALS(x509if_ContextCombination_vals), 0,
2724 "ContextCombination/or/_item", HFILL }},
2725 { &hf_x509if_contextcombination_not,
2726 { "not", "x509if.not",
2727 FT_UINT32, BASE_DEC, VALS(x509if_ContextCombination_vals), 0,
2728 "ContextCombination/not", HFILL }},
2729 { &hf_x509if_restrictionType,
2730 { "restrictionType", "x509if.restrictionType",
2731 FT_OID, BASE_NONE, NULL, 0,
2732 "MatchingUse/restrictionType", HFILL }},
2733 { &hf_x509if_restrictionValue,
2734 { "restrictionValue", "x509if.restrictionValue",
2735 FT_NONE, BASE_NONE, NULL, 0,
2736 "MatchingUse/restrictionValue", HFILL }},
2737 { &hf_x509if_attribute,
2738 { "attribute", "x509if.attribute",
2739 FT_OID, BASE_NONE, NULL, 0,
2742 { "and", "x509if.and",
2743 FT_UINT32, BASE_DEC, NULL, 0,
2744 "AttributeCombination/and", HFILL }},
2745 { &hf_x509if_and_item,
2746 { "Item", "x509if.and_item",
2747 FT_UINT32, BASE_DEC, VALS(x509if_AttributeCombination_vals), 0,
2748 "AttributeCombination/and/_item", HFILL }},
2750 { "or", "x509if.or",
2751 FT_UINT32, BASE_DEC, NULL, 0,
2752 "AttributeCombination/or", HFILL }},
2753 { &hf_x509if_or_item,
2754 { "Item", "x509if.or_item",
2755 FT_UINT32, BASE_DEC, VALS(x509if_AttributeCombination_vals), 0,
2756 "AttributeCombination/or/_item", HFILL }},
2758 { "not", "x509if.not",
2759 FT_UINT32, BASE_DEC, VALS(x509if_AttributeCombination_vals), 0,
2760 "AttributeCombination/not", HFILL }},
2761 { &hf_x509if_outputValues,
2762 { "outputValues", "x509if.outputValues",
2763 FT_UINT32, BASE_DEC, VALS(x509if_T_outputValues_vals), 0,
2764 "ResultAttribute/outputValues", HFILL }},
2765 { &hf_x509if_selectedValues,
2766 { "selectedValues", "x509if.selectedValues",
2767 FT_UINT32, BASE_DEC, NULL, 0,
2769 { &hf_x509if_selectedValues_item,
2770 { "Item", "x509if.selectedValues_item",
2771 FT_NONE, BASE_NONE, NULL, 0,
2773 { &hf_x509if_matchedValuesOnly,
2774 { "matchedValuesOnly", "x509if.matchedValuesOnly",
2775 FT_NONE, BASE_NONE, NULL, 0,
2777 { &hf_x509if_default,
2778 { "default", "x509if.default",
2779 FT_INT32, BASE_DEC, NULL, 0,
2780 "EntryLimit/default", HFILL }},
2782 { "max", "x509if.max",
2783 FT_INT32, BASE_DEC, NULL, 0,
2784 "EntryLimit/max", HFILL }},
2786 { "basic", "x509if.basic",
2787 FT_NONE, BASE_NONE, NULL, 0,
2788 "RelaxationPolicy/basic", HFILL }},
2789 { &hf_x509if_tightenings,
2790 { "tightenings", "x509if.tightenings",
2791 FT_UINT32, BASE_DEC, NULL, 0,
2792 "RelaxationPolicy/tightenings", HFILL }},
2793 { &hf_x509if_tightenings_item,
2794 { "Item", "x509if.tightenings_item",
2795 FT_NONE, BASE_NONE, NULL, 0,
2796 "RelaxationPolicy/tightenings/_item", HFILL }},
2797 { &hf_x509if_relaxations,
2798 { "relaxations", "x509if.relaxations",
2799 FT_UINT32, BASE_DEC, NULL, 0,
2800 "RelaxationPolicy/relaxations", HFILL }},
2801 { &hf_x509if_relaxations_item,
2802 { "Item", "x509if.relaxations_item",
2803 FT_NONE, BASE_NONE, NULL, 0,
2804 "RelaxationPolicy/relaxations/_item", HFILL }},
2805 { &hf_x509if_maximum_relaxation,
2806 { "maximum", "x509if.maximum",
2807 FT_INT32, BASE_DEC, NULL, 0,
2808 "RelaxationPolicy/maximum", HFILL }},
2809 { &hf_x509if_minimum_relaxation,
2810 { "minimum", "x509if.minimum",
2811 FT_INT32, BASE_DEC, NULL, 0,
2812 "RelaxationPolicy/minimum", HFILL }},
2813 { &hf_x509if_mapping,
2814 { "mapping", "x509if.mapping",
2815 FT_UINT32, BASE_DEC, NULL, 0,
2816 "MRMapping/mapping", HFILL }},
2817 { &hf_x509if_mapping_item,
2818 { "Item", "x509if.mapping_item",
2819 FT_NONE, BASE_NONE, NULL, 0,
2820 "MRMapping/mapping/_item", HFILL }},
2821 { &hf_x509if_substitution,
2822 { "substitution", "x509if.substitution",
2823 FT_UINT32, BASE_DEC, NULL, 0,
2824 "MRMapping/substitution", HFILL }},
2825 { &hf_x509if_substitution_item,
2826 { "Item", "x509if.substitution_item",
2827 FT_NONE, BASE_NONE, NULL, 0,
2828 "MRMapping/substitution/_item", HFILL }},
2829 { &hf_x509if_mappingFunction,
2830 { "mappingFunction", "x509if.mappingFunction",
2831 FT_OID, BASE_NONE, NULL, 0,
2832 "Mapping/mappingFunction", HFILL }},
2834 { "level", "x509if.level",
2835 FT_INT32, BASE_DEC, NULL, 0,
2836 "Mapping/level", HFILL }},
2837 { &hf_x509if_oldMatchingRule,
2838 { "oldMatchingRule", "x509if.oldMatchingRule",
2839 FT_OID, BASE_NONE, NULL, 0,
2840 "MRSubstitution/oldMatchingRule", HFILL }},
2841 { &hf_x509if_newMatchingRule,
2842 { "newMatchingRule", "x509if.newMatchingRule",
2843 FT_OID, BASE_NONE, NULL, 0,
2844 "MRSubstitution/newMatchingRule", HFILL }},
2845 { &hf_x509if_AllowedSubset_baseObject,
2846 { "baseObject", "x509if.baseObject",
2847 FT_BOOLEAN, 8, NULL, 0x80,
2849 { &hf_x509if_AllowedSubset_oneLevel,
2850 { "oneLevel", "x509if.oneLevel",
2851 FT_BOOLEAN, 8, NULL, 0x40,
2853 { &hf_x509if_AllowedSubset_wholeSubtree,
2854 { "wholeSubtree", "x509if.wholeSubtree",
2855 FT_BOOLEAN, 8, NULL, 0x20,
2858 /*--- End of included file: packet-x509if-hfarr.c ---*/
2859 #line 122 "packet-x509if-template.c"
2862 /* List of subtrees */
2863 static gint *ett[] = {
2865 /*--- Included file: packet-x509if-ettarr.c ---*/
2866 #line 1 "packet-x509if-ettarr.c"
2867 &ett_x509if_Attribute,
2868 &ett_x509if_SET_OF_AttributeValue,
2869 &ett_x509if_T_valuesWithContext,
2870 &ett_x509if_T_valuesWithContext_item,
2871 &ett_x509if_SET_OF_Context,
2872 &ett_x509if_Context,
2873 &ett_x509if_AttributeValueAssertion,
2874 &ett_x509if_T_assertedContexts,
2875 &ett_x509if_SET_OF_ContextAssertion,
2876 &ett_x509if_ContextAssertion,
2877 &ett_x509if_SET_OF_ContextValue,
2878 &ett_x509if_AttributeTypeAssertion,
2879 &ett_x509if_SEQUENCE_OF_ContextAssertion,
2881 &ett_x509if_RDNSequence,
2882 &ett_x509if_RelativeDistinguishedName,
2883 &ett_x509if_AttributeTypeAndDistinguishedValue,
2884 &ett_x509if_T_valWithContext,
2885 &ett_x509if_T_valWithContext_item,
2886 &ett_x509if_SubtreeSpecification,
2887 &ett_x509if_T_specificExclusions,
2888 &ett_x509if_T_specificExclusions_item,
2889 &ett_x509if_ChopSpecification,
2890 &ett_x509if_T_chopSpecificExclusions,
2891 &ett_x509if_T_chopSpecificExclusions_item,
2892 &ett_x509if_Refinement,
2893 &ett_x509if_SET_OF_Refinement,
2894 &ett_x509if_DITStructureRule,
2895 &ett_x509if_SET_OF_RuleIdentifier,
2896 &ett_x509if_DITContentRule,
2897 &ett_x509if_T_auxiliaries,
2898 &ett_x509if_SET_SIZE_1_MAX_OF_AttributeId,
2899 &ett_x509if_DITContextUse,
2900 &ett_x509if_T_mandatoryContexts,
2901 &ett_x509if_T_optionalContexts,
2902 &ett_x509if_SearchRuleDescription,
2903 &ett_x509if_SEQUENCE_OF_RequestAttribute,
2904 &ett_x509if_SEQUENCE_OF_ResultAttribute,
2905 &ett_x509if_SEQUENCE_OF_AttributeType,
2906 &ett_x509if_SET_OF_DirectoryString,
2907 &ett_x509if_SearchRule,
2908 &ett_x509if_SearchRuleId,
2909 &ett_x509if_AllowedSubset,
2910 &ett_x509if_RequestAttribute,
2911 &ett_x509if_SEQUENCE_OF_SelectedValues,
2912 &ett_x509if_T_defaultValues,
2913 &ett_x509if_T_defaultValues_item,
2914 &ett_x509if_SEQUENCE_OF_DefaultValueValues,
2915 &ett_x509if_SEQUENCE_OF_ContextProfile,
2916 &ett_x509if_SEQUENCE_OF_MatchingUse,
2917 &ett_x509if_ContextProfile,
2918 &ett_x509if_SEQUENCE_OF_AttributeValue,
2919 &ett_x509if_ContextCombination,
2920 &ett_x509if_SEQUENCE_OF_ContextCombination,
2921 &ett_x509if_MatchingUse,
2922 &ett_x509if_AttributeCombination,
2923 &ett_x509if_SEQUENCE_OF_AttributeCombination,
2924 &ett_x509if_ResultAttribute,
2925 &ett_x509if_T_outputValues,
2926 &ett_x509if_OutputValues,
2927 &ett_x509if_ControlOptions,
2928 &ett_x509if_EntryLimit,
2929 &ett_x509if_RelaxationPolicy,
2930 &ett_x509if_SEQUENCE_OF_MRMapping,
2931 &ett_x509if_MRMapping,
2932 &ett_x509if_SEQUENCE_OF_Mapping,
2933 &ett_x509if_SEQUENCE_OF_MRSubstitution,
2934 &ett_x509if_Mapping,
2935 &ett_x509if_MRSubstitution,
2937 /*--- End of included file: packet-x509if-ettarr.c ---*/
2938 #line 127 "packet-x509if-template.c"
2941 /* Register protocol */
2942 proto_x509if = proto_register_protocol(PNAME, PSNAME, PFNAME);
2944 /* Register fields and subtrees */
2945 proto_register_field_array(proto_x509if, hf, array_length(hf));
2946 proto_register_subtree_array(ett, array_length(ett));
2948 /* initialise array */
2949 fmt_vals[0].value = 0;
2950 fmt_vals[0].strptr = NULL;
2955 /*--- proto_reg_handoff_x509if -------------------------------------------*/
2956 void proto_reg_handoff_x509if(void) {
2958 /*--- Included file: packet-x509if-dis-tab.c ---*/
2959 #line 1 "packet-x509if-dis-tab.c"
2960 register_ber_oid_dissector("2.5.4.1", dissect_DistinguishedName_PDU, proto_x509if, "id-at-aliasedEntryName");
2961 register_ber_oid_dissector("2.5.4.31", dissect_DistinguishedName_PDU, proto_x509if, "id-at-member");
2962 register_ber_oid_dissector("2.5.4.32", dissect_DistinguishedName_PDU, proto_x509if, "id-at-owner");
2963 register_ber_oid_dissector("2.5.4.33", dissect_DistinguishedName_PDU, proto_x509if, "id-at-roleOccupant");
2964 register_ber_oid_dissector("2.5.4.34", dissect_DistinguishedName_PDU, proto_x509if, "id-at-seeAlso");
2965 register_ber_oid_dissector("2.5.4.49", dissect_DistinguishedName_PDU, proto_x509if, "id-at-distinguishedName");
2966 register_ber_oid_dissector("2.5.18.3", dissect_DistinguishedName_PDU, proto_x509if, "id-oa-creatorsName");
2967 register_ber_oid_dissector("2.5.18.4", dissect_DistinguishedName_PDU, proto_x509if, "id-oa-modifiersName");
2968 register_ber_oid_dissector("2.5.18.10", dissect_DistinguishedName_PDU, proto_x509if, "id-oa-subschemaSubentry");
2969 register_ber_oid_dissector("2.5.18.11", dissect_DistinguishedName_PDU, proto_x509if, "id-oa-subschemaSubentry");
2970 register_ber_oid_dissector("2.5.18.12", dissect_DistinguishedName_PDU, proto_x509if, "id-oa-collectiveAttributeSubentry");
2971 register_ber_oid_dissector("2.5.18.13", dissect_DistinguishedName_PDU, proto_x509if, "id-oa-contextDefaultSubentry");
2972 register_ber_oid_dissector("2.6.5.2.5", dissect_DistinguishedName_PDU, proto_x509if, "id-at-mhs-message-store-dn");
2973 register_ber_oid_dissector("2.6.5.2.14", dissect_DistinguishedName_PDU, proto_x509if, "id-at-mhs-dl-related-lists");
2974 register_ber_oid_dissector("2.16.840.1.101.2.2.1.3", dissect_DistinguishedName_PDU, proto_x509if, "id-at-alternateRecipient");
2975 register_ber_oid_dissector("2.16.840.1.101.2.2.1.4", dissect_DistinguishedName_PDU, proto_x509if, "id-at-associatedOrganization");
2976 register_ber_oid_dissector("2.16.840.1.101.2.2.1.6", dissect_DistinguishedName_PDU, proto_x509if, "id-at-associatedPLA");
2977 register_ber_oid_dissector("2.16.840.1.101.2.2.1.49", dissect_DistinguishedName_PDU, proto_x509if, "id-at-aliasPointer");
2978 register_ber_oid_dissector("2.16.840.1.101.2.2.1.61", dissect_DistinguishedName_PDU, proto_x509if, "id-at-listPointer");
2979 register_ber_oid_dissector("2.16.840.1.101.2.2.1.110", dissect_DistinguishedName_PDU, proto_x509if, "id-at-administrator");
2980 register_ber_oid_dissector("2.16.840.1.101.2.2.1.111", dissect_DistinguishedName_PDU, proto_x509if, "id-at-aigsExpanded");
2981 register_ber_oid_dissector("2.16.840.1.101.2.2.1.113", dissect_DistinguishedName_PDU, proto_x509if, "id-at-associatedAL");
2982 register_ber_oid_dissector("2.16.840.1.101.2.2.1.114", dissect_DistinguishedName_PDU, proto_x509if, "id-at-copyMember");
2983 register_ber_oid_dissector("2.16.840.1.101.2.2.1.117", dissect_DistinguishedName_PDU, proto_x509if, "id-at-guard");
2984 register_ber_oid_dissector("2.16.840.1.101.2.2.1.121", dissect_DistinguishedName_PDU, proto_x509if, "id-at-networkDN");
2985 register_ber_oid_dissector("2.16.840.1.101.2.2.1.138", dissect_DistinguishedName_PDU, proto_x509if, "id-at-plasServed");
2986 register_ber_oid_dissector("2.16.840.1.101.2.2.1.139", dissect_DistinguishedName_PDU, proto_x509if, "id-at-deployed");
2987 register_ber_oid_dissector("2.16.840.1.101.2.2.1.140", dissect_DistinguishedName_PDU, proto_x509if, "id-at-garrison");
2990 /*--- End of included file: packet-x509if-dis-tab.c ---*/
2991 #line 146 "packet-x509if-template.c"