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