/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, ¶meter_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 | } |