Coverage Report

Created: 2026-11-12 07:01

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