Coverage Report

Created: 2025-12-27 06:52

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/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