1 /* Do not modify this file. Changes will be overwritten. */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler */
3 /* packet-pkix1implicit.c */
4 /* asn2wrs.py -b -q -L -p pkix1implicit -c ./pkix1implicit.cnf -s ./packet-pkix1implicit-template -D . -O ../.. PKIX1IMPLICIT93.asn */
6 /* packet-pkix1implicit.c
7 * Routines for PKIX1Implitic packet dissection
9 * Wireshark - Network traffic analyzer
10 * By Gerald Combs <gerald@wireshark.org>
11 * Copyright 1998 Gerald Combs
13 * SPDX-License-Identifier: GPL-2.0-or-later
18 #include <epan/packet.h>
19 #include <wsutil/array.h>
21 #include <epan/asn1.h>
22 #include "packet-ber.h"
23 #include "packet-pkix1implicit.h"
24 #include "packet-pkix1explicit.h"
25 #include "packet-x509ce.h"
27 #define PNAME "PKIX1Implicit"
28 #define PSNAME "PKIX1IMPLICIT"
29 #define PFNAME "pkix1implicit"
31 void proto_register_pkix1implicit(void);
32 void proto_reg_handoff_pkix1implicit(void);
34 /* Initialize the protocol and registered fields */
35 static int proto_pkix1implicit
;
36 static int hf_pkix1implicit_Dummy_PDU
; /* Dummy */
37 static int hf_pkix1implicit_AuthorityInfoAccessSyntax_PDU
; /* AuthorityInfoAccessSyntax */
38 static int hf_pkix1implicit_UserNotice_PDU
; /* UserNotice */
39 static int hf_pkix1implicit_AuthorityInfoAccessSyntax_item
; /* AccessDescription */
40 static int hf_pkix1implicit_accessMethod
; /* OBJECT_IDENTIFIER */
41 static int hf_pkix1implicit_accessLocation
; /* GeneralName */
42 static int hf_pkix1implicit_noticeRef
; /* NoticeReference */
43 static int hf_pkix1implicit_explicitText
; /* DisplayText */
44 static int hf_pkix1implicit_organization
; /* DisplayText */
45 static int hf_pkix1implicit_noticeNumbers
; /* T_noticeNumbers */
46 static int hf_pkix1implicit_noticeNumbers_item
; /* INTEGER */
47 static int hf_pkix1implicit_ia5String
; /* IA5String */
48 static int hf_pkix1implicit_visibleString
; /* VisibleString */
49 static int hf_pkix1implicit_bmpString
; /* BMPString */
50 static int hf_pkix1implicit_utf8String
; /* UTF8String */
52 /* Initialize the subtree pointers */
53 static int ett_pkix1implicit_AuthorityInfoAccessSyntax
;
54 static int ett_pkix1implicit_AccessDescription
;
55 static int ett_pkix1implicit_UserNotice
;
56 static int ett_pkix1implicit_NoticeReference
;
57 static int ett_pkix1implicit_T_noticeNumbers
;
58 static int ett_pkix1implicit_DisplayText
;
62 dissect_pkix1implicit_ReasonFlags(bool implicit_tag _U_
, tvbuff_t
*tvb
, int offset
, asn1_ctx_t
*actx
, proto_tree
*tree
, int hf_index _U_
) {
63 offset
= dissect_x509ce_ReasonFlags(implicit_tag
, tvb
, offset
, actx
, tree
, hf_index
);
68 dissect_pkix1implicit_GeneralName(bool implicit_tag _U_
, tvbuff_t
*tvb
, int offset
, asn1_ctx_t
*actx
, proto_tree
*tree
, int hf_index _U_
) {
69 offset
= dissect_x509ce_GeneralName(implicit_tag
, tvb
, offset
, actx
, tree
, hf_index
);
77 dissect_pkix1implicit_KeyIdentifier(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
78 offset
= dissect_ber_octet_string(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
87 dissect_pkix1implicit_Dummy(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
88 offset
= dissect_ber_null(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
);
96 dissect_pkix1implicit_OBJECT_IDENTIFIER(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
97 offset
= dissect_ber_object_identifier(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
, NULL
);
103 static const ber_sequence_t AccessDescription_sequence
[] = {
104 { &hf_pkix1implicit_accessMethod
, BER_CLASS_UNI
, BER_UNI_TAG_OID
, BER_FLAGS_NOOWNTAG
, dissect_pkix1implicit_OBJECT_IDENTIFIER
},
105 { &hf_pkix1implicit_accessLocation
, BER_CLASS_CON
, -1/*choice*/, BER_FLAGS_NOOWNTAG
, dissect_x509ce_GeneralName
},
106 { NULL
, 0, 0, 0, NULL
}
110 dissect_pkix1implicit_AccessDescription(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
111 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
112 AccessDescription_sequence
, hf_index
, ett_pkix1implicit_AccessDescription
);
118 static const ber_sequence_t AuthorityInfoAccessSyntax_sequence_of
[1] = {
119 { &hf_pkix1implicit_AuthorityInfoAccessSyntax_item
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_pkix1implicit_AccessDescription
},
123 dissect_pkix1implicit_AuthorityInfoAccessSyntax(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
124 offset
= dissect_ber_sequence_of(implicit_tag
, actx
, tree
, tvb
, offset
,
125 AuthorityInfoAccessSyntax_sequence_of
, hf_index
, ett_pkix1implicit_AuthorityInfoAccessSyntax
);
133 dissect_pkix1implicit_IA5String(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
134 offset
= dissect_ber_restricted_string(implicit_tag
, BER_UNI_TAG_IA5String
,
135 actx
, tree
, tvb
, offset
, hf_index
,
144 dissect_pkix1implicit_VisibleString(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
145 offset
= dissect_ber_restricted_string(implicit_tag
, BER_UNI_TAG_VisibleString
,
146 actx
, tree
, tvb
, offset
, hf_index
,
155 dissect_pkix1implicit_BMPString(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
156 offset
= dissect_ber_restricted_string(implicit_tag
, BER_UNI_TAG_BMPString
,
157 actx
, tree
, tvb
, offset
, hf_index
,
166 dissect_pkix1implicit_UTF8String(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
167 offset
= dissect_ber_restricted_string(implicit_tag
, BER_UNI_TAG_UTF8String
,
168 actx
, tree
, tvb
, offset
, hf_index
,
175 static const value_string pkix1implicit_DisplayText_vals
[] = {
177 { 1, "visibleString" },
183 static const ber_choice_t DisplayText_choice
[] = {
184 { 0, &hf_pkix1implicit_ia5String
, BER_CLASS_UNI
, BER_UNI_TAG_IA5String
, BER_FLAGS_NOOWNTAG
, dissect_pkix1implicit_IA5String
},
185 { 1, &hf_pkix1implicit_visibleString
, BER_CLASS_UNI
, BER_UNI_TAG_VisibleString
, BER_FLAGS_NOOWNTAG
, dissect_pkix1implicit_VisibleString
},
186 { 2, &hf_pkix1implicit_bmpString
, BER_CLASS_UNI
, BER_UNI_TAG_BMPString
, BER_FLAGS_NOOWNTAG
, dissect_pkix1implicit_BMPString
},
187 { 3, &hf_pkix1implicit_utf8String
, BER_CLASS_UNI
, BER_UNI_TAG_UTF8String
, BER_FLAGS_NOOWNTAG
, dissect_pkix1implicit_UTF8String
},
188 { 0, NULL
, 0, 0, 0, NULL
}
192 dissect_pkix1implicit_DisplayText(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
193 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
194 DisplayText_choice
, hf_index
, ett_pkix1implicit_DisplayText
,
203 dissect_pkix1implicit_INTEGER(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
204 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
211 static const ber_sequence_t T_noticeNumbers_sequence_of
[1] = {
212 { &hf_pkix1implicit_noticeNumbers_item
, BER_CLASS_UNI
, BER_UNI_TAG_INTEGER
, BER_FLAGS_NOOWNTAG
, dissect_pkix1implicit_INTEGER
},
216 dissect_pkix1implicit_T_noticeNumbers(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
217 offset
= dissect_ber_sequence_of(implicit_tag
, actx
, tree
, tvb
, offset
,
218 T_noticeNumbers_sequence_of
, hf_index
, ett_pkix1implicit_T_noticeNumbers
);
224 static const ber_sequence_t NoticeReference_sequence
[] = {
225 { &hf_pkix1implicit_organization
, BER_CLASS_ANY
/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG
|BER_FLAGS_NOTCHKTAG
, dissect_pkix1implicit_DisplayText
},
226 { &hf_pkix1implicit_noticeNumbers
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_NOOWNTAG
, dissect_pkix1implicit_T_noticeNumbers
},
227 { NULL
, 0, 0, 0, NULL
}
231 dissect_pkix1implicit_NoticeReference(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
232 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
233 NoticeReference_sequence
, hf_index
, ett_pkix1implicit_NoticeReference
);
239 static const ber_sequence_t UserNotice_sequence
[] = {
240 { &hf_pkix1implicit_noticeRef
, BER_CLASS_UNI
, BER_UNI_TAG_SEQUENCE
, BER_FLAGS_OPTIONAL
|BER_FLAGS_NOOWNTAG
, dissect_pkix1implicit_NoticeReference
},
241 { &hf_pkix1implicit_explicitText
, BER_CLASS_ANY
/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL
|BER_FLAGS_NOOWNTAG
|BER_FLAGS_NOTCHKTAG
, dissect_pkix1implicit_DisplayText
},
242 { NULL
, 0, 0, 0, NULL
}
246 dissect_pkix1implicit_UserNotice(bool implicit_tag _U_
, tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
247 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
248 UserNotice_sequence
, hf_index
, ett_pkix1implicit_UserNotice
);
255 static int dissect_Dummy_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
258 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
259 offset
= dissect_pkix1implicit_Dummy(false, tvb
, offset
, &asn1_ctx
, tree
, hf_pkix1implicit_Dummy_PDU
);
262 static int dissect_AuthorityInfoAccessSyntax_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
265 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
266 offset
= dissect_pkix1implicit_AuthorityInfoAccessSyntax(false, tvb
, offset
, &asn1_ctx
, tree
, hf_pkix1implicit_AuthorityInfoAccessSyntax_PDU
);
269 static int dissect_UserNotice_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
272 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
273 offset
= dissect_pkix1implicit_UserNotice(false, tvb
, offset
, &asn1_ctx
, tree
, hf_pkix1implicit_UserNotice_PDU
);
279 /*--- proto_register_pkix1implicit ----------------------------------------------*/
280 void proto_register_pkix1implicit(void) {
283 static hf_register_info hf
[] = {
284 { &hf_pkix1implicit_Dummy_PDU
,
285 { "Dummy", "pkix1implicit.Dummy_element",
286 FT_NONE
, BASE_NONE
, NULL
, 0,
288 { &hf_pkix1implicit_AuthorityInfoAccessSyntax_PDU
,
289 { "AuthorityInfoAccessSyntax", "pkix1implicit.AuthorityInfoAccessSyntax",
290 FT_UINT32
, BASE_DEC
, NULL
, 0,
292 { &hf_pkix1implicit_UserNotice_PDU
,
293 { "UserNotice", "pkix1implicit.UserNotice_element",
294 FT_NONE
, BASE_NONE
, NULL
, 0,
296 { &hf_pkix1implicit_AuthorityInfoAccessSyntax_item
,
297 { "AccessDescription", "pkix1implicit.AccessDescription_element",
298 FT_NONE
, BASE_NONE
, NULL
, 0,
300 { &hf_pkix1implicit_accessMethod
,
301 { "accessMethod", "pkix1implicit.accessMethod",
302 FT_OID
, BASE_NONE
, NULL
, 0,
303 "OBJECT_IDENTIFIER", HFILL
}},
304 { &hf_pkix1implicit_accessLocation
,
305 { "accessLocation", "pkix1implicit.accessLocation",
306 FT_UINT32
, BASE_DEC
, NULL
, 0,
307 "GeneralName", HFILL
}},
308 { &hf_pkix1implicit_noticeRef
,
309 { "noticeRef", "pkix1implicit.noticeRef_element",
310 FT_NONE
, BASE_NONE
, NULL
, 0,
311 "NoticeReference", HFILL
}},
312 { &hf_pkix1implicit_explicitText
,
313 { "explicitText", "pkix1implicit.explicitText",
314 FT_UINT32
, BASE_DEC
, VALS(pkix1implicit_DisplayText_vals
), 0,
315 "DisplayText", HFILL
}},
316 { &hf_pkix1implicit_organization
,
317 { "organization", "pkix1implicit.organization",
318 FT_UINT32
, BASE_DEC
, VALS(pkix1implicit_DisplayText_vals
), 0,
319 "DisplayText", HFILL
}},
320 { &hf_pkix1implicit_noticeNumbers
,
321 { "noticeNumbers", "pkix1implicit.noticeNumbers",
322 FT_UINT32
, BASE_DEC
, NULL
, 0,
324 { &hf_pkix1implicit_noticeNumbers_item
,
325 { "noticeNumbers item", "pkix1implicit.noticeNumbers_item",
326 FT_INT32
, BASE_DEC
, NULL
, 0,
328 { &hf_pkix1implicit_ia5String
,
329 { "ia5String", "pkix1implicit.ia5String",
330 FT_STRING
, BASE_NONE
, NULL
, 0,
332 { &hf_pkix1implicit_visibleString
,
333 { "visibleString", "pkix1implicit.visibleString",
334 FT_STRING
, BASE_NONE
, NULL
, 0,
336 { &hf_pkix1implicit_bmpString
,
337 { "bmpString", "pkix1implicit.bmpString",
338 FT_STRING
, BASE_NONE
, NULL
, 0,
340 { &hf_pkix1implicit_utf8String
,
341 { "utf8String", "pkix1implicit.utf8String",
342 FT_STRING
, BASE_NONE
, NULL
, 0,
346 /* List of subtrees */
347 static int *ett
[] = {
348 &ett_pkix1implicit_AuthorityInfoAccessSyntax
,
349 &ett_pkix1implicit_AccessDescription
,
350 &ett_pkix1implicit_UserNotice
,
351 &ett_pkix1implicit_NoticeReference
,
352 &ett_pkix1implicit_T_noticeNumbers
,
353 &ett_pkix1implicit_DisplayText
,
356 /* Register protocol */
357 proto_pkix1implicit
= proto_register_protocol(PNAME
, PSNAME
, PFNAME
);
359 /* Register fields and subtrees */
360 proto_register_field_array(proto_pkix1implicit
, hf
, array_length(hf
));
361 proto_register_subtree_array(ett
, array_length(ett
));
366 /*--- proto_reg_handoff_pkix1implicit -------------------------------------------*/
367 void proto_reg_handoff_pkix1implicit(void) {
368 register_ber_oid_dissector("1.3.6.1.5.5.7.1.1", dissect_AuthorityInfoAccessSyntax_PDU
, proto_pkix1implicit
, "id-pe-authorityInfoAccess");
369 register_ber_oid_dissector("1.3.6.1.5.5.7.48.1", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-ad-ocsp");
370 register_ber_oid_dissector("1.3.6.1.5.5.7.48.2", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-ad-caIssuers");
371 register_ber_oid_dissector("1.3.6.1.5.5.7.3.1", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-kp-serverAuth");
372 register_ber_oid_dissector("1.3.6.1.5.5.7.3.2", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-kp-clientAuth");
373 register_ber_oid_dissector("1.3.6.1.5.5.7.3.3", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-kp-codeSigning");
374 register_ber_oid_dissector("1.3.6.1.5.5.7.3.4", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-kp-emailProtection");
375 register_ber_oid_dissector("1.3.6.1.5.5.7.3.5", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-kp-ip-kp-ipsecEndSystem");
376 register_ber_oid_dissector("1.3.6.1.5.5.7.3.6", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-kp-ipsecTunnel");
377 register_ber_oid_dissector("1.3.6.1.5.5.7.3.7", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-kp-ipsecUser");
378 register_ber_oid_dissector("1.3.6.1.5.5.7.3.8", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-kp-timeStamping");
379 register_ber_oid_dissector("1.3.6.1.5.5.7.3.9", dissect_Dummy_PDU
, proto_pkix1implicit
, "OCSPSigning");
380 register_ber_oid_dissector("1.3.6.1.4.1.311.10.12.1", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-ms-any-application-policy");
381 register_ber_oid_dissector("1.3.6.1.4.1.311.10.3.1", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-ms-kp-ctl-usage-signing");
382 register_ber_oid_dissector("1.3.6.1.4.1.311.10.3.2", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-ms-kp-time-stamp-signing");
383 register_ber_oid_dissector("1.3.6.1.4.1.311.10.3.4", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-ms-kp-efs");
384 register_ber_oid_dissector("1.3.6.1.4.1.311.10.3.4.1", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-ms-efs-recovery");
385 register_ber_oid_dissector("1.3.6.1.4.1.311.10.3.5", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-ms-whql-crypto");
386 register_ber_oid_dissector("1.3.6.1.4.1.311.10.3.6", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-ms-nt5-crypto");
387 register_ber_oid_dissector("1.3.6.1.4.1.311.10.3.7", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-ms-oem-whql-crypto");
388 register_ber_oid_dissector("1.3.6.1.4.1.311.10.3.8", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-ms-embedded-nt-crypto");
389 register_ber_oid_dissector("1.3.6.1.4.1.311.10.3.9", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-ms-root-list-signer");
390 register_ber_oid_dissector("1.3.6.1.4.1.311.10.3.10", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-ms-kp-qualified-subordination");
391 register_ber_oid_dissector("1.3.6.1.4.1.311.10.3.11", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-ms-kp-key-recovery");
392 register_ber_oid_dissector("1.3.6.1.4.1.311.10.3.12", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-ms-kp-document-signing");
393 register_ber_oid_dissector("1.3.6.1.4.1.311.10.3.13", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-ms-kp-lifetime-signing");
394 register_ber_oid_dissector("1.3.6.1.4.1.311.10.5.1", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-ms-drm");
395 register_ber_oid_dissector("1.3.6.1.4.1.311.10.6.1", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-ms-licenses");
396 register_ber_oid_dissector("1.3.6.1.4.1.311.10.6.2", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-ms-license-server");
397 register_ber_oid_dissector("1.3.6.1.4.1.311.20.1", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-ms-auto-enroll-ctl-usage");
398 register_ber_oid_dissector("1.3.6.1.4.1.311.20.2.1", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-ms-enrollment-agent");
399 register_ber_oid_dissector("1.3.6.1.4.1.311.20.2.2", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-ms-kp-smartcard-logon");
400 register_ber_oid_dissector("1.3.6.1.4.1.311.21.5", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-ms-kp-ca-exchange");
401 register_ber_oid_dissector("1.3.6.1.4.1.311.21.6", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-ms-kp-key-recovery-agent");
402 register_ber_oid_dissector("1.3.6.1.4.1.311.21.19", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-ms-ds-email-replication");
403 register_ber_oid_dissector("1.3.6.1.5.5.8.2.2", dissect_Dummy_PDU
, proto_pkix1implicit
, "id-ms-ipsec-kp-ike-intermediate");
404 register_ber_oid_dissector("1.3.6.1.5.5.7.2.2", dissect_UserNotice_PDU
, proto_pkix1implicit
, "id-qt-unotice");