Regenerate a few more of the ASN.1 dissectors
[obnox/wireshark/wip.git] / epan / dissectors / packet-pkix1explicit.c
1 /* Do not modify this file.                                                   */
2 /* It is created automatically by the ASN.1 to Wireshark dissector compiler   */
3 /* packet-pkix1explicit.c                                                     */
4 /* ../../tools/asn2wrs.py -b -p pkix1explicit -c ./pkix1explicit.cnf -s ./packet-pkix1explicit-template -D . PKIX1EXPLICIT93.asn IPAddrAndASCertExtn.asn */
5
6 /* Input file: packet-pkix1explicit-template.c */
7
8 #line 1 "packet-pkix1explicit-template.c"
9 #define BER_UNI_TAG_TeletexString           20  /* workaround bug in asn2wrs */
10
11 /* packet-pkix1explicit.c
12  * Routines for PKIX1Explitic packet dissection
13  *
14  * $Id$
15  *
16  * Wireshark - Network traffic analyzer
17  * By Gerald Combs <gerald@wireshark.org>
18  * Copyright 1998 Gerald Combs
19  *
20  * This program is free software; you can redistribute it and/or
21  * modify it under the terms of the GNU General Public License
22  * as published by the Free Software Foundation; either version 2
23  * of the License, or (at your option) any later version.
24  *
25  * This program is distributed in the hope that it will be useful,
26  * but WITHOUT ANY WARRANTY; without even the implied warranty of
27  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
28  * GNU General Public License for more details.
29  *
30  * You should have received a copy of the GNU General Public License
31  * along with this program; if not, write to the Free Software
32  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
33  */
34
35 #ifdef HAVE_CONFIG_H
36 # include "config.h"
37 #endif
38
39 #include <glib.h>
40 #include <epan/packet.h>
41 #include <epan/asn1.h>
42 #include <epan/oids.h>
43 #include <epan/afn.h>
44
45 #include "packet-ber.h"
46 #include "packet-pkix1explicit.h"
47 #include "packet-x509af.h"
48 #include "packet-x509if.h"
49 #include "packet-x509ce.h"
50
51 #define PNAME  "PKIX1Explicit"
52 #define PSNAME "PKIX1EXPLICIT"
53 #define PFNAME "pkix1explicit"
54
55 /* Initialize the protocol and registered fields */
56 static int proto_pkix1explicit = -1;
57 static int hf_pkix1explicit_object_identifier_id = -1;
58 static int hf_pkix1explicit_addressFamily_afn = -1;
59 static int hf_pkix1explicit_addressFamily_safi = -1;
60
61 static int ett_pkix1explicit_addressFamily = -1;
62
63
64 /*--- Included file: packet-pkix1explicit-hf.c ---*/
65 #line 1 "packet-pkix1explicit-hf.c"
66 static int hf_pkix1explicit_DomainParameters_PDU = -1;  /* DomainParameters */
67 static int hf_pkix1explicit_DirectoryString_PDU = -1;  /* DirectoryString */
68 static int hf_pkix1explicit_IPAddrBlocks_PDU = -1;  /* IPAddrBlocks */
69 static int hf_pkix1explicit_ASIdentifiers_PDU = -1;  /* ASIdentifiers */
70 static int hf_pkix1explicit_utcTime = -1;         /* UTCTime */
71 static int hf_pkix1explicit_generalTime = -1;     /* GeneralizedTime */
72 static int hf_pkix1explicit_Extensions_item = -1;  /* Extension */
73 static int hf_pkix1explicit_extnId = -1;          /* T_extnId */
74 static int hf_pkix1explicit_critical = -1;        /* BOOLEAN */
75 static int hf_pkix1explicit_extnValue = -1;       /* T_extnValue */
76 static int hf_pkix1explicit_p = -1;               /* INTEGER */
77 static int hf_pkix1explicit_g = -1;               /* INTEGER */
78 static int hf_pkix1explicit_q = -1;               /* INTEGER */
79 static int hf_pkix1explicit_j = -1;               /* INTEGER */
80 static int hf_pkix1explicit_validationParms = -1;  /* ValidationParms */
81 static int hf_pkix1explicit_seed = -1;            /* BIT_STRING */
82 static int hf_pkix1explicit_pgenCounter = -1;     /* INTEGER */
83 static int hf_pkix1explicit_type = -1;            /* OBJECT_IDENTIFIER */
84 static int hf_pkix1explicit_values = -1;          /* T_values */
85 static int hf_pkix1explicit_values_item = -1;     /* T_values_item */
86 static int hf_pkix1explicit_value = -1;           /* T_value */
87 static int hf_pkix1explicit_RDNSequence_item = -1;  /* RelativeDistinguishedName */
88 static int hf_pkix1explicit_RelativeDistinguishedName_item = -1;  /* AttributeTypeAndValue */
89 static int hf_pkix1explicit_type_01 = -1;         /* TeletexString */
90 static int hf_pkix1explicit_value_01 = -1;        /* TeletexString */
91 static int hf_pkix1explicit_IPAddrBlocks_item = -1;  /* IPAddressFamily */
92 static int hf_pkix1explicit_addressFamily = -1;   /* T_addressFamily */
93 static int hf_pkix1explicit_ipAddressChoice = -1;  /* IPAddressChoice */
94 static int hf_pkix1explicit_inherit = -1;         /* NULL */
95 static int hf_pkix1explicit_addressesOrRanges = -1;  /* SEQUENCE_OF_IPAddressOrRange */
96 static int hf_pkix1explicit_addressesOrRanges_item = -1;  /* IPAddressOrRange */
97 static int hf_pkix1explicit_addressPrefix = -1;   /* IPAddress */
98 static int hf_pkix1explicit_addressRange = -1;    /* IPAddressRange */
99 static int hf_pkix1explicit_min = -1;             /* IPAddress */
100 static int hf_pkix1explicit_max = -1;             /* IPAddress */
101 static int hf_pkix1explicit_asnum = -1;           /* ASIdentifierChoice */
102 static int hf_pkix1explicit_rdi = -1;             /* ASIdentifierChoice */
103 static int hf_pkix1explicit_asIdsOrRanges = -1;   /* SEQUENCE_OF_ASIdOrRange */
104 static int hf_pkix1explicit_asIdsOrRanges_item = -1;  /* ASIdOrRange */
105 static int hf_pkix1explicit_id = -1;              /* ASId */
106 static int hf_pkix1explicit_range = -1;           /* ASRange */
107 static int hf_pkix1explicit_min_01 = -1;          /* ASId */
108 static int hf_pkix1explicit_max_01 = -1;          /* ASId */
109
110 /*--- End of included file: packet-pkix1explicit-hf.c ---*/
111 #line 56 "packet-pkix1explicit-template.c"
112
113 /* Initialize the subtree pointers */
114
115 /*--- Included file: packet-pkix1explicit-ett.c ---*/
116 #line 1 "packet-pkix1explicit-ett.c"
117 static gint ett_pkix1explicit_Time = -1;
118 static gint ett_pkix1explicit_Extensions = -1;
119 static gint ett_pkix1explicit_Extension = -1;
120 static gint ett_pkix1explicit_DomainParameters = -1;
121 static gint ett_pkix1explicit_ValidationParms = -1;
122 static gint ett_pkix1explicit_Attribute = -1;
123 static gint ett_pkix1explicit_T_values = -1;
124 static gint ett_pkix1explicit_AttributeTypeAndValue = -1;
125 static gint ett_pkix1explicit_RDNSequence = -1;
126 static gint ett_pkix1explicit_RelativeDistinguishedName = -1;
127 static gint ett_pkix1explicit_TeletexDomainDefinedAttribute = -1;
128 static gint ett_pkix1explicit_IPAddrBlocks = -1;
129 static gint ett_pkix1explicit_IPAddressFamily = -1;
130 static gint ett_pkix1explicit_IPAddressChoice = -1;
131 static gint ett_pkix1explicit_SEQUENCE_OF_IPAddressOrRange = -1;
132 static gint ett_pkix1explicit_IPAddressOrRange = -1;
133 static gint ett_pkix1explicit_IPAddressRange = -1;
134 static gint ett_pkix1explicit_ASIdentifiers = -1;
135 static gint ett_pkix1explicit_ASIdentifierChoice = -1;
136 static gint ett_pkix1explicit_SEQUENCE_OF_ASIdOrRange = -1;
137 static gint ett_pkix1explicit_ASIdOrRange = -1;
138 static gint ett_pkix1explicit_ASRange = -1;
139
140 /*--- End of included file: packet-pkix1explicit-ett.c ---*/
141 #line 59 "packet-pkix1explicit-template.c"
142
143
144 static const char *object_identifier_id;
145
146 int
147 dissect_pkix1explicit_Certificate(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
148   offset = dissect_x509af_Certificate(implicit_tag, tvb, offset, actx, tree, hf_index);
149
150   return offset;
151 }
152 int
153 dissect_pkix1explicit_CertificateList(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
154   offset = dissect_x509af_CertificateList(implicit_tag, tvb, offset, actx, tree, hf_index);
155
156   return offset;
157 }
158 int
159 dissect_pkix1explicit_GeneralName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
160   offset = dissect_x509ce_GeneralName(implicit_tag, tvb, offset, actx, tree, hf_index);
161
162   return offset;
163 }
164 int
165 dissect_pkix1explicit_Name(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
166   offset = dissect_x509if_Name(implicit_tag, tvb, offset, actx, tree, hf_index);
167
168   return offset;
169 }
170 int
171 dissect_pkix1explicit_AlgorithmIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
172   offset = dissect_x509af_AlgorithmIdentifier(implicit_tag, tvb, offset, actx, tree, hf_index);
173
174   return offset;
175 }
176
177 int
178 dissect_pkix1explicit_SubjectPublicKeyInfo(gboolean implicit_tag, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
179   offset = dissect_x509af_SubjectPublicKeyInfo(implicit_tag, tvb, offset, actx, tree, hf_index);
180
181   return offset;
182 }
183
184
185
186 /*--- Included file: packet-pkix1explicit-fn.c ---*/
187 #line 1 "packet-pkix1explicit-fn.c"
188
189
190 int
191 dissect_pkix1explicit_UniqueIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
192   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
193                                     NULL, hf_index, -1,
194                                     NULL);
195
196   return offset;
197 }
198
199
200 const value_string pkix1explicit_Version_vals[] = {
201   {   0, "v1" },
202   {   1, "v2" },
203   {   2, "v3" },
204   { 0, NULL }
205 };
206
207
208 int
209 dissect_pkix1explicit_Version(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
210   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
211                                                 NULL);
212
213   return offset;
214 }
215
216
217
218 int
219 dissect_pkix1explicit_CertificateSerialNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
220   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
221                                                 NULL);
222
223   return offset;
224 }
225
226
227
228 static int
229 dissect_pkix1explicit_UTCTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
230   offset = dissect_ber_UTCTime(implicit_tag, actx, tree, tvb, offset, hf_index);
231
232   return offset;
233 }
234
235
236
237 static int
238 dissect_pkix1explicit_GeneralizedTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
239   offset = dissect_ber_GeneralizedTime(implicit_tag, actx, tree, tvb, offset, hf_index);
240
241   return offset;
242 }
243
244
245 const value_string pkix1explicit_Time_vals[] = {
246   {   0, "utcTime" },
247   {   1, "generalTime" },
248   { 0, NULL }
249 };
250
251 static const ber_choice_t Time_choice[] = {
252   {   0, &hf_pkix1explicit_utcTime, BER_CLASS_UNI, BER_UNI_TAG_UTCTime, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_UTCTime },
253   {   1, &hf_pkix1explicit_generalTime, BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_GeneralizedTime },
254   { 0, NULL, 0, 0, 0, NULL }
255 };
256
257 int
258 dissect_pkix1explicit_Time(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
259   offset = dissect_ber_choice(actx, tree, tvb, offset,
260                                  Time_choice, hf_index, ett_pkix1explicit_Time,
261                                  NULL);
262
263   return offset;
264 }
265
266
267
268 static int
269 dissect_pkix1explicit_T_extnId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
270   offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_pkix1explicit_object_identifier_id, &object_identifier_id);
271
272   return offset;
273 }
274
275
276
277 static int
278 dissect_pkix1explicit_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_) {
279   offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
280
281   return offset;
282 }
283
284
285
286 static int
287 dissect_pkix1explicit_T_extnValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
288 #line 56 "pkix1explicit.cnf"
289   gint8 class;
290   gboolean pc, ind;
291   gint32 tag;
292   guint32 len;
293   /* skip past the T and L  */
294   offset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, &class, &pc, &tag);
295   offset = dissect_ber_length(actx->pinfo, tree, tvb, offset, &len, &ind);
296   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree);
297
298
299
300
301   return offset;
302 }
303
304
305 static const ber_sequence_t Extension_sequence[] = {
306   { &hf_pkix1explicit_extnId, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_T_extnId },
307   { &hf_pkix1explicit_critical, BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_BOOLEAN },
308   { &hf_pkix1explicit_extnValue, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_T_extnValue },
309   { NULL, 0, 0, 0, NULL }
310 };
311
312 int
313 dissect_pkix1explicit_Extension(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
314   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
315                                    Extension_sequence, hf_index, ett_pkix1explicit_Extension);
316
317   return offset;
318 }
319
320
321 static const ber_sequence_t Extensions_sequence_of[1] = {
322   { &hf_pkix1explicit_Extensions_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_Extension },
323 };
324
325 int
326 dissect_pkix1explicit_Extensions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
327   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
328                                       Extensions_sequence_of, hf_index, ett_pkix1explicit_Extensions);
329
330   return offset;
331 }
332
333
334
335 static int
336 dissect_pkix1explicit_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_) {
337   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
338                                                 NULL);
339
340   return offset;
341 }
342
343
344
345 static int
346 dissect_pkix1explicit_BIT_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
347   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
348                                     NULL, hf_index, -1,
349                                     NULL);
350
351   return offset;
352 }
353
354
355 static const ber_sequence_t ValidationParms_sequence[] = {
356   { &hf_pkix1explicit_seed  , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_BIT_STRING },
357   { &hf_pkix1explicit_pgenCounter, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_INTEGER },
358   { NULL, 0, 0, 0, NULL }
359 };
360
361 static int
362 dissect_pkix1explicit_ValidationParms(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
363   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
364                                    ValidationParms_sequence, hf_index, ett_pkix1explicit_ValidationParms);
365
366   return offset;
367 }
368
369
370 static const ber_sequence_t DomainParameters_sequence[] = {
371   { &hf_pkix1explicit_p     , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_INTEGER },
372   { &hf_pkix1explicit_g     , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_INTEGER },
373   { &hf_pkix1explicit_q     , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_INTEGER },
374   { &hf_pkix1explicit_j     , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_INTEGER },
375   { &hf_pkix1explicit_validationParms, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_ValidationParms },
376   { NULL, 0, 0, 0, NULL }
377 };
378
379 static int
380 dissect_pkix1explicit_DomainParameters(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
381   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
382                                    DomainParameters_sequence, hf_index, ett_pkix1explicit_DomainParameters);
383
384   return offset;
385 }
386
387
388
389 static int
390 dissect_pkix1explicit_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_) {
391   offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
392
393   return offset;
394 }
395
396
397
398 static int
399 dissect_pkix1explicit_T_values_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
400 #line 44 "pkix1explicit.cnf"
401   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree);
402
403
404
405   return offset;
406 }
407
408
409 static const ber_sequence_t T_values_set_of[1] = {
410   { &hf_pkix1explicit_values_item, BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_T_values_item },
411 };
412
413 static int
414 dissect_pkix1explicit_T_values(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
415   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
416                                  T_values_set_of, hf_pkix1explicit_object_identifier_id, ett_pkix1explicit_T_values);
417
418   return offset;
419 }
420
421
422 static const ber_sequence_t Attribute_sequence[] = {
423   { &hf_pkix1explicit_type  , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_OBJECT_IDENTIFIER },
424   { &hf_pkix1explicit_values, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_T_values },
425   { NULL, 0, 0, 0, NULL }
426 };
427
428 int
429 dissect_pkix1explicit_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_) {
430   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
431                                    Attribute_sequence, hf_index, ett_pkix1explicit_Attribute);
432
433   return offset;
434 }
435
436
437
438 static int
439 dissect_pkix1explicit_T_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
440 #line 50 "pkix1explicit.cnf"
441   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree);
442
443
444
445   return offset;
446 }
447
448
449 static const ber_sequence_t AttributeTypeAndValue_sequence[] = {
450   { &hf_pkix1explicit_type  , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_OBJECT_IDENTIFIER },
451   { &hf_pkix1explicit_value , BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_T_value },
452   { NULL, 0, 0, 0, NULL }
453 };
454
455 int
456 dissect_pkix1explicit_AttributeTypeAndValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
457   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
458                                    AttributeTypeAndValue_sequence, hf_index, ett_pkix1explicit_AttributeTypeAndValue);
459
460   return offset;
461 }
462
463
464 static const ber_sequence_t RelativeDistinguishedName_set_of[1] = {
465   { &hf_pkix1explicit_RelativeDistinguishedName_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_AttributeTypeAndValue },
466 };
467
468 int
469 dissect_pkix1explicit_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_) {
470   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
471                                  RelativeDistinguishedName_set_of, hf_index, ett_pkix1explicit_RelativeDistinguishedName);
472
473   return offset;
474 }
475
476
477 static const ber_sequence_t RDNSequence_sequence_of[1] = {
478   { &hf_pkix1explicit_RDNSequence_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_RelativeDistinguishedName },
479 };
480
481 int
482 dissect_pkix1explicit_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_) {
483   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
484                                       RDNSequence_sequence_of, hf_index, ett_pkix1explicit_RDNSequence);
485
486   return offset;
487 }
488
489
490
491 int
492 dissect_pkix1explicit_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_) {
493 #line 38 "pkix1explicit.cnf"
494         offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
495
496
497
498   return offset;
499 }
500
501
502 const value_string pkix1explicit_TerminalType_vals[] = {
503   {   3, "telex" },
504   {   4, "teletex" },
505   {   5, "g3-facsimile" },
506   {   6, "g4-facsimile" },
507   {   7, "ia5-terminal" },
508   {   8, "videotex" },
509   { 0, NULL }
510 };
511
512
513 int
514 dissect_pkix1explicit_TerminalType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
515   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
516                                                 NULL);
517
518   return offset;
519 }
520
521
522
523 static int
524 dissect_pkix1explicit_TeletexString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
525   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString,
526                                             actx, tree, tvb, offset, hf_index,
527                                             NULL);
528
529   return offset;
530 }
531
532
533 static const ber_sequence_t TeletexDomainDefinedAttribute_sequence[] = {
534   { &hf_pkix1explicit_type_01, BER_CLASS_UNI, BER_UNI_TAG_TeletexString, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_TeletexString },
535   { &hf_pkix1explicit_value_01, BER_CLASS_UNI, BER_UNI_TAG_TeletexString, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_TeletexString },
536   { NULL, 0, 0, 0, NULL }
537 };
538
539 int
540 dissect_pkix1explicit_TeletexDomainDefinedAttribute(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
541   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
542                                    TeletexDomainDefinedAttribute_sequence, hf_index, ett_pkix1explicit_TeletexDomainDefinedAttribute);
543
544   return offset;
545 }
546
547
548
549 static int
550 dissect_pkix1explicit_T_addressFamily(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
551 #line 68 "pkix1explicit.cnf"
552         tvbuff_t        *parameter_tvb;
553         proto_tree *subtree;
554
555   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
556                                        &parameter_tvb);
557
558
559         if (!parameter_tvb)
560                 return offset;
561         subtree = proto_item_add_subtree(actx->created_item, ett_pkix1explicit_addressFamily);
562         proto_tree_add_item(subtree, hf_pkix1explicit_addressFamily_afn, parameter_tvb, 0, 2, FALSE);
563         if(tvb_length(parameter_tvb)>2)
564                 proto_tree_add_item(subtree, hf_pkix1explicit_addressFamily_safi, parameter_tvb, 0, 2, FALSE);
565
566
567
568
569   return offset;
570 }
571
572
573
574 static int
575 dissect_pkix1explicit_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_) {
576   offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
577
578   return offset;
579 }
580
581
582
583 static int
584 dissect_pkix1explicit_IPAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
585   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
586                                     NULL, hf_index, -1,
587                                     NULL);
588
589   return offset;
590 }
591
592
593 static const ber_sequence_t IPAddressRange_sequence[] = {
594   { &hf_pkix1explicit_min   , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_IPAddress },
595   { &hf_pkix1explicit_max   , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_IPAddress },
596   { NULL, 0, 0, 0, NULL }
597 };
598
599 static int
600 dissect_pkix1explicit_IPAddressRange(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
601   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
602                                    IPAddressRange_sequence, hf_index, ett_pkix1explicit_IPAddressRange);
603
604   return offset;
605 }
606
607
608 static const value_string pkix1explicit_IPAddressOrRange_vals[] = {
609   {   0, "addressPrefix" },
610   {   1, "addressRange" },
611   { 0, NULL }
612 };
613
614 static const ber_choice_t IPAddressOrRange_choice[] = {
615   {   0, &hf_pkix1explicit_addressPrefix, BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_IPAddress },
616   {   1, &hf_pkix1explicit_addressRange, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_IPAddressRange },
617   { 0, NULL, 0, 0, 0, NULL }
618 };
619
620 static int
621 dissect_pkix1explicit_IPAddressOrRange(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
622   offset = dissect_ber_choice(actx, tree, tvb, offset,
623                                  IPAddressOrRange_choice, hf_index, ett_pkix1explicit_IPAddressOrRange,
624                                  NULL);
625
626   return offset;
627 }
628
629
630 static const ber_sequence_t SEQUENCE_OF_IPAddressOrRange_sequence_of[1] = {
631   { &hf_pkix1explicit_addressesOrRanges_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_pkix1explicit_IPAddressOrRange },
632 };
633
634 static int
635 dissect_pkix1explicit_SEQUENCE_OF_IPAddressOrRange(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
636   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
637                                       SEQUENCE_OF_IPAddressOrRange_sequence_of, hf_index, ett_pkix1explicit_SEQUENCE_OF_IPAddressOrRange);
638
639   return offset;
640 }
641
642
643 static const value_string pkix1explicit_IPAddressChoice_vals[] = {
644   {   0, "inherit" },
645   {   1, "addressesOrRanges" },
646   { 0, NULL }
647 };
648
649 static const ber_choice_t IPAddressChoice_choice[] = {
650   {   0, &hf_pkix1explicit_inherit, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_NULL },
651   {   1, &hf_pkix1explicit_addressesOrRanges, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_SEQUENCE_OF_IPAddressOrRange },
652   { 0, NULL, 0, 0, 0, NULL }
653 };
654
655 static int
656 dissect_pkix1explicit_IPAddressChoice(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
657   offset = dissect_ber_choice(actx, tree, tvb, offset,
658                                  IPAddressChoice_choice, hf_index, ett_pkix1explicit_IPAddressChoice,
659                                  NULL);
660
661   return offset;
662 }
663
664
665 static const ber_sequence_t IPAddressFamily_sequence[] = {
666   { &hf_pkix1explicit_addressFamily, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_T_addressFamily },
667   { &hf_pkix1explicit_ipAddressChoice, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_pkix1explicit_IPAddressChoice },
668   { NULL, 0, 0, 0, NULL }
669 };
670
671 static int
672 dissect_pkix1explicit_IPAddressFamily(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
673   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
674                                    IPAddressFamily_sequence, hf_index, ett_pkix1explicit_IPAddressFamily);
675
676   return offset;
677 }
678
679
680 static const ber_sequence_t IPAddrBlocks_sequence_of[1] = {
681   { &hf_pkix1explicit_IPAddrBlocks_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_IPAddressFamily },
682 };
683
684 static int
685 dissect_pkix1explicit_IPAddrBlocks(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
686   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
687                                       IPAddrBlocks_sequence_of, hf_index, ett_pkix1explicit_IPAddrBlocks);
688
689   return offset;
690 }
691
692
693
694 static int
695 dissect_pkix1explicit_ASId(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   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
697                                                 NULL);
698
699   return offset;
700 }
701
702
703 static const ber_sequence_t ASRange_sequence[] = {
704   { &hf_pkix1explicit_min_01, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_ASId },
705   { &hf_pkix1explicit_max_01, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_ASId },
706   { NULL, 0, 0, 0, NULL }
707 };
708
709 static int
710 dissect_pkix1explicit_ASRange(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
711   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
712                                    ASRange_sequence, hf_index, ett_pkix1explicit_ASRange);
713
714   return offset;
715 }
716
717
718 static const value_string pkix1explicit_ASIdOrRange_vals[] = {
719   {   0, "id" },
720   {   1, "range" },
721   { 0, NULL }
722 };
723
724 static const ber_choice_t ASIdOrRange_choice[] = {
725   {   0, &hf_pkix1explicit_id    , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_ASId },
726   {   1, &hf_pkix1explicit_range , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_ASRange },
727   { 0, NULL, 0, 0, 0, NULL }
728 };
729
730 static int
731 dissect_pkix1explicit_ASIdOrRange(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_choice(actx, tree, tvb, offset,
733                                  ASIdOrRange_choice, hf_index, ett_pkix1explicit_ASIdOrRange,
734                                  NULL);
735
736   return offset;
737 }
738
739
740 static const ber_sequence_t SEQUENCE_OF_ASIdOrRange_sequence_of[1] = {
741   { &hf_pkix1explicit_asIdsOrRanges_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_pkix1explicit_ASIdOrRange },
742 };
743
744 static int
745 dissect_pkix1explicit_SEQUENCE_OF_ASIdOrRange(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
746   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
747                                       SEQUENCE_OF_ASIdOrRange_sequence_of, hf_index, ett_pkix1explicit_SEQUENCE_OF_ASIdOrRange);
748
749   return offset;
750 }
751
752
753 static const value_string pkix1explicit_ASIdentifierChoice_vals[] = {
754   {   0, "inherit" },
755   {   1, "asIdsOrRanges" },
756   { 0, NULL }
757 };
758
759 static const ber_choice_t ASIdentifierChoice_choice[] = {
760   {   0, &hf_pkix1explicit_inherit, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_NULL },
761   {   1, &hf_pkix1explicit_asIdsOrRanges, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_SEQUENCE_OF_ASIdOrRange },
762   { 0, NULL, 0, 0, 0, NULL }
763 };
764
765 static int
766 dissect_pkix1explicit_ASIdentifierChoice(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
767   offset = dissect_ber_choice(actx, tree, tvb, offset,
768                                  ASIdentifierChoice_choice, hf_index, ett_pkix1explicit_ASIdentifierChoice,
769                                  NULL);
770
771   return offset;
772 }
773
774
775 static const ber_sequence_t ASIdentifiers_sequence[] = {
776   { &hf_pkix1explicit_asnum , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_pkix1explicit_ASIdentifierChoice },
777   { &hf_pkix1explicit_rdi   , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_pkix1explicit_ASIdentifierChoice },
778   { NULL, 0, 0, 0, NULL }
779 };
780
781 static int
782 dissect_pkix1explicit_ASIdentifiers(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
783   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
784                                    ASIdentifiers_sequence, hf_index, ett_pkix1explicit_ASIdentifiers);
785
786   return offset;
787 }
788
789 /*--- PDUs ---*/
790
791 static void dissect_DomainParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
792   asn1_ctx_t asn1_ctx;
793   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
794   dissect_pkix1explicit_DomainParameters(FALSE, tvb, 0, &asn1_ctx, tree, hf_pkix1explicit_DomainParameters_PDU);
795 }
796 static void dissect_DirectoryString_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
797   asn1_ctx_t asn1_ctx;
798   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
799   dissect_pkix1explicit_DirectoryString(FALSE, tvb, 0, &asn1_ctx, tree, hf_pkix1explicit_DirectoryString_PDU);
800 }
801 static void dissect_IPAddrBlocks_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
802   asn1_ctx_t asn1_ctx;
803   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
804   dissect_pkix1explicit_IPAddrBlocks(FALSE, tvb, 0, &asn1_ctx, tree, hf_pkix1explicit_IPAddrBlocks_PDU);
805 }
806 static void dissect_ASIdentifiers_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
807   asn1_ctx_t asn1_ctx;
808   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
809   dissect_pkix1explicit_ASIdentifiers(FALSE, tvb, 0, &asn1_ctx, tree, hf_pkix1explicit_ASIdentifiers_PDU);
810 }
811
812
813 /*--- End of included file: packet-pkix1explicit-fn.c ---*/
814 #line 103 "packet-pkix1explicit-template.c"
815
816
817 /*--- proto_register_pkix1explicit ----------------------------------------------*/
818 void proto_register_pkix1explicit(void) {
819
820   /* List of fields */
821   static hf_register_info hf[] = {
822     { &hf_pkix1explicit_object_identifier_id,
823       { "Id", "pkix1explicit.id", FT_STRING, BASE_NONE, NULL, 0,
824         "Object identifier Id", HFILL }},
825
826     { &hf_pkix1explicit_addressFamily_afn,
827       { "Address family(AFN)", "pkix1explicit.addressfamily", FT_UINT16, BASE_DEC, VALS(afn_vals), 0,
828         NULL, HFILL }},
829
830     { &hf_pkix1explicit_addressFamily_safi,
831       { "Subsequent Address Family Identifiers (SAFI)", "pkix1explicit.addressfamily.safi", FT_UINT16, BASE_DEC, NULL, 0,
832         "Subsequent Address Family Identifiers (SAFI) RFC4760", HFILL }},
833
834 /*--- Included file: packet-pkix1explicit-hfarr.c ---*/
835 #line 1 "packet-pkix1explicit-hfarr.c"
836     { &hf_pkix1explicit_DomainParameters_PDU,
837       { "DomainParameters", "pkix1explicit.DomainParameters",
838         FT_NONE, BASE_NONE, NULL, 0,
839         NULL, HFILL }},
840     { &hf_pkix1explicit_DirectoryString_PDU,
841       { "DirectoryString", "pkix1explicit.DirectoryString",
842         FT_STRING, BASE_NONE, NULL, 0,
843         NULL, HFILL }},
844     { &hf_pkix1explicit_IPAddrBlocks_PDU,
845       { "IPAddrBlocks", "pkix1explicit.IPAddrBlocks",
846         FT_UINT32, BASE_DEC, NULL, 0,
847         NULL, HFILL }},
848     { &hf_pkix1explicit_ASIdentifiers_PDU,
849       { "ASIdentifiers", "pkix1explicit.ASIdentifiers",
850         FT_NONE, BASE_NONE, NULL, 0,
851         NULL, HFILL }},
852     { &hf_pkix1explicit_utcTime,
853       { "utcTime", "pkix1explicit.utcTime",
854         FT_STRING, BASE_NONE, NULL, 0,
855         NULL, HFILL }},
856     { &hf_pkix1explicit_generalTime,
857       { "generalTime", "pkix1explicit.generalTime",
858         FT_STRING, BASE_NONE, NULL, 0,
859         "GeneralizedTime", HFILL }},
860     { &hf_pkix1explicit_Extensions_item,
861       { "Extension", "pkix1explicit.Extension",
862         FT_NONE, BASE_NONE, NULL, 0,
863         NULL, HFILL }},
864     { &hf_pkix1explicit_extnId,
865       { "extnId", "pkix1explicit.extnId",
866         FT_OID, BASE_NONE, NULL, 0,
867         "T_extnId", HFILL }},
868     { &hf_pkix1explicit_critical,
869       { "critical", "pkix1explicit.critical",
870         FT_BOOLEAN, BASE_NONE, NULL, 0,
871         "BOOLEAN", HFILL }},
872     { &hf_pkix1explicit_extnValue,
873       { "extnValue", "pkix1explicit.extnValue",
874         FT_BYTES, BASE_NONE, NULL, 0,
875         "T_extnValue", HFILL }},
876     { &hf_pkix1explicit_p,
877       { "p", "pkix1explicit.p",
878         FT_INT32, BASE_DEC, NULL, 0,
879         "INTEGER", HFILL }},
880     { &hf_pkix1explicit_g,
881       { "g", "pkix1explicit.g",
882         FT_INT32, BASE_DEC, NULL, 0,
883         "INTEGER", HFILL }},
884     { &hf_pkix1explicit_q,
885       { "q", "pkix1explicit.q",
886         FT_INT32, BASE_DEC, NULL, 0,
887         "INTEGER", HFILL }},
888     { &hf_pkix1explicit_j,
889       { "j", "pkix1explicit.j",
890         FT_INT32, BASE_DEC, NULL, 0,
891         "INTEGER", HFILL }},
892     { &hf_pkix1explicit_validationParms,
893       { "validationParms", "pkix1explicit.validationParms",
894         FT_NONE, BASE_NONE, NULL, 0,
895         NULL, HFILL }},
896     { &hf_pkix1explicit_seed,
897       { "seed", "pkix1explicit.seed",
898         FT_BYTES, BASE_NONE, NULL, 0,
899         "BIT_STRING", HFILL }},
900     { &hf_pkix1explicit_pgenCounter,
901       { "pgenCounter", "pkix1explicit.pgenCounter",
902         FT_INT32, BASE_DEC, NULL, 0,
903         "INTEGER", HFILL }},
904     { &hf_pkix1explicit_type,
905       { "type", "pkix1explicit.type",
906         FT_OID, BASE_NONE, NULL, 0,
907         "OBJECT_IDENTIFIER", HFILL }},
908     { &hf_pkix1explicit_values,
909       { "values", "pkix1explicit.values",
910         FT_UINT32, BASE_DEC, NULL, 0,
911         "T_values", HFILL }},
912     { &hf_pkix1explicit_values_item,
913       { "values item", "pkix1explicit.values_item",
914         FT_NONE, BASE_NONE, NULL, 0,
915         "T_values_item", HFILL }},
916     { &hf_pkix1explicit_value,
917       { "value", "pkix1explicit.value",
918         FT_NONE, BASE_NONE, NULL, 0,
919         "T_value", HFILL }},
920     { &hf_pkix1explicit_RDNSequence_item,
921       { "RelativeDistinguishedName", "pkix1explicit.RelativeDistinguishedName",
922         FT_UINT32, BASE_DEC, NULL, 0,
923         NULL, HFILL }},
924     { &hf_pkix1explicit_RelativeDistinguishedName_item,
925       { "AttributeTypeAndValue", "pkix1explicit.AttributeTypeAndValue",
926         FT_NONE, BASE_NONE, NULL, 0,
927         NULL, HFILL }},
928     { &hf_pkix1explicit_type_01,
929       { "type", "pkix1explicit.type",
930         FT_STRING, BASE_NONE, NULL, 0,
931         "TeletexString", HFILL }},
932     { &hf_pkix1explicit_value_01,
933       { "value", "pkix1explicit.value",
934         FT_STRING, BASE_NONE, NULL, 0,
935         "TeletexString", HFILL }},
936     { &hf_pkix1explicit_IPAddrBlocks_item,
937       { "IPAddressFamily", "pkix1explicit.IPAddressFamily",
938         FT_NONE, BASE_NONE, NULL, 0,
939         NULL, HFILL }},
940     { &hf_pkix1explicit_addressFamily,
941       { "addressFamily", "pkix1explicit.addressFamily",
942         FT_BYTES, BASE_NONE, NULL, 0,
943         "T_addressFamily", HFILL }},
944     { &hf_pkix1explicit_ipAddressChoice,
945       { "ipAddressChoice", "pkix1explicit.ipAddressChoice",
946         FT_UINT32, BASE_DEC, VALS(pkix1explicit_IPAddressChoice_vals), 0,
947         NULL, HFILL }},
948     { &hf_pkix1explicit_inherit,
949       { "inherit", "pkix1explicit.inherit",
950         FT_NONE, BASE_NONE, NULL, 0,
951         "NULL", HFILL }},
952     { &hf_pkix1explicit_addressesOrRanges,
953       { "addressesOrRanges", "pkix1explicit.addressesOrRanges",
954         FT_UINT32, BASE_DEC, NULL, 0,
955         "SEQUENCE_OF_IPAddressOrRange", HFILL }},
956     { &hf_pkix1explicit_addressesOrRanges_item,
957       { "IPAddressOrRange", "pkix1explicit.IPAddressOrRange",
958         FT_UINT32, BASE_DEC, VALS(pkix1explicit_IPAddressOrRange_vals), 0,
959         NULL, HFILL }},
960     { &hf_pkix1explicit_addressPrefix,
961       { "addressPrefix", "pkix1explicit.addressPrefix",
962         FT_BYTES, BASE_NONE, NULL, 0,
963         "IPAddress", HFILL }},
964     { &hf_pkix1explicit_addressRange,
965       { "addressRange", "pkix1explicit.addressRange",
966         FT_NONE, BASE_NONE, NULL, 0,
967         "IPAddressRange", HFILL }},
968     { &hf_pkix1explicit_min,
969       { "min", "pkix1explicit.min",
970         FT_BYTES, BASE_NONE, NULL, 0,
971         "IPAddress", HFILL }},
972     { &hf_pkix1explicit_max,
973       { "max", "pkix1explicit.max",
974         FT_BYTES, BASE_NONE, NULL, 0,
975         "IPAddress", HFILL }},
976     { &hf_pkix1explicit_asnum,
977       { "asnum", "pkix1explicit.asnum",
978         FT_UINT32, BASE_DEC, VALS(pkix1explicit_ASIdentifierChoice_vals), 0,
979         "ASIdentifierChoice", HFILL }},
980     { &hf_pkix1explicit_rdi,
981       { "rdi", "pkix1explicit.rdi",
982         FT_UINT32, BASE_DEC, VALS(pkix1explicit_ASIdentifierChoice_vals), 0,
983         "ASIdentifierChoice", HFILL }},
984     { &hf_pkix1explicit_asIdsOrRanges,
985       { "asIdsOrRanges", "pkix1explicit.asIdsOrRanges",
986         FT_UINT32, BASE_DEC, NULL, 0,
987         "SEQUENCE_OF_ASIdOrRange", HFILL }},
988     { &hf_pkix1explicit_asIdsOrRanges_item,
989       { "ASIdOrRange", "pkix1explicit.ASIdOrRange",
990         FT_UINT32, BASE_DEC, VALS(pkix1explicit_ASIdOrRange_vals), 0,
991         NULL, HFILL }},
992     { &hf_pkix1explicit_id,
993       { "id", "pkix1explicit.id",
994         FT_INT32, BASE_DEC, NULL, 0,
995         "ASId", HFILL }},
996     { &hf_pkix1explicit_range,
997       { "range", "pkix1explicit.range",
998         FT_NONE, BASE_NONE, NULL, 0,
999         "ASRange", HFILL }},
1000     { &hf_pkix1explicit_min_01,
1001       { "min", "pkix1explicit.min",
1002         FT_INT32, BASE_DEC, NULL, 0,
1003         "ASId", HFILL }},
1004     { &hf_pkix1explicit_max_01,
1005       { "max", "pkix1explicit.max",
1006         FT_INT32, BASE_DEC, NULL, 0,
1007         "ASId", HFILL }},
1008
1009 /*--- End of included file: packet-pkix1explicit-hfarr.c ---*/
1010 #line 122 "packet-pkix1explicit-template.c"
1011   };
1012
1013   /* List of subtrees */
1014   static gint *ett[] = {
1015           &ett_pkix1explicit_addressFamily,
1016
1017 /*--- Included file: packet-pkix1explicit-ettarr.c ---*/
1018 #line 1 "packet-pkix1explicit-ettarr.c"
1019     &ett_pkix1explicit_Time,
1020     &ett_pkix1explicit_Extensions,
1021     &ett_pkix1explicit_Extension,
1022     &ett_pkix1explicit_DomainParameters,
1023     &ett_pkix1explicit_ValidationParms,
1024     &ett_pkix1explicit_Attribute,
1025     &ett_pkix1explicit_T_values,
1026     &ett_pkix1explicit_AttributeTypeAndValue,
1027     &ett_pkix1explicit_RDNSequence,
1028     &ett_pkix1explicit_RelativeDistinguishedName,
1029     &ett_pkix1explicit_TeletexDomainDefinedAttribute,
1030     &ett_pkix1explicit_IPAddrBlocks,
1031     &ett_pkix1explicit_IPAddressFamily,
1032     &ett_pkix1explicit_IPAddressChoice,
1033     &ett_pkix1explicit_SEQUENCE_OF_IPAddressOrRange,
1034     &ett_pkix1explicit_IPAddressOrRange,
1035     &ett_pkix1explicit_IPAddressRange,
1036     &ett_pkix1explicit_ASIdentifiers,
1037     &ett_pkix1explicit_ASIdentifierChoice,
1038     &ett_pkix1explicit_SEQUENCE_OF_ASIdOrRange,
1039     &ett_pkix1explicit_ASIdOrRange,
1040     &ett_pkix1explicit_ASRange,
1041
1042 /*--- End of included file: packet-pkix1explicit-ettarr.c ---*/
1043 #line 128 "packet-pkix1explicit-template.c"
1044   };
1045
1046   /* Register protocol */
1047   proto_pkix1explicit = proto_register_protocol(PNAME, PSNAME, PFNAME);
1048
1049   /* Register fields and subtrees */
1050   proto_register_field_array(proto_pkix1explicit, hf, array_length(hf));
1051   proto_register_subtree_array(ett, array_length(ett));
1052
1053 }
1054
1055
1056 /*--- proto_reg_handoff_pkix1explicit -------------------------------------------*/
1057 void proto_reg_handoff_pkix1explicit(void) {
1058         oid_add_from_string("id-pkix","1.3.6.1.5.5.7");
1059
1060 /*--- Included file: packet-pkix1explicit-dis-tab.c ---*/
1061 #line 1 "packet-pkix1explicit-dis-tab.c"
1062   register_ber_oid_dissector("1.3.6.1.5.5.7.2.1", dissect_DirectoryString_PDU, proto_pkix1explicit, "id-qt-cps");
1063   register_ber_oid_dissector("1.2.840.10046.2.1", dissect_DomainParameters_PDU, proto_pkix1explicit, "dhpublicnumber");
1064   register_ber_oid_dissector("1.3.6.1.5.5.7.1.7", dissect_IPAddrBlocks_PDU, proto_pkix1explicit, "id-pe-ipAddrBlocks");
1065   register_ber_oid_dissector("1.3.6.1.5.5.7.1.8", dissect_ASIdentifiers_PDU, proto_pkix1explicit, "id-pe-autonomousSysIds");
1066
1067
1068 /*--- End of included file: packet-pkix1explicit-dis-tab.c ---*/
1069 #line 144 "packet-pkix1explicit-template.c"
1070 }
1071