/src/wireshark/epan/dissectors/packet-pkixqualified.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-pkixqualified.c */ |
4 | | /* asn2wrs.py -b -q -L -p pkixqualified -c ./pkixqualified.cnf -s ./packet-pkixqualified-template -D . -O ../.. PKIXqualified.asn PKIXServiceNameSAN88.asn PKIXServiceNameSAN93.asn */ |
5 | | |
6 | | /* packet-pkixqualified.c |
7 | | * Routines for RFC3739 PKIXqualified packet dissection |
8 | | * Ronnie Sahlberg 2004 |
9 | | * |
10 | | * Wireshark - Network traffic analyzer |
11 | | * By Gerald Combs <gerald@wireshark.org> |
12 | | * Copyright 1998 Gerald Combs |
13 | | * |
14 | | * SPDX-License-Identifier: GPL-2.0-or-later |
15 | | */ |
16 | | |
17 | | #include "config.h" |
18 | | |
19 | | #include <epan/packet.h> |
20 | | #include <epan/asn1.h> |
21 | | #include <wsutil/array.h> |
22 | | |
23 | | #include "packet-ber.h" |
24 | | #include "packet-pkixqualified.h" |
25 | | #include "packet-x509af.h" |
26 | | #include "packet-x509ce.h" |
27 | | #include "packet-x509sat.h" |
28 | | |
29 | 14 | #define PNAME "PKIX Qualified" |
30 | 14 | #define PSNAME "PKIXQUALIFIED" |
31 | 14 | #define PFNAME "pkixqualified" |
32 | | |
33 | | void proto_register_pkixqualified(void); |
34 | | void proto_reg_handoff_pkixqualified(void); |
35 | | |
36 | | |
37 | | /* Initialize the protocol and registered fields */ |
38 | | static int proto_pkixqualified; |
39 | | static int hf_pkixqualified_Generalizedtime_PDU; /* Generalizedtime */ |
40 | | static int hf_pkixqualified_Directorystring_PDU; /* Directorystring */ |
41 | | static int hf_pkixqualified_Printablestring_PDU; /* Printablestring */ |
42 | | static int hf_pkixqualified_BiometricSyntax_PDU; /* BiometricSyntax */ |
43 | | static int hf_pkixqualified_QCStatements_PDU; /* QCStatements */ |
44 | | static int hf_pkixqualified_SemanticsInformation_PDU; /* SemanticsInformation */ |
45 | | static int hf_pkixqualified_XmppAddr_PDU; /* XmppAddr */ |
46 | | static int hf_pkixqualified_SRVName_PDU; /* SRVName */ |
47 | | static int hf_pkixqualified_BiometricSyntax_item; /* BiometricData */ |
48 | | static int hf_pkixqualified_typeOfBiometricData; /* TypeOfBiometricData */ |
49 | | static int hf_pkixqualified_hashAlgorithm; /* AlgorithmIdentifier */ |
50 | | static int hf_pkixqualified_biometricDataHash; /* OCTET_STRING */ |
51 | | static int hf_pkixqualified_sourceDataUri; /* IA5String */ |
52 | | static int hf_pkixqualified_predefinedBiometricType; /* PredefinedBiometricType */ |
53 | | static int hf_pkixqualified_biometricDataOid; /* OBJECT_IDENTIFIER */ |
54 | | static int hf_pkixqualified_QCStatements_item; /* QCStatement */ |
55 | | static int hf_pkixqualified_statementId; /* T_statementId */ |
56 | | static int hf_pkixqualified_statementInfo; /* T_statementInfo */ |
57 | | static int hf_pkixqualified_semanticsIdentifier; /* OBJECT_IDENTIFIER */ |
58 | | static int hf_pkixqualified_nameRegistrationAuthorities; /* NameRegistrationAuthorities */ |
59 | | static int hf_pkixqualified_NameRegistrationAuthorities_item; /* GeneralName */ |
60 | | |
61 | | /* Initialize the subtree pointers */ |
62 | | static int ett_pkixqualified_BiometricSyntax; |
63 | | static int ett_pkixqualified_BiometricData; |
64 | | static int ett_pkixqualified_TypeOfBiometricData; |
65 | | static int ett_pkixqualified_QCStatements; |
66 | | static int ett_pkixqualified_QCStatement; |
67 | | static int ett_pkixqualified_SemanticsInformation; |
68 | | static int ett_pkixqualified_NameRegistrationAuthorities; |
69 | | |
70 | | static const char *object_identifier_id; |
71 | | |
72 | | |
73 | | |
74 | | static unsigned |
75 | 0 | dissect_pkixqualified_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_) { |
76 | 0 | offset = dissect_ber_GeneralizedTime(implicit_tag, actx, tree, tvb, offset, hf_index); |
77 | |
|
78 | 0 | return offset; |
79 | 0 | } |
80 | | |
81 | | |
82 | | |
83 | | static unsigned |
84 | 0 | dissect_pkixqualified_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_) { |
85 | 0 | offset = dissect_x509sat_DirectoryString(implicit_tag, tvb, offset, actx, tree, hf_index); |
86 | |
|
87 | 0 | return offset; |
88 | 0 | } |
89 | | |
90 | | |
91 | | |
92 | | static unsigned |
93 | 0 | dissect_pkixqualified_Printablestring(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
94 | 0 | offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString, |
95 | 0 | actx, tree, tvb, offset, hf_index, |
96 | 0 | NULL); |
97 | |
|
98 | 0 | return offset; |
99 | 0 | } |
100 | | |
101 | | |
102 | | static const value_string pkixqualified_PredefinedBiometricType_vals[] = { |
103 | | { 0, "picture" }, |
104 | | { 1, "handwritten-signature" }, |
105 | | { 0, NULL } |
106 | | }; |
107 | | |
108 | | |
109 | | static unsigned |
110 | 0 | dissect_pkixqualified_PredefinedBiometricType(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
111 | 0 | offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, |
112 | 0 | NULL); |
113 | |
|
114 | 0 | return offset; |
115 | 0 | } |
116 | | |
117 | | |
118 | | |
119 | | static unsigned |
120 | 0 | dissect_pkixqualified_OBJECT_IDENTIFIER(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
121 | 0 | offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL); |
122 | |
|
123 | 0 | return offset; |
124 | 0 | } |
125 | | |
126 | | |
127 | | static const value_string pkixqualified_TypeOfBiometricData_vals[] = { |
128 | | { 0, "predefinedBiometricType" }, |
129 | | { 1, "biometricDataOid" }, |
130 | | { 0, NULL } |
131 | | }; |
132 | | |
133 | | static const ber_choice_t TypeOfBiometricData_choice[] = { |
134 | | { 0, &hf_pkixqualified_predefinedBiometricType, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_pkixqualified_PredefinedBiometricType }, |
135 | | { 1, &hf_pkixqualified_biometricDataOid, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_pkixqualified_OBJECT_IDENTIFIER }, |
136 | | { 0, NULL, 0, 0, 0, NULL } |
137 | | }; |
138 | | |
139 | | static unsigned |
140 | 0 | dissect_pkixqualified_TypeOfBiometricData(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
141 | 0 | offset = dissect_ber_choice(actx, tree, tvb, offset, |
142 | 0 | TypeOfBiometricData_choice, hf_index, ett_pkixqualified_TypeOfBiometricData, |
143 | 0 | NULL); |
144 | |
|
145 | 0 | return offset; |
146 | 0 | } |
147 | | |
148 | | |
149 | | |
150 | | static unsigned |
151 | 0 | dissect_pkixqualified_OCTET_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_) { |
152 | 0 | offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, |
153 | 0 | NULL); |
154 | |
|
155 | 0 | return offset; |
156 | 0 | } |
157 | | |
158 | | |
159 | | |
160 | | static unsigned |
161 | 0 | dissect_pkixqualified_IA5String(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
162 | 0 | offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String, |
163 | 0 | actx, tree, tvb, offset, hf_index, |
164 | 0 | NULL); |
165 | |
|
166 | 0 | return offset; |
167 | 0 | } |
168 | | |
169 | | |
170 | | static const ber_sequence_t BiometricData_sequence[] = { |
171 | | { &hf_pkixqualified_typeOfBiometricData, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_pkixqualified_TypeOfBiometricData }, |
172 | | { &hf_pkixqualified_hashAlgorithm, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier }, |
173 | | { &hf_pkixqualified_biometricDataHash, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_pkixqualified_OCTET_STRING }, |
174 | | { &hf_pkixqualified_sourceDataUri, BER_CLASS_UNI, BER_UNI_TAG_IA5String, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_pkixqualified_IA5String }, |
175 | | { NULL, 0, 0, 0, NULL } |
176 | | }; |
177 | | |
178 | | static unsigned |
179 | 0 | dissect_pkixqualified_BiometricData(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
180 | 0 | offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, |
181 | 0 | BiometricData_sequence, hf_index, ett_pkixqualified_BiometricData); |
182 | |
|
183 | 0 | return offset; |
184 | 0 | } |
185 | | |
186 | | |
187 | | static const ber_sequence_t BiometricSyntax_sequence_of[1] = { |
188 | | { &hf_pkixqualified_BiometricSyntax_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_pkixqualified_BiometricData }, |
189 | | }; |
190 | | |
191 | | static unsigned |
192 | 0 | dissect_pkixqualified_BiometricSyntax(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
193 | 0 | offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, |
194 | 0 | BiometricSyntax_sequence_of, hf_index, ett_pkixqualified_BiometricSyntax); |
195 | |
|
196 | 0 | return offset; |
197 | 0 | } |
198 | | |
199 | | |
200 | | |
201 | | static unsigned |
202 | 0 | dissect_pkixqualified_T_statementId(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
203 | 0 | offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_pkixqualified_statementId, &object_identifier_id); |
204 | |
|
205 | 0 | return offset; |
206 | 0 | } |
207 | | |
208 | | |
209 | | |
210 | | static unsigned |
211 | 0 | dissect_pkixqualified_T_statementInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
212 | 0 | offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, NULL); |
213 | | |
214 | |
|
215 | 0 | return offset; |
216 | 0 | } |
217 | | |
218 | | |
219 | | static const ber_sequence_t QCStatement_sequence[] = { |
220 | | { &hf_pkixqualified_statementId, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_pkixqualified_T_statementId }, |
221 | | { &hf_pkixqualified_statementInfo, BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_pkixqualified_T_statementInfo }, |
222 | | { NULL, 0, 0, 0, NULL } |
223 | | }; |
224 | | |
225 | | static unsigned |
226 | 0 | dissect_pkixqualified_QCStatement(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 | object_identifier_id = NULL; |
228 | |
|
229 | 0 | offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, |
230 | 0 | QCStatement_sequence, hf_index, ett_pkixqualified_QCStatement); |
231 | |
|
232 | 0 | return offset; |
233 | 0 | } |
234 | | |
235 | | |
236 | | static const ber_sequence_t QCStatements_sequence_of[1] = { |
237 | | { &hf_pkixqualified_QCStatements_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_pkixqualified_QCStatement }, |
238 | | }; |
239 | | |
240 | | static unsigned |
241 | 0 | dissect_pkixqualified_QCStatements(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
242 | 0 | offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, |
243 | 0 | QCStatements_sequence_of, hf_index, ett_pkixqualified_QCStatements); |
244 | |
|
245 | 0 | return offset; |
246 | 0 | } |
247 | | |
248 | | |
249 | | static const ber_sequence_t NameRegistrationAuthorities_sequence_of[1] = { |
250 | | { &hf_pkixqualified_NameRegistrationAuthorities_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_x509ce_GeneralName }, |
251 | | }; |
252 | | |
253 | | static unsigned |
254 | 0 | dissect_pkixqualified_NameRegistrationAuthorities(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
255 | 0 | offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, |
256 | 0 | NameRegistrationAuthorities_sequence_of, hf_index, ett_pkixqualified_NameRegistrationAuthorities); |
257 | |
|
258 | 0 | return offset; |
259 | 0 | } |
260 | | |
261 | | |
262 | | static const ber_sequence_t SemanticsInformation_sequence[] = { |
263 | | { &hf_pkixqualified_semanticsIdentifier, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_pkixqualified_OBJECT_IDENTIFIER }, |
264 | | { &hf_pkixqualified_nameRegistrationAuthorities, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_pkixqualified_NameRegistrationAuthorities }, |
265 | | { NULL, 0, 0, 0, NULL } |
266 | | }; |
267 | | |
268 | | static unsigned |
269 | 0 | dissect_pkixqualified_SemanticsInformation(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
270 | 0 | offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, |
271 | 0 | SemanticsInformation_sequence, hf_index, ett_pkixqualified_SemanticsInformation); |
272 | |
|
273 | 0 | return offset; |
274 | 0 | } |
275 | | |
276 | | |
277 | | |
278 | | static unsigned |
279 | 0 | dissect_pkixqualified_XmppAddr(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
280 | 0 | offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_UTF8String, |
281 | 0 | actx, tree, tvb, offset, hf_index, |
282 | 0 | NULL); |
283 | |
|
284 | 0 | return offset; |
285 | 0 | } |
286 | | |
287 | | |
288 | | |
289 | | static unsigned |
290 | 0 | dissect_pkixqualified_SRVName(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { |
291 | 0 | offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_IA5String, |
292 | 0 | actx, tree, tvb, offset, |
293 | 0 | 1, NO_BOUND, hf_index, NULL); |
294 | |
|
295 | 0 | return offset; |
296 | 0 | } |
297 | | |
298 | | /*--- PDUs ---*/ |
299 | | |
300 | 0 | static int dissect_Generalizedtime_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { |
301 | 0 | unsigned offset = 0; |
302 | 0 | asn1_ctx_t asn1_ctx; |
303 | 0 | asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo); |
304 | 0 | offset = dissect_pkixqualified_Generalizedtime(false, tvb, offset, &asn1_ctx, tree, hf_pkixqualified_Generalizedtime_PDU); |
305 | 0 | return offset; |
306 | 0 | } |
307 | 0 | static int dissect_Directorystring_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { |
308 | 0 | unsigned offset = 0; |
309 | 0 | asn1_ctx_t asn1_ctx; |
310 | 0 | asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo); |
311 | 0 | offset = dissect_pkixqualified_Directorystring(false, tvb, offset, &asn1_ctx, tree, hf_pkixqualified_Directorystring_PDU); |
312 | 0 | return offset; |
313 | 0 | } |
314 | 0 | static int dissect_Printablestring_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { |
315 | 0 | unsigned offset = 0; |
316 | 0 | asn1_ctx_t asn1_ctx; |
317 | 0 | asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo); |
318 | 0 | offset = dissect_pkixqualified_Printablestring(false, tvb, offset, &asn1_ctx, tree, hf_pkixqualified_Printablestring_PDU); |
319 | 0 | return offset; |
320 | 0 | } |
321 | 0 | static int dissect_BiometricSyntax_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { |
322 | 0 | unsigned offset = 0; |
323 | 0 | asn1_ctx_t asn1_ctx; |
324 | 0 | asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo); |
325 | 0 | offset = dissect_pkixqualified_BiometricSyntax(false, tvb, offset, &asn1_ctx, tree, hf_pkixqualified_BiometricSyntax_PDU); |
326 | 0 | return offset; |
327 | 0 | } |
328 | 0 | static int dissect_QCStatements_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { |
329 | 0 | unsigned offset = 0; |
330 | 0 | asn1_ctx_t asn1_ctx; |
331 | 0 | asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo); |
332 | 0 | offset = dissect_pkixqualified_QCStatements(false, tvb, offset, &asn1_ctx, tree, hf_pkixqualified_QCStatements_PDU); |
333 | 0 | return offset; |
334 | 0 | } |
335 | 0 | static int dissect_SemanticsInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { |
336 | 0 | unsigned offset = 0; |
337 | 0 | asn1_ctx_t asn1_ctx; |
338 | 0 | asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo); |
339 | 0 | offset = dissect_pkixqualified_SemanticsInformation(false, tvb, offset, &asn1_ctx, tree, hf_pkixqualified_SemanticsInformation_PDU); |
340 | 0 | return offset; |
341 | 0 | } |
342 | 0 | static int dissect_XmppAddr_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { |
343 | 0 | unsigned offset = 0; |
344 | 0 | asn1_ctx_t asn1_ctx; |
345 | 0 | asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo); |
346 | 0 | offset = dissect_pkixqualified_XmppAddr(false, tvb, offset, &asn1_ctx, tree, hf_pkixqualified_XmppAddr_PDU); |
347 | 0 | return offset; |
348 | 0 | } |
349 | 0 | static int dissect_SRVName_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { |
350 | 0 | unsigned offset = 0; |
351 | 0 | asn1_ctx_t asn1_ctx; |
352 | 0 | asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo); |
353 | 0 | offset = dissect_pkixqualified_SRVName(false, tvb, offset, &asn1_ctx, tree, hf_pkixqualified_SRVName_PDU); |
354 | 0 | return offset; |
355 | 0 | } |
356 | | |
357 | | |
358 | | |
359 | | /*--- proto_register_pkixqualified ----------------------------------------------*/ |
360 | 14 | void proto_register_pkixqualified(void) { |
361 | | |
362 | | /* List of fields */ |
363 | 14 | static hf_register_info hf[] = { |
364 | 14 | { &hf_pkixqualified_Generalizedtime_PDU, |
365 | 14 | { "Generalizedtime", "pkixqualified.Generalizedtime", |
366 | 14 | FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, |
367 | 14 | NULL, HFILL }}, |
368 | 14 | { &hf_pkixqualified_Directorystring_PDU, |
369 | 14 | { "Directorystring", "pkixqualified.Directorystring", |
370 | 14 | FT_UINT32, BASE_DEC, VALS(x509sat_DirectoryString_vals), 0, |
371 | 14 | NULL, HFILL }}, |
372 | 14 | { &hf_pkixqualified_Printablestring_PDU, |
373 | 14 | { "Printablestring", "pkixqualified.Printablestring", |
374 | 14 | FT_STRING, BASE_NONE, NULL, 0, |
375 | 14 | NULL, HFILL }}, |
376 | 14 | { &hf_pkixqualified_BiometricSyntax_PDU, |
377 | 14 | { "BiometricSyntax", "pkixqualified.BiometricSyntax", |
378 | 14 | FT_UINT32, BASE_DEC, NULL, 0, |
379 | 14 | NULL, HFILL }}, |
380 | 14 | { &hf_pkixqualified_QCStatements_PDU, |
381 | 14 | { "QCStatements", "pkixqualified.QCStatements", |
382 | 14 | FT_UINT32, BASE_DEC, NULL, 0, |
383 | 14 | NULL, HFILL }}, |
384 | 14 | { &hf_pkixqualified_SemanticsInformation_PDU, |
385 | 14 | { "SemanticsInformation", "pkixqualified.SemanticsInformation_element", |
386 | 14 | FT_NONE, BASE_NONE, NULL, 0, |
387 | 14 | NULL, HFILL }}, |
388 | 14 | { &hf_pkixqualified_XmppAddr_PDU, |
389 | 14 | { "XmppAddr", "pkixqualified.XmppAddr", |
390 | 14 | FT_STRING, BASE_NONE, NULL, 0, |
391 | 14 | NULL, HFILL }}, |
392 | 14 | { &hf_pkixqualified_SRVName_PDU, |
393 | 14 | { "SRVName", "pkixqualified.SRVName", |
394 | 14 | FT_STRING, BASE_NONE, NULL, 0, |
395 | 14 | NULL, HFILL }}, |
396 | 14 | { &hf_pkixqualified_BiometricSyntax_item, |
397 | 14 | { "BiometricData", "pkixqualified.BiometricData_element", |
398 | 14 | FT_NONE, BASE_NONE, NULL, 0, |
399 | 14 | NULL, HFILL }}, |
400 | 14 | { &hf_pkixqualified_typeOfBiometricData, |
401 | 14 | { "typeOfBiometricData", "pkixqualified.typeOfBiometricData", |
402 | 14 | FT_UINT32, BASE_DEC, VALS(pkixqualified_TypeOfBiometricData_vals), 0, |
403 | 14 | NULL, HFILL }}, |
404 | 14 | { &hf_pkixqualified_hashAlgorithm, |
405 | 14 | { "hashAlgorithm", "pkixqualified.hashAlgorithm_element", |
406 | 14 | FT_NONE, BASE_NONE, NULL, 0, |
407 | 14 | "AlgorithmIdentifier", HFILL }}, |
408 | 14 | { &hf_pkixqualified_biometricDataHash, |
409 | 14 | { "biometricDataHash", "pkixqualified.biometricDataHash", |
410 | 14 | FT_BYTES, BASE_NONE, NULL, 0, |
411 | 14 | "OCTET_STRING", HFILL }}, |
412 | 14 | { &hf_pkixqualified_sourceDataUri, |
413 | 14 | { "sourceDataUri", "pkixqualified.sourceDataUri", |
414 | 14 | FT_STRING, BASE_NONE, NULL, 0, |
415 | 14 | "IA5String", HFILL }}, |
416 | 14 | { &hf_pkixqualified_predefinedBiometricType, |
417 | 14 | { "predefinedBiometricType", "pkixqualified.predefinedBiometricType", |
418 | 14 | FT_INT32, BASE_DEC, VALS(pkixqualified_PredefinedBiometricType_vals), 0, |
419 | 14 | NULL, HFILL }}, |
420 | 14 | { &hf_pkixqualified_biometricDataOid, |
421 | 14 | { "biometricDataOid", "pkixqualified.biometricDataOid", |
422 | 14 | FT_OID, BASE_NONE, NULL, 0, |
423 | 14 | "OBJECT_IDENTIFIER", HFILL }}, |
424 | 14 | { &hf_pkixqualified_QCStatements_item, |
425 | 14 | { "QCStatement", "pkixqualified.QCStatement_element", |
426 | 14 | FT_NONE, BASE_NONE, NULL, 0, |
427 | 14 | NULL, HFILL }}, |
428 | 14 | { &hf_pkixqualified_statementId, |
429 | 14 | { "statementId", "pkixqualified.statementId", |
430 | 14 | FT_OID, BASE_NONE, NULL, 0, |
431 | 14 | NULL, HFILL }}, |
432 | 14 | { &hf_pkixqualified_statementInfo, |
433 | 14 | { "statementInfo", "pkixqualified.statementInfo_element", |
434 | 14 | FT_NONE, BASE_NONE, NULL, 0, |
435 | 14 | NULL, HFILL }}, |
436 | 14 | { &hf_pkixqualified_semanticsIdentifier, |
437 | 14 | { "semanticsIdentifier", "pkixqualified.semanticsIdentifier", |
438 | 14 | FT_OID, BASE_NONE, NULL, 0, |
439 | 14 | "OBJECT_IDENTIFIER", HFILL }}, |
440 | 14 | { &hf_pkixqualified_nameRegistrationAuthorities, |
441 | 14 | { "nameRegistrationAuthorities", "pkixqualified.nameRegistrationAuthorities", |
442 | 14 | FT_UINT32, BASE_DEC, NULL, 0, |
443 | 14 | NULL, HFILL }}, |
444 | 14 | { &hf_pkixqualified_NameRegistrationAuthorities_item, |
445 | 14 | { "GeneralName", "pkixqualified.GeneralName", |
446 | 14 | FT_UINT32, BASE_DEC, VALS(x509ce_GeneralName_vals), 0, |
447 | 14 | NULL, HFILL }}, |
448 | 14 | }; |
449 | | |
450 | | /* List of subtrees */ |
451 | 14 | static int *ett[] = { |
452 | 14 | &ett_pkixqualified_BiometricSyntax, |
453 | 14 | &ett_pkixqualified_BiometricData, |
454 | 14 | &ett_pkixqualified_TypeOfBiometricData, |
455 | 14 | &ett_pkixqualified_QCStatements, |
456 | 14 | &ett_pkixqualified_QCStatement, |
457 | 14 | &ett_pkixqualified_SemanticsInformation, |
458 | 14 | &ett_pkixqualified_NameRegistrationAuthorities, |
459 | 14 | }; |
460 | | |
461 | | /* Register protocol */ |
462 | 14 | proto_pkixqualified = proto_register_protocol(PNAME, PSNAME, PFNAME); |
463 | | |
464 | | /* Register fields and subtrees */ |
465 | 14 | proto_register_field_array(proto_pkixqualified, hf, array_length(hf)); |
466 | 14 | proto_register_subtree_array(ett, array_length(ett)); |
467 | | |
468 | 14 | } |
469 | | |
470 | | |
471 | | /*--- proto_reg_handoff_pkixqualified -------------------------------------------*/ |
472 | 14 | void proto_reg_handoff_pkixqualified(void) { |
473 | 14 | register_ber_oid_dissector("1.3.6.1.5.5.7.1.2", dissect_BiometricSyntax_PDU, proto_pkixqualified, "id-pe-biometricInfo"); |
474 | 14 | register_ber_oid_dissector("1.3.6.1.5.5.7.1.3", dissect_QCStatements_PDU, proto_pkixqualified, "id-pe-qcStatements"); |
475 | 14 | register_ber_oid_dissector("1.3.6.1.5.5.7.11.1", dissect_SemanticsInformation_PDU, proto_pkixqualified, "id-qcs-pkixQCSyntax-v1"); |
476 | 14 | register_ber_oid_dissector("1.3.6.1.5.5.7.11.2", dissect_SemanticsInformation_PDU, proto_pkixqualified, "id-qcs-pkixQCSyntax-v2"); |
477 | 14 | register_ber_oid_dissector("1.3.6.1.5.5.7.8.5", dissect_XmppAddr_PDU, proto_pkixqualified, "id-on-xmppAddr"); |
478 | 14 | register_ber_oid_dissector("1.3.6.1.5.5.7.9.1", dissect_Generalizedtime_PDU, proto_pkixqualified, "id-pda-dateOfBirth"); |
479 | 14 | register_ber_oid_dissector("1.3.6.1.5.5.7.9.2", dissect_Directorystring_PDU, proto_pkixqualified, "id-pda-placeOfBirth"); |
480 | 14 | register_ber_oid_dissector("1.3.6.1.5.5.7.9.3", dissect_Printablestring_PDU, proto_pkixqualified, "id-pda-gender"); |
481 | 14 | register_ber_oid_dissector("1.3.6.1.5.5.7.9.4", dissect_Printablestring_PDU, proto_pkixqualified, "id-pda-countryOfCitizenship"); |
482 | 14 | register_ber_oid_dissector("1.3.6.1.5.5.7.9.5", dissect_Printablestring_PDU, proto_pkixqualified, "id-pda-countryOfResidence"); |
483 | 14 | register_ber_oid_dissector("1.3.6.1.5.5.7.8.7", dissect_SRVName_PDU, proto_pkixqualified, "id-on-dnsSRV"); |
484 | | |
485 | 14 | } |
486 | | |