Coverage Report

Created: 2026-11-12 07:01

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/wireshark/epan/dissectors/packet-pkixac.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-pkixac.c                                                            */
4
/* asn2wrs.py -b -q -L -p pkixac -c ./pkixac.cnf -s ./packet-pkixac-template -D . -O ../.. PKIXAttributeCertificate.asn */
5
6
/* packet-pkixac.c
7
 *
8
 * Routines for PKIXAttributeCertificate (RFC3281) packet dissection.
9
 *
10
 * Copyright 2010, Stig Bjorlykke <stig@bjorlykke.org>
11
 *
12
 * Wireshark - Network traffic analyzer
13
 * By Gerald Combs <gerald@wireshark.org>
14
 * Copyright 1998 Gerald Combs
15
 *
16
 * SPDX-License-Identifier: GPL-2.0-or-later
17
 */
18
19
#include "config.h"
20
21
#include <epan/packet.h>
22
#include <wsutil/array.h>
23
24
#include <epan/asn1.h>
25
#include "packet-ber.h"
26
#include "packet-pkix1explicit.h"
27
#include "packet-pkix1implicit.h"
28
#include "packet-x509ce.h"
29
30
void proto_register_pkixac(void);
31
void proto_reg_handoff_pkixac(void);
32
33
/* Initialize the protocol and registered fields */
34
static int proto_pkixac;
35
static int hf_pkixac_Targets_PDU;                 /* Targets */
36
static int hf_pkixac_IetfAttrSyntax_PDU;          /* IetfAttrSyntax */
37
static int hf_pkixac_SvceAuthInfo_PDU;            /* SvceAuthInfo */
38
static int hf_pkixac_RoleSyntax_PDU;              /* RoleSyntax */
39
static int hf_pkixac_Clearance_PDU;               /* Clearance */
40
static int hf_pkixac_RFC3281Clearance_PDU;        /* RFC3281Clearance */
41
static int hf_pkixac_AAControls_PDU;              /* AAControls */
42
static int hf_pkixac_ProxyInfo_PDU;               /* ProxyInfo */
43
static int hf_pkixac_digestedObjectType;          /* T_digestedObjectType */
44
static int hf_pkixac_otherObjectTypeID;           /* OBJECT_IDENTIFIER */
45
static int hf_pkixac_digestAlgorithm;             /* AlgorithmIdentifier */
46
static int hf_pkixac_objectDigest;                /* BIT_STRING */
47
static int hf_pkixac_issuer;                      /* GeneralNames */
48
static int hf_pkixac_serial;                      /* CertificateSerialNumber */
49
static int hf_pkixac_issuerUID;                   /* UniqueIdentifier */
50
static int hf_pkixac_Targets_item;                /* Target */
51
static int hf_pkixac_targetName;                  /* GeneralName */
52
static int hf_pkixac_targetGroup;                 /* GeneralName */
53
static int hf_pkixac_targetCert;                  /* TargetCert */
54
static int hf_pkixac_targetCertificate;           /* IssuerSerial */
55
static int hf_pkixac_certDigestInfo;              /* ObjectDigestInfo */
56
static int hf_pkixac_policyAuthority;             /* GeneralNames */
57
static int hf_pkixac_values;                      /* T_values */
58
static int hf_pkixac_values_item;                 /* T_values_item */
59
static int hf_pkixac_octets;                      /* OCTET_STRING */
60
static int hf_pkixac_oid;                         /* OBJECT_IDENTIFIER */
61
static int hf_pkixac_string;                      /* UTF8String */
62
static int hf_pkixac_service;                     /* GeneralName */
63
static int hf_pkixac_ident;                       /* GeneralName */
64
static int hf_pkixac_authInfo;                    /* OCTET_STRING */
65
static int hf_pkixac_roleAuthority;               /* GeneralNames */
66
static int hf_pkixac_roleName;                    /* GeneralName */
67
static int hf_pkixac_policyId;                    /* OBJECT_IDENTIFIER */
68
static int hf_pkixac_classList;                   /* ClassList */
69
static int hf_pkixac_securityCategories;          /* SET_OF_SecurityCategory */
70
static int hf_pkixac_securityCategories_item;     /* SecurityCategory */
71
static int hf_pkixac_type;                        /* T_type */
72
static int hf_pkixac_value;                       /* T_value */
73
static int hf_pkixac_pathLenConstraint;           /* INTEGER_0_MAX */
74
static int hf_pkixac_permittedAttrs;              /* AttrSpec */
75
static int hf_pkixac_excludedAttrs;               /* AttrSpec */
76
static int hf_pkixac_permitUnSpecified;           /* BOOLEAN */
77
static int hf_pkixac_AttrSpec_item;               /* OBJECT_IDENTIFIER */
78
static int hf_pkixac_ProxyInfo_item;              /* Targets */
79
/* named bits */
80
static int hf_pkixac_ClassList_unmarked;
81
static int hf_pkixac_ClassList_unclassified;
82
static int hf_pkixac_ClassList_restricted;
83
static int hf_pkixac_ClassList_confidential;
84
static int hf_pkixac_ClassList_secret;
85
static int hf_pkixac_ClassList_topSecret;
86
87
/* Initialize the subtree pointers */
88
static int ett_pkixac;
89
static int ett_pkixac_ObjectDigestInfo;
90
static int ett_pkixac_IssuerSerial;
91
static int ett_pkixac_Targets;
92
static int ett_pkixac_Target;
93
static int ett_pkixac_TargetCert;
94
static int ett_pkixac_IetfAttrSyntax;
95
static int ett_pkixac_T_values;
96
static int ett_pkixac_T_values_item;
97
static int ett_pkixac_SvceAuthInfo;
98
static int ett_pkixac_RoleSyntax;
99
static int ett_pkixac_Clearance;
100
static int ett_pkixac_SET_OF_SecurityCategory;
101
static int ett_pkixac_RFC3281Clearance;
102
static int ett_pkixac_ClassList;
103
static int ett_pkixac_SecurityCategory;
104
static int ett_pkixac_AAControls;
105
static int ett_pkixac_AttrSpec;
106
static int ett_pkixac_ProxyInfo;
107
108
static const char *object_identifier_id;
109
110
111
static const value_string pkixac_T_digestedObjectType_vals[] = {
112
  {   0, "publicKey" },
113
  {   1, "publicKeyCert" },
114
  {   2, "otherObjectTypes" },
115
  { 0, NULL }
116
};
117
118
119
static unsigned
120
3
dissect_pkixac_T_digestedObjectType(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
3
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
122
3
                                  NULL);
123
124
3
  return offset;
125
3
}
126
127
128
129
static unsigned
130
1
dissect_pkixac_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_) {
131
1
  offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
132
133
1
  return offset;
134
1
}
135
136
137
138
static unsigned
139
1
dissect_pkixac_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_) {
140
1
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
141
1
                                    NULL, 0, hf_index, -1,
142
1
                                    NULL);
143
144
1
  return offset;
145
1
}
146
147
148
static const ber_sequence_t ObjectDigestInfo_sequence[] = {
149
  { &hf_pkixac_digestedObjectType, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_pkixac_T_digestedObjectType },
150
  { &hf_pkixac_otherObjectTypeID, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_pkixac_OBJECT_IDENTIFIER },
151
  { &hf_pkixac_digestAlgorithm, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_AlgorithmIdentifier },
152
  { &hf_pkixac_objectDigest , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_pkixac_BIT_STRING },
153
  { NULL, 0, 0, 0, NULL }
154
};
155
156
static unsigned
157
3
dissect_pkixac_ObjectDigestInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
158
3
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
159
3
                                   ObjectDigestInfo_sequence, hf_index, ett_pkixac_ObjectDigestInfo);
160
161
3
  return offset;
162
3
}
163
164
165
static const ber_sequence_t IssuerSerial_sequence[] = {
166
  { &hf_pkixac_issuer       , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509ce_GeneralNames },
167
  { &hf_pkixac_serial       , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_CertificateSerialNumber },
168
  { &hf_pkixac_issuerUID    , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_UniqueIdentifier },
169
  { NULL, 0, 0, 0, NULL }
170
};
171
172
static unsigned
173
9
dissect_pkixac_IssuerSerial(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
174
9
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
175
9
                                   IssuerSerial_sequence, hf_index, ett_pkixac_IssuerSerial);
176
177
9
  return offset;
178
9
}
179
180
181
static const ber_sequence_t TargetCert_sequence[] = {
182
  { &hf_pkixac_targetCertificate, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_pkixac_IssuerSerial },
183
  { &hf_pkixac_targetName   , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_x509ce_GeneralName },
184
  { &hf_pkixac_certDigestInfo, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_pkixac_ObjectDigestInfo },
185
  { NULL, 0, 0, 0, NULL }
186
};
187
188
static unsigned
189
25
dissect_pkixac_TargetCert(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
190
25
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
191
25
                                   TargetCert_sequence, hf_index, ett_pkixac_TargetCert);
192
193
25
  return offset;
194
25
}
195
196
197
static const value_string pkixac_Target_vals[] = {
198
  {   0, "targetName" },
199
  {   1, "targetGroup" },
200
  {   2, "targetCert" },
201
  { 0, NULL }
202
};
203
204
static const ber_choice_t Target_choice[] = {
205
  {   0, &hf_pkixac_targetName   , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x509ce_GeneralName },
206
  {   1, &hf_pkixac_targetGroup  , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_x509ce_GeneralName },
207
  {   2, &hf_pkixac_targetCert   , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_pkixac_TargetCert },
208
  { 0, NULL, 0, 0, 0, NULL }
209
};
210
211
static unsigned
212
36
dissect_pkixac_Target(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
213
36
  offset = dissect_ber_choice(actx, tree, tvb, offset,
214
36
                                 Target_choice, hf_index, ett_pkixac_Target,
215
36
                                 NULL);
216
217
36
  return offset;
218
36
}
219
220
221
static const ber_sequence_t Targets_sequence_of[1] = {
222
  { &hf_pkixac_Targets_item , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_pkixac_Target },
223
};
224
225
static unsigned
226
11
dissect_pkixac_Targets(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
11
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
228
11
                                      Targets_sequence_of, hf_index, ett_pkixac_Targets);
229
230
11
  return offset;
231
11
}
232
233
234
235
static unsigned
236
0
dissect_pkixac_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_) {
237
0
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
238
0
                                       NULL);
239
240
0
  return offset;
241
0
}
242
243
244
245
static unsigned
246
0
dissect_pkixac_UTF8String(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
247
0
  offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_UTF8String,
248
0
                                            actx, tree, tvb, offset, hf_index,
249
0
                                            NULL);
250
251
0
  return offset;
252
0
}
253
254
255
static const value_string pkixac_T_values_item_vals[] = {
256
  {   0, "octets" },
257
  {   1, "oid" },
258
  {   2, "string" },
259
  { 0, NULL }
260
};
261
262
static const ber_choice_t T_values_item_choice[] = {
263
  {   0, &hf_pkixac_octets       , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_pkixac_OCTET_STRING },
264
  {   1, &hf_pkixac_oid          , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_pkixac_OBJECT_IDENTIFIER },
265
  {   2, &hf_pkixac_string       , BER_CLASS_UNI, BER_UNI_TAG_UTF8String, BER_FLAGS_NOOWNTAG, dissect_pkixac_UTF8String },
266
  { 0, NULL, 0, 0, 0, NULL }
267
};
268
269
static unsigned
270
0
dissect_pkixac_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_) {
271
0
  offset = dissect_ber_choice(actx, tree, tvb, offset,
272
0
                                 T_values_item_choice, hf_index, ett_pkixac_T_values_item,
273
0
                                 NULL);
274
275
0
  return offset;
276
0
}
277
278
279
static const ber_sequence_t T_values_sequence_of[1] = {
280
  { &hf_pkixac_values_item  , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_pkixac_T_values_item },
281
};
282
283
static unsigned
284
0
dissect_pkixac_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_) {
285
0
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
286
0
                                      T_values_sequence_of, hf_index, ett_pkixac_T_values);
287
288
0
  return offset;
289
0
}
290
291
292
static const ber_sequence_t IetfAttrSyntax_sequence[] = {
293
  { &hf_pkixac_policyAuthority, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x509ce_GeneralNames },
294
  { &hf_pkixac_values       , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_pkixac_T_values },
295
  { NULL, 0, 0, 0, NULL }
296
};
297
298
static unsigned
299
0
dissect_pkixac_IetfAttrSyntax(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
300
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
301
0
                                   IetfAttrSyntax_sequence, hf_index, ett_pkixac_IetfAttrSyntax);
302
303
0
  return offset;
304
0
}
305
306
307
static const ber_sequence_t SvceAuthInfo_sequence[] = {
308
  { &hf_pkixac_service      , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_x509ce_GeneralName },
309
  { &hf_pkixac_ident        , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_x509ce_GeneralName },
310
  { &hf_pkixac_authInfo     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_pkixac_OCTET_STRING },
311
  { NULL, 0, 0, 0, NULL }
312
};
313
314
static unsigned
315
0
dissect_pkixac_SvceAuthInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
316
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
317
0
                                   SvceAuthInfo_sequence, hf_index, ett_pkixac_SvceAuthInfo);
318
319
0
  return offset;
320
0
}
321
322
323
static const ber_sequence_t RoleSyntax_sequence[] = {
324
  { &hf_pkixac_roleAuthority, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x509ce_GeneralNames },
325
  { &hf_pkixac_roleName     , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_x509ce_GeneralName },
326
  { NULL, 0, 0, 0, NULL }
327
};
328
329
static unsigned
330
0
dissect_pkixac_RoleSyntax(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
331
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
332
0
                                   RoleSyntax_sequence, hf_index, ett_pkixac_RoleSyntax);
333
334
0
  return offset;
335
0
}
336
337
338
static int * const ClassList_bits[] = {
339
  &hf_pkixac_ClassList_unmarked,
340
  &hf_pkixac_ClassList_unclassified,
341
  &hf_pkixac_ClassList_restricted,
342
  &hf_pkixac_ClassList_confidential,
343
  &hf_pkixac_ClassList_secret,
344
  &hf_pkixac_ClassList_topSecret,
345
  NULL
346
};
347
348
static unsigned
349
1
dissect_pkixac_ClassList(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
350
1
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
351
1
                                    ClassList_bits, 6, hf_index, ett_pkixac_ClassList,
352
1
                                    NULL);
353
354
1
  return offset;
355
1
}
356
357
358
359
static unsigned
360
0
dissect_pkixac_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_) {
361
0
  offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_index, &object_identifier_id);
362
363
0
  return offset;
364
0
}
365
366
367
368
static unsigned
369
0
dissect_pkixac_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_) {
370
0
   if (object_identifier_id)
371
0
      offset = call_ber_oid_callback (object_identifier_id, tvb, offset, actx->pinfo, tree, NULL);
372
373
374
0
  return offset;
375
0
}
376
377
378
static const ber_sequence_t SecurityCategory_sequence[] = {
379
  { &hf_pkixac_type         , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_pkixac_T_type },
380
  { &hf_pkixac_value        , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_pkixac_T_value },
381
  { NULL, 0, 0, 0, NULL }
382
};
383
384
static unsigned
385
0
dissect_pkixac_SecurityCategory(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
386
0
  object_identifier_id = NULL;
387
0
    offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
388
0
                                   SecurityCategory_sequence, hf_index, ett_pkixac_SecurityCategory);
389
390
391
392
0
  return offset;
393
0
}
394
395
396
static const ber_sequence_t SET_OF_SecurityCategory_set_of[1] = {
397
  { &hf_pkixac_securityCategories_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_pkixac_SecurityCategory },
398
};
399
400
static unsigned
401
0
dissect_pkixac_SET_OF_SecurityCategory(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
402
0
  offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
403
0
                                 SET_OF_SecurityCategory_set_of, hf_index, ett_pkixac_SET_OF_SecurityCategory);
404
405
0
  return offset;
406
0
}
407
408
409
static const ber_sequence_t Clearance_sequence[] = {
410
  { &hf_pkixac_policyId     , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_pkixac_OBJECT_IDENTIFIER },
411
  { &hf_pkixac_classList    , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_pkixac_ClassList },
412
  { &hf_pkixac_securityCategories, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_pkixac_SET_OF_SecurityCategory },
413
  { NULL, 0, 0, 0, NULL }
414
};
415
416
static unsigned
417
2
dissect_pkixac_Clearance(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
2
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
419
2
                                   Clearance_sequence, hf_index, ett_pkixac_Clearance);
420
421
2
  return offset;
422
2
}
423
424
425
static const ber_sequence_t RFC3281Clearance_sequence[] = {
426
  { &hf_pkixac_policyId     , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_pkixac_OBJECT_IDENTIFIER },
427
  { &hf_pkixac_classList    , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pkixac_ClassList },
428
  { &hf_pkixac_securityCategories, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pkixac_SET_OF_SecurityCategory },
429
  { NULL, 0, 0, 0, NULL }
430
};
431
432
static unsigned
433
0
dissect_pkixac_RFC3281Clearance(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
434
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
435
0
                                   RFC3281Clearance_sequence, hf_index, ett_pkixac_RFC3281Clearance);
436
437
0
  return offset;
438
0
}
439
440
441
442
static unsigned
443
0
dissect_pkixac_INTEGER_0_MAX(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
444
0
  offset = dissect_ber_constrained_integer64(implicit_tag, actx, tree, tvb, offset,
445
0
                                                            0U, NO_BOUND, hf_index, NULL);
446
447
0
  return offset;
448
0
}
449
450
451
static const ber_sequence_t AttrSpec_sequence_of[1] = {
452
  { &hf_pkixac_AttrSpec_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_pkixac_OBJECT_IDENTIFIER },
453
};
454
455
static unsigned
456
0
dissect_pkixac_AttrSpec(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
457
0
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
458
0
                                      AttrSpec_sequence_of, hf_index, ett_pkixac_AttrSpec);
459
460
0
  return offset;
461
0
}
462
463
464
465
static unsigned
466
0
dissect_pkixac_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_) {
467
0
  offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
468
469
0
  return offset;
470
0
}
471
472
473
static const ber_sequence_t AAControls_sequence[] = {
474
  { &hf_pkixac_pathLenConstraint, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_pkixac_INTEGER_0_MAX },
475
  { &hf_pkixac_permittedAttrs, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pkixac_AttrSpec },
476
  { &hf_pkixac_excludedAttrs, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_pkixac_AttrSpec },
477
  { &hf_pkixac_permitUnSpecified, BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_pkixac_BOOLEAN },
478
  { NULL, 0, 0, 0, NULL }
479
};
480
481
static unsigned
482
0
dissect_pkixac_AAControls(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
483
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
484
0
                                   AAControls_sequence, hf_index, ett_pkixac_AAControls);
485
486
0
  return offset;
487
0
}
488
489
490
static const ber_sequence_t ProxyInfo_sequence_of[1] = {
491
  { &hf_pkixac_ProxyInfo_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_pkixac_Targets },
492
};
493
494
static unsigned
495
0
dissect_pkixac_ProxyInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, unsigned offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
496
0
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
497
0
                                      ProxyInfo_sequence_of, hf_index, ett_pkixac_ProxyInfo);
498
499
0
  return offset;
500
0
}
501
502
/*--- PDUs ---*/
503
504
11
static int dissect_Targets_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
505
11
  unsigned offset = 0;
506
11
  asn1_ctx_t asn1_ctx;
507
11
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
508
11
  offset = dissect_pkixac_Targets(false, tvb, offset, &asn1_ctx, tree, hf_pkixac_Targets_PDU);
509
11
  return offset;
510
11
}
511
0
static int dissect_IetfAttrSyntax_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
512
0
  unsigned offset = 0;
513
0
  asn1_ctx_t asn1_ctx;
514
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
515
0
  offset = dissect_pkixac_IetfAttrSyntax(false, tvb, offset, &asn1_ctx, tree, hf_pkixac_IetfAttrSyntax_PDU);
516
0
  return offset;
517
0
}
518
0
static int dissect_SvceAuthInfo_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
519
0
  unsigned offset = 0;
520
0
  asn1_ctx_t asn1_ctx;
521
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
522
0
  offset = dissect_pkixac_SvceAuthInfo(false, tvb, offset, &asn1_ctx, tree, hf_pkixac_SvceAuthInfo_PDU);
523
0
  return offset;
524
0
}
525
0
static int dissect_RoleSyntax_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
526
0
  unsigned offset = 0;
527
0
  asn1_ctx_t asn1_ctx;
528
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
529
0
  offset = dissect_pkixac_RoleSyntax(false, tvb, offset, &asn1_ctx, tree, hf_pkixac_RoleSyntax_PDU);
530
0
  return offset;
531
0
}
532
2
static int dissect_Clearance_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
533
2
  unsigned offset = 0;
534
2
  asn1_ctx_t asn1_ctx;
535
2
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
536
2
  offset = dissect_pkixac_Clearance(false, tvb, offset, &asn1_ctx, tree, hf_pkixac_Clearance_PDU);
537
2
  return offset;
538
2
}
539
0
static int dissect_RFC3281Clearance_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
540
0
  unsigned offset = 0;
541
0
  asn1_ctx_t asn1_ctx;
542
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
543
0
  offset = dissect_pkixac_RFC3281Clearance(false, tvb, offset, &asn1_ctx, tree, hf_pkixac_RFC3281Clearance_PDU);
544
0
  return offset;
545
0
}
546
0
static int dissect_AAControls_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
547
0
  unsigned offset = 0;
548
0
  asn1_ctx_t asn1_ctx;
549
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
550
0
  offset = dissect_pkixac_AAControls(false, tvb, offset, &asn1_ctx, tree, hf_pkixac_AAControls_PDU);
551
0
  return offset;
552
0
}
553
0
static int dissect_ProxyInfo_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
554
0
  unsigned offset = 0;
555
0
  asn1_ctx_t asn1_ctx;
556
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
557
0
  offset = dissect_pkixac_ProxyInfo(false, tvb, offset, &asn1_ctx, tree, hf_pkixac_ProxyInfo_PDU);
558
0
  return offset;
559
0
}
560
561
562
/*--- proto_register_pkixac ----------------------------------------------*/
563
16
void proto_register_pkixac(void) {
564
565
  /* List of fields */
566
16
  static hf_register_info hf[] = {
567
16
    { &hf_pkixac_Targets_PDU,
568
16
      { "Targets", "pkixac.Targets",
569
16
        FT_UINT32, BASE_DEC, NULL, 0,
570
16
        NULL, HFILL }},
571
16
    { &hf_pkixac_IetfAttrSyntax_PDU,
572
16
      { "IetfAttrSyntax", "pkixac.IetfAttrSyntax_element",
573
16
        FT_NONE, BASE_NONE, NULL, 0,
574
16
        NULL, HFILL }},
575
16
    { &hf_pkixac_SvceAuthInfo_PDU,
576
16
      { "SvceAuthInfo", "pkixac.SvceAuthInfo_element",
577
16
        FT_NONE, BASE_NONE, NULL, 0,
578
16
        NULL, HFILL }},
579
16
    { &hf_pkixac_RoleSyntax_PDU,
580
16
      { "RoleSyntax", "pkixac.RoleSyntax_element",
581
16
        FT_NONE, BASE_NONE, NULL, 0,
582
16
        NULL, HFILL }},
583
16
    { &hf_pkixac_Clearance_PDU,
584
16
      { "Clearance", "pkixac.Clearance_element",
585
16
        FT_NONE, BASE_NONE, NULL, 0,
586
16
        NULL, HFILL }},
587
16
    { &hf_pkixac_RFC3281Clearance_PDU,
588
16
      { "RFC3281Clearance", "pkixac.RFC3281Clearance_element",
589
16
        FT_NONE, BASE_NONE, NULL, 0,
590
16
        NULL, HFILL }},
591
16
    { &hf_pkixac_AAControls_PDU,
592
16
      { "AAControls", "pkixac.AAControls_element",
593
16
        FT_NONE, BASE_NONE, NULL, 0,
594
16
        NULL, HFILL }},
595
16
    { &hf_pkixac_ProxyInfo_PDU,
596
16
      { "ProxyInfo", "pkixac.ProxyInfo",
597
16
        FT_UINT32, BASE_DEC, NULL, 0,
598
16
        NULL, HFILL }},
599
16
    { &hf_pkixac_digestedObjectType,
600
16
      { "digestedObjectType", "pkixac.digestedObjectType",
601
16
        FT_UINT32, BASE_DEC, VALS(pkixac_T_digestedObjectType_vals), 0,
602
16
        NULL, HFILL }},
603
16
    { &hf_pkixac_otherObjectTypeID,
604
16
      { "otherObjectTypeID", "pkixac.otherObjectTypeID",
605
16
        FT_OID, BASE_NONE, NULL, 0,
606
16
        "OBJECT_IDENTIFIER", HFILL }},
607
16
    { &hf_pkixac_digestAlgorithm,
608
16
      { "digestAlgorithm", "pkixac.digestAlgorithm_element",
609
16
        FT_NONE, BASE_NONE, NULL, 0,
610
16
        "AlgorithmIdentifier", HFILL }},
611
16
    { &hf_pkixac_objectDigest,
612
16
      { "objectDigest", "pkixac.objectDigest",
613
16
        FT_BYTES, BASE_NONE, NULL, 0,
614
16
        "BIT_STRING", HFILL }},
615
16
    { &hf_pkixac_issuer,
616
16
      { "issuer", "pkixac.issuer",
617
16
        FT_UINT32, BASE_DEC, NULL, 0,
618
16
        "GeneralNames", HFILL }},
619
16
    { &hf_pkixac_serial,
620
16
      { "serial", "pkixac.serial",
621
16
        FT_INT32, BASE_DEC, NULL, 0,
622
16
        "CertificateSerialNumber", HFILL }},
623
16
    { &hf_pkixac_issuerUID,
624
16
      { "issuerUID", "pkixac.issuerUID",
625
16
        FT_BYTES, BASE_NONE, NULL, 0,
626
16
        "UniqueIdentifier", HFILL }},
627
16
    { &hf_pkixac_Targets_item,
628
16
      { "Target", "pkixac.Target",
629
16
        FT_UINT32, BASE_DEC, VALS(pkixac_Target_vals), 0,
630
16
        NULL, HFILL }},
631
16
    { &hf_pkixac_targetName,
632
16
      { "targetName", "pkixac.targetName",
633
16
        FT_UINT32, BASE_DEC, VALS(x509ce_GeneralName_vals), 0,
634
16
        "GeneralName", HFILL }},
635
16
    { &hf_pkixac_targetGroup,
636
16
      { "targetGroup", "pkixac.targetGroup",
637
16
        FT_UINT32, BASE_DEC, VALS(x509ce_GeneralName_vals), 0,
638
16
        "GeneralName", HFILL }},
639
16
    { &hf_pkixac_targetCert,
640
16
      { "targetCert", "pkixac.targetCert_element",
641
16
        FT_NONE, BASE_NONE, NULL, 0,
642
16
        NULL, HFILL }},
643
16
    { &hf_pkixac_targetCertificate,
644
16
      { "targetCertificate", "pkixac.targetCertificate_element",
645
16
        FT_NONE, BASE_NONE, NULL, 0,
646
16
        "IssuerSerial", HFILL }},
647
16
    { &hf_pkixac_certDigestInfo,
648
16
      { "certDigestInfo", "pkixac.certDigestInfo_element",
649
16
        FT_NONE, BASE_NONE, NULL, 0,
650
16
        "ObjectDigestInfo", HFILL }},
651
16
    { &hf_pkixac_policyAuthority,
652
16
      { "policyAuthority", "pkixac.policyAuthority",
653
16
        FT_UINT32, BASE_DEC, NULL, 0,
654
16
        "GeneralNames", HFILL }},
655
16
    { &hf_pkixac_values,
656
16
      { "values", "pkixac.values",
657
16
        FT_UINT32, BASE_DEC, NULL, 0,
658
16
        NULL, HFILL }},
659
16
    { &hf_pkixac_values_item,
660
16
      { "values item", "pkixac.values_item",
661
16
        FT_UINT32, BASE_DEC, VALS(pkixac_T_values_item_vals), 0,
662
16
        NULL, HFILL }},
663
16
    { &hf_pkixac_octets,
664
16
      { "octets", "pkixac.octets",
665
16
        FT_BYTES, BASE_NONE, NULL, 0,
666
16
        "OCTET_STRING", HFILL }},
667
16
    { &hf_pkixac_oid,
668
16
      { "oid", "pkixac.oid",
669
16
        FT_OID, BASE_NONE, NULL, 0,
670
16
        "OBJECT_IDENTIFIER", HFILL }},
671
16
    { &hf_pkixac_string,
672
16
      { "string", "pkixac.string",
673
16
        FT_STRING, BASE_NONE, NULL, 0,
674
16
        "UTF8String", HFILL }},
675
16
    { &hf_pkixac_service,
676
16
      { "service", "pkixac.service",
677
16
        FT_UINT32, BASE_DEC, VALS(x509ce_GeneralName_vals), 0,
678
16
        "GeneralName", HFILL }},
679
16
    { &hf_pkixac_ident,
680
16
      { "ident", "pkixac.ident",
681
16
        FT_UINT32, BASE_DEC, VALS(x509ce_GeneralName_vals), 0,
682
16
        "GeneralName", HFILL }},
683
16
    { &hf_pkixac_authInfo,
684
16
      { "authInfo", "pkixac.authInfo",
685
16
        FT_BYTES, BASE_NONE, NULL, 0,
686
16
        "OCTET_STRING", HFILL }},
687
16
    { &hf_pkixac_roleAuthority,
688
16
      { "roleAuthority", "pkixac.roleAuthority",
689
16
        FT_UINT32, BASE_DEC, NULL, 0,
690
16
        "GeneralNames", HFILL }},
691
16
    { &hf_pkixac_roleName,
692
16
      { "roleName", "pkixac.roleName",
693
16
        FT_UINT32, BASE_DEC, VALS(x509ce_GeneralName_vals), 0,
694
16
        "GeneralName", HFILL }},
695
16
    { &hf_pkixac_policyId,
696
16
      { "policyId", "pkixac.policyId",
697
16
        FT_OID, BASE_NONE, NULL, 0,
698
16
        "OBJECT_IDENTIFIER", HFILL }},
699
16
    { &hf_pkixac_classList,
700
16
      { "classList", "pkixac.classList",
701
16
        FT_BYTES, BASE_NONE, NULL, 0,
702
16
        NULL, HFILL }},
703
16
    { &hf_pkixac_securityCategories,
704
16
      { "securityCategories", "pkixac.securityCategories",
705
16
        FT_UINT32, BASE_DEC, NULL, 0,
706
16
        "SET_OF_SecurityCategory", HFILL }},
707
16
    { &hf_pkixac_securityCategories_item,
708
16
      { "SecurityCategory", "pkixac.SecurityCategory_element",
709
16
        FT_NONE, BASE_NONE, NULL, 0,
710
16
        NULL, HFILL }},
711
16
    { &hf_pkixac_type,
712
16
      { "type", "pkixac.type",
713
16
        FT_OID, BASE_NONE, NULL, 0,
714
16
        NULL, HFILL }},
715
16
    { &hf_pkixac_value,
716
16
      { "value", "pkixac.value_element",
717
16
        FT_NONE, BASE_NONE, NULL, 0,
718
16
        NULL, HFILL }},
719
16
    { &hf_pkixac_pathLenConstraint,
720
16
      { "pathLenConstraint", "pkixac.pathLenConstraint",
721
16
        FT_UINT64, BASE_DEC, NULL, 0,
722
16
        "INTEGER_0_MAX", HFILL }},
723
16
    { &hf_pkixac_permittedAttrs,
724
16
      { "permittedAttrs", "pkixac.permittedAttrs",
725
16
        FT_UINT32, BASE_DEC, NULL, 0,
726
16
        "AttrSpec", HFILL }},
727
16
    { &hf_pkixac_excludedAttrs,
728
16
      { "excludedAttrs", "pkixac.excludedAttrs",
729
16
        FT_UINT32, BASE_DEC, NULL, 0,
730
16
        "AttrSpec", HFILL }},
731
16
    { &hf_pkixac_permitUnSpecified,
732
16
      { "permitUnSpecified", "pkixac.permitUnSpecified",
733
16
        FT_BOOLEAN, BASE_NONE, NULL, 0,
734
16
        "BOOLEAN", HFILL }},
735
16
    { &hf_pkixac_AttrSpec_item,
736
16
      { "AttrSpec item", "pkixac.AttrSpec_item",
737
16
        FT_OID, BASE_NONE, NULL, 0,
738
16
        "OBJECT_IDENTIFIER", HFILL }},
739
16
    { &hf_pkixac_ProxyInfo_item,
740
16
      { "Targets", "pkixac.Targets",
741
16
        FT_UINT32, BASE_DEC, NULL, 0,
742
16
        NULL, HFILL }},
743
16
    { &hf_pkixac_ClassList_unmarked,
744
16
      { "unmarked", "pkixac.ClassList.unmarked",
745
16
        FT_BOOLEAN, 8, NULL, 0x80,
746
16
        NULL, HFILL }},
747
16
    { &hf_pkixac_ClassList_unclassified,
748
16
      { "unclassified", "pkixac.ClassList.unclassified",
749
16
        FT_BOOLEAN, 8, NULL, 0x40,
750
16
        NULL, HFILL }},
751
16
    { &hf_pkixac_ClassList_restricted,
752
16
      { "restricted", "pkixac.ClassList.restricted",
753
16
        FT_BOOLEAN, 8, NULL, 0x20,
754
16
        NULL, HFILL }},
755
16
    { &hf_pkixac_ClassList_confidential,
756
16
      { "confidential", "pkixac.ClassList.confidential",
757
16
        FT_BOOLEAN, 8, NULL, 0x10,
758
16
        NULL, HFILL }},
759
16
    { &hf_pkixac_ClassList_secret,
760
16
      { "secret", "pkixac.ClassList.secret",
761
16
        FT_BOOLEAN, 8, NULL, 0x08,
762
16
        NULL, HFILL }},
763
16
    { &hf_pkixac_ClassList_topSecret,
764
16
      { "topSecret", "pkixac.ClassList.topSecret",
765
16
        FT_BOOLEAN, 8, NULL, 0x04,
766
16
        NULL, HFILL }},
767
16
  };
768
769
  /* List of subtrees */
770
16
  static int *ett[] = {
771
16
  &ett_pkixac,
772
16
    &ett_pkixac_ObjectDigestInfo,
773
16
    &ett_pkixac_IssuerSerial,
774
16
    &ett_pkixac_Targets,
775
16
    &ett_pkixac_Target,
776
16
    &ett_pkixac_TargetCert,
777
16
    &ett_pkixac_IetfAttrSyntax,
778
16
    &ett_pkixac_T_values,
779
16
    &ett_pkixac_T_values_item,
780
16
    &ett_pkixac_SvceAuthInfo,
781
16
    &ett_pkixac_RoleSyntax,
782
16
    &ett_pkixac_Clearance,
783
16
    &ett_pkixac_SET_OF_SecurityCategory,
784
16
    &ett_pkixac_RFC3281Clearance,
785
16
    &ett_pkixac_ClassList,
786
16
    &ett_pkixac_SecurityCategory,
787
16
    &ett_pkixac_AAControls,
788
16
    &ett_pkixac_AttrSpec,
789
16
    &ett_pkixac_ProxyInfo,
790
16
  };
791
792
  /* Register protocol */
793
16
  proto_pkixac = proto_register_protocol("PKIX Attribute Certificate", "PKIXAC", "pkixac");
794
795
  /* Register fields and subtrees */
796
16
  proto_register_field_array(proto_pkixac, hf, array_length(hf));
797
16
  proto_register_subtree_array(ett, array_length(ett));
798
799
  /*--- Syntax registrations ---*/
800
16
  register_ber_syntax_dissector("Clearance", proto_pkixac, dissect_Clearance_PDU);
801
16
  register_ber_syntax_dissector("RFC3281Clearance", proto_pkixac, dissect_RFC3281Clearance_PDU);
802
803
16
}
804
805
806
/*--- proto_reg_handoff_pkixac -------------------------------------------*/
807
16
void proto_reg_handoff_pkixac(void) {
808
16
  register_ber_oid_dissector("1.3.6.1.5.5.7.1.6", dissect_AAControls_PDU, proto_pkixac, "id-pe-aaControls");
809
16
  register_ber_oid_dissector("1.3.6.1.5.5.7.1.10", dissect_ProxyInfo_PDU, proto_pkixac, "id-pe-ac-proxying");
810
16
  register_ber_oid_dissector("1.3.6.1.5.5.7.10.1", dissect_SvceAuthInfo_PDU, proto_pkixac, "id-aca-authenticationInfo");
811
16
  register_ber_oid_dissector("1.3.6.1.5.5.7.10.2", dissect_SvceAuthInfo_PDU, proto_pkixac, "id-aca-accessIdentity");
812
16
  register_ber_oid_dissector("1.3.6.1.5.5.7.10.3", dissect_IetfAttrSyntax_PDU, proto_pkixac, "id-aca-chargingIdentity");
813
16
  register_ber_oid_dissector("1.3.6.1.5.5.7.10.4", dissect_IetfAttrSyntax_PDU, proto_pkixac, "id-aca-group");
814
16
  register_ber_oid_dissector("2.5.1.5.55", dissect_Clearance_PDU, proto_pkixac, "id-at-clearance");
815
16
  register_ber_oid_dissector("2.5.4.55", dissect_Clearance_PDU, proto_pkixac, "id-at-clearance");
816
16
  register_ber_oid_dissector("2.5.4.72", dissect_RoleSyntax_PDU, proto_pkixac, "id-at-role");
817
16
  register_ber_oid_dissector("2.5.29.55", dissect_Targets_PDU, proto_pkixac, "id-ce-targetInformation");
818
819
16
}
820