aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-x509ce.c
diff options
context:
space:
mode:
authorRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2004-07-25 12:54:33 +0000
committerRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2004-07-25 12:54:33 +0000
commitceedde9c07e6ef11bcd243bebd6c830be43e8614 (patch)
treece4c2ac81a55a4cb3c85a32e787deabbfee1f96a /epan/dissectors/packet-x509ce.c
parent13451f85d3e41209d65031d96ab26b5e91ba41ab (diff)
some more extensions and their dissectors defined.
svn path=/trunk/; revision=11520
Diffstat (limited to 'epan/dissectors/packet-x509ce.c')
-rw-r--r--epan/dissectors/packet-x509ce.c349
1 files changed, 344 insertions, 5 deletions
diff --git a/epan/dissectors/packet-x509ce.c b/epan/dissectors/packet-x509ce.c
index 9bda753838..565e90ec21 100644
--- a/epan/dissectors/packet-x509ce.c
+++ b/epan/dissectors/packet-x509ce.c
@@ -43,6 +43,7 @@
#include "packet-ber.h"
#include "packet-x509ce.h"
+#include "packet-x509if.h"
#define PNAME "X.509 Certificate Extensions"
#define PSNAME "X509CE"
@@ -50,6 +51,15 @@
/* Initialize the protocol and registered fields */
int proto_x509ce = -1;
+static int hf_x509ce_id_ce_subjectDirectoryAttributes = -1;
+static int hf_x509ce_id_ce_subjectKeyIdentifier = -1;
+static int hf_x509ce_id_ce_keyUsage = -1;
+static int hf_x509ce_id_ce_privateKeyUsagePeriod = -1;
+static int hf_x509ce_id_ce_subjectAltName = -1;
+static int hf_x509ce_id_ce_issuerAltName = -1;
+static int hf_x509ce_id_ce_basicConstraints = -1;
+static int hf_x509ce_id_ce_cRLNumber = -1;
+static int hf_x509ce_id_ce_reasonCode = -1;
/*--- Included file: packet-x509ce-hf.c ---*/
@@ -58,12 +68,27 @@ int proto_x509ce = -1;
/* packet-x509ce-hf.c */
/* ../../tools/asn2eth.py -X -b -p x509ce -c x509ce.cnf -s packet-x509ce-template CertificateExtensions.asn */
+static int hf_x509ce_notBefore = -1; /* GeneralizedTime */
+static int hf_x509ce_notAfter = -1; /* GeneralizedTime */
static int hf_x509ce_GeneralNames_item = -1; /* GeneralName */
static int hf_x509ce_rfc822Name = -1; /* IA5String */
static int hf_x509ce_dNSName = -1; /* IA5String */
static int hf_x509ce_uniformResourceIdentifier = -1; /* IA5String */
static int hf_x509ce_iPAddress = -1; /* OCTET_STRING */
static int hf_x509ce_registeredID = -1; /* OBJECT_IDENTIFIER */
+static int hf_x509ce_AttributesSyntax_item = -1; /* Attribute */
+static int hf_x509ce_cA = -1; /* BOOLEAN */
+static int hf_x509ce_pathLenConstraint = -1; /* INTEGER */
+/* named bits */
+static int hf_x509ce_KeyUsage_digitalSignature = -1;
+static int hf_x509ce_KeyUsage_nonRepudiation = -1;
+static int hf_x509ce_KeyUsage_keyEncipherment = -1;
+static int hf_x509ce_KeyUsage_dataEncipherment = -1;
+static int hf_x509ce_KeyUsage_keyAgreement = -1;
+static int hf_x509ce_KeyUsage_keyCertSign = -1;
+static int hf_x509ce_KeyUsage_cRLSign = -1;
+static int hf_x509ce_KeyUsage_encipherOnly = -1;
+static int hf_x509ce_KeyUsage_decipherOnly = -1;
/*--- End of included file: packet-x509ce-hf.c ---*/
@@ -77,8 +102,12 @@ static int hf_x509ce_registeredID = -1; /* OBJECT_IDENTIFIER */
/* packet-x509ce-ett.c */
/* ../../tools/asn2eth.py -X -b -p x509ce -c x509ce.cnf -s packet-x509ce-template CertificateExtensions.asn */
+static gint ett_x509ce_KeyUsage = -1;
+static gint ett_x509ce_PrivateKeyUsagePeriod = -1;
static gint ett_x509ce_GeneralNames = -1;
static gint ett_x509ce_GeneralName = -1;
+static gint ett_x509ce_AttributesSyntax = -1;
+static gint ett_x509ce_BasicConstraintsSyntax = -1;
/*--- End of included file: packet-x509ce-ett.c ---*/
@@ -91,9 +120,79 @@ static gint ett_x509ce_GeneralName = -1;
/* packet-x509ce-fn.c */
/* ../../tools/asn2eth.py -X -b -p x509ce -c x509ce.cnf -s packet-x509ce-template CertificateExtensions.asn */
+static int dissect_AttributesSyntax_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509if_Attribute(FALSE, tvb, offset, pinfo, tree, hf_x509ce_AttributesSyntax_item);
+}
+
+static int
+dissect_x509ce_KeyIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+
static int
-dissect_x509ce_IA5String(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+dissect_x509ce_SubjectKeyIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_x509ce_KeyIdentifier(implicit_tag, tvb, offset, pinfo, tree, hf_index);
+
+ return offset;
+}
+
+static asn_namedbit KeyUsage_bits[] = {
+ { 0, &hf_x509ce_KeyUsage_digitalSignature, -1, -1, NULL, NULL },
+ { 1, &hf_x509ce_KeyUsage_nonRepudiation, -1, -1, NULL, NULL },
+ { 2, &hf_x509ce_KeyUsage_keyEncipherment, -1, -1, NULL, NULL },
+ { 3, &hf_x509ce_KeyUsage_dataEncipherment, -1, -1, NULL, NULL },
+ { 4, &hf_x509ce_KeyUsage_keyAgreement, -1, -1, NULL, NULL },
+ { 5, &hf_x509ce_KeyUsage_keyCertSign, -1, -1, NULL, NULL },
+ { 6, &hf_x509ce_KeyUsage_cRLSign, -1, -1, NULL, NULL },
+ { 7, &hf_x509ce_KeyUsage_encipherOnly, -1, -1, NULL, NULL },
+ { 8, &hf_x509ce_KeyUsage_decipherOnly, -1, -1, NULL, NULL },
+ { 0, NULL, 0, 0, NULL, NULL }
+};
+
+static int
+dissect_x509ce_KeyUsage(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
+ KeyUsage_bits, hf_index, ett_x509ce_KeyUsage,
+ NULL);
+
+ return offset;
+}
+
+
+static int
+dissect_x509ce_GeneralizedTime(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_ber_generalized_time(pinfo, tree, tvb, offset, hf_index);
+
+ return offset;
+}
+static int dissect_notBefore(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509ce_GeneralizedTime(FALSE, tvb, offset, pinfo, tree, hf_x509ce_notBefore);
+}
+static int dissect_notAfter(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509ce_GeneralizedTime(FALSE, tvb, offset, pinfo, tree, hf_x509ce_notAfter);
+}
+
+static ber_sequence PrivateKeyUsagePeriod_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL, dissect_notBefore },
+ { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_notAfter },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_x509ce_PrivateKeyUsagePeriod(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ PrivateKeyUsagePeriod_sequence, hf_index, ett_x509ce_PrivateKeyUsagePeriod);
+
+ return offset;
+}
+
+
+static int
+dissect_x509ce_IA5String(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
offset = dissect_ber_restricted_string(implicit_tag, 1,
pinfo, tree, tvb, offset, hf_index,
NULL);
@@ -112,7 +211,7 @@ static int dissect_uniformResourceIdentifier(packet_info *pinfo, proto_tree *tre
static int
-dissect_x509ce_OCTET_STRING(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+dissect_x509ce_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
NULL);
@@ -124,7 +223,7 @@ static int dissect_iPAddress(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb
static int
-dissect_x509ce_OBJECT_IDENTIFIER(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+dissect_x509ce_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset,
hf_index, NULL);
@@ -154,7 +253,7 @@ static ber_choice GeneralName_choice[] = {
};
static int
-dissect_x509ce_GeneralName(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+dissect_x509ce_GeneralName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
offset = dissect_ber_choice(pinfo, tree, tvb, offset,
GeneralName_choice, hf_index, ett_x509ce_GeneralName);
@@ -169,23 +268,194 @@ static ber_sequence GeneralNames_sequence_of[1] = {
};
int
-dissect_x509ce_GeneralNames(gboolean implicit_tag, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+dissect_x509ce_GeneralNames(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
GeneralNames_sequence_of, hf_index, ett_x509ce_GeneralNames);
return offset;
}
+static ber_sequence AttributesSyntax_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_AttributesSyntax_item },
+};
+
+static int
+dissect_x509ce_AttributesSyntax(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ AttributesSyntax_sequence_of, hf_index, ett_x509ce_AttributesSyntax);
+
+ return offset;
+}
+
+
+static int
+dissect_x509ce_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_ber_boolean(pinfo, tree, tvb, offset, hf_index);
+
+ return offset;
+}
+static int dissect_cA(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509ce_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_x509ce_cA);
+}
+
+
+
+static int
+dissect_x509ce_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_ber_integer(pinfo, tree, tvb, offset, hf_index, NULL);
+
+ return offset;
+}
+static int dissect_pathLenConstraint(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_x509ce_INTEGER(FALSE, tvb, offset, pinfo, tree, hf_x509ce_pathLenConstraint);
+}
+
+static ber_sequence BasicConstraintsSyntax_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cA },
+ { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_pathLenConstraint },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_x509ce_BasicConstraintsSyntax(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ BasicConstraintsSyntax_sequence, hf_index, ett_x509ce_BasicConstraintsSyntax);
+
+ return offset;
+}
+
+
+
+static int
+dissect_x509ce_CRLNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_ber_integer(pinfo, tree, tvb, offset, hf_index, NULL);
+
+ return offset;
+}
+
+
+static const value_string CRLReason_vals[] = {
+ { 0, "unspecified" },
+ { 1, "keyCompromise" },
+ { 2, "cACompromise" },
+ { 3, "affiliationChanged" },
+ { 4, "superseded" },
+ { 5, "cessationOfOperation" },
+ { 6, "certificateHold" },
+ { 8, "removeFromCRL" },
+ { 9, "privilegeWithdrawn" },
+ { 10, "aaCompromise" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_x509ce_CRLReason(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_ber_integer(pinfo, tree, tvb, offset, hf_index, NULL);
+
+ return offset;
+}
+
/*--- End of included file: packet-x509ce-fn.c ---*/
+static void
+dissect_x509ce_subjectDirectoryAttributes_callback(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ dissect_x509ce_AttributesSyntax(FALSE, tvb, 0, pinfo, tree, hf_x509ce_id_ce_subjectDirectoryAttributes);
+}
+
+static void
+dissect_x509ce_subjectKeyIdentifier_callback(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ dissect_x509ce_SubjectKeyIdentifier(FALSE, tvb, 0, pinfo, tree, hf_x509ce_id_ce_subjectKeyIdentifier);
+}
+
+static void
+dissect_x509ce_keyUsage_callback(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ dissect_x509ce_KeyUsage(FALSE, tvb, 0, pinfo, tree, hf_x509ce_id_ce_keyUsage);
+}
+
+static void
+dissect_x509ce_privateKeyUsagePeriod_callback(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ dissect_x509ce_PrivateKeyUsagePeriod(FALSE, tvb, 0, pinfo, tree, hf_x509ce_id_ce_privateKeyUsagePeriod);
+}
+
+static void
+dissect_x509ce_subjectAltName_callback(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ dissect_x509ce_GeneralNames(FALSE, tvb, 0, pinfo, tree, hf_x509ce_id_ce_subjectAltName);
+}
+
+static void
+dissect_x509ce_issuerAltName_callback(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ dissect_x509ce_GeneralNames(FALSE, tvb, 0, pinfo, tree, hf_x509ce_id_ce_issuerAltName);
+}
+
+static void
+dissect_x509ce_basicConstraints_callback(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ dissect_x509ce_BasicConstraintsSyntax(FALSE, tvb, 0, pinfo, tree, hf_x509ce_id_ce_basicConstraints);
+}
+
+static void
+dissect_x509ce_cRLNumber_callback(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ dissect_x509ce_CRLNumber(FALSE, tvb, 0, pinfo, tree, hf_x509ce_id_ce_cRLNumber);
+}
+
+static void
+dissect_x509ce_reasonCode_callback(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+{
+ dissect_x509ce_CRLReason(FALSE, tvb, 0, pinfo, tree, hf_x509ce_id_ce_reasonCode);
+}
+
/*--- proto_register_x509ce ----------------------------------------------*/
void proto_register_x509ce(void) {
/* List of fields */
static hf_register_info hf[] = {
+ { &hf_x509ce_id_ce_reasonCode,
+ { "reasonCode", "x509ce.id_ce_reasonCode",
+ FT_UINT32, BASE_DEC, VALS(CRLReason_vals), 0,
+ "reasonCode", HFILL }},
+ { &hf_x509ce_id_ce_cRLNumber,
+ { "cRLNumber", "x509ce.id_ce_cRLNumber",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "cRLNumber", HFILL }},
+ { &hf_x509ce_id_ce_basicConstraints,
+ { "basicConstraints", "x509ce.id_ce_basicConstraints",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "basicConstraints", HFILL }},
+ { &hf_x509ce_id_ce_issuerAltName,
+ { "issuerAltName", "x509ce.id_ce_issuerAltName",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "issuerAltName", HFILL }},
+ { &hf_x509ce_id_ce_subjectAltName,
+ { "subjectAltName", "x509ce.id_ce_subjectAltName",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "subjectAltName", HFILL }},
+ { &hf_x509ce_id_ce_privateKeyUsagePeriod,
+ { "privateKeyUsagePeriod", "x509ce.id_ce_privateKeyUsagePeriod",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "privateKeyUsagePeriod", HFILL }},
+ { &hf_x509ce_id_ce_subjectDirectoryAttributes,
+ { "subjectDirectoryAttributes", "x509ce.id_ce_subjectDirectoryAttributes",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "subjectDirectoryAttributes", HFILL }},
+ { &hf_x509ce_id_ce_subjectKeyIdentifier,
+ { "subjectKeyIdentifier", "x509ce.id_ce_subjectKeyIdentifier",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "subjectKeyIdentifier", HFILL }},
+ { &hf_x509ce_id_ce_keyUsage,
+ { "keyUsage", "x509ce.id_ce_keyUsage",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "keyUsage", HFILL }},
/*--- Included file: packet-x509ce-hfarr.c ---*/
@@ -194,6 +464,14 @@ void proto_register_x509ce(void) {
/* packet-x509ce-hfarr.c */
/* ../../tools/asn2eth.py -X -b -p x509ce -c x509ce.cnf -s packet-x509ce-template CertificateExtensions.asn */
+ { &hf_x509ce_notBefore,
+ { "notBefore", "x509ce.notBefore",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "PrivateKeyUsagePeriod/notBefore", HFILL }},
+ { &hf_x509ce_notAfter,
+ { "notAfter", "x509ce.notAfter",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "PrivateKeyUsagePeriod/notAfter", HFILL }},
{ &hf_x509ce_GeneralNames_item,
{ "Item[##]", "x509ce.GeneralNames_item",
FT_UINT32, BASE_DEC, VALS(GeneralName_vals), 0,
@@ -218,6 +496,54 @@ void proto_register_x509ce(void) {
{ "registeredID", "x509ce.registeredID",
FT_STRING, BASE_NONE, NULL, 0,
"GeneralName/registeredID", HFILL }},
+ { &hf_x509ce_AttributesSyntax_item,
+ { "Item[##]", "x509ce.AttributesSyntax_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AttributesSyntax/_item", HFILL }},
+ { &hf_x509ce_cA,
+ { "cA", "x509ce.cA",
+ FT_BOOLEAN, 8, NULL, 0,
+ "BasicConstraintsSyntax/cA", HFILL }},
+ { &hf_x509ce_pathLenConstraint,
+ { "pathLenConstraint", "x509ce.pathLenConstraint",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "BasicConstraintsSyntax/pathLenConstraint", HFILL }},
+ { &hf_x509ce_KeyUsage_digitalSignature,
+ { "digitalSignature", "x509ce.digitalSignature",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ "", HFILL }},
+ { &hf_x509ce_KeyUsage_nonRepudiation,
+ { "nonRepudiation", "x509ce.nonRepudiation",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ "", HFILL }},
+ { &hf_x509ce_KeyUsage_keyEncipherment,
+ { "keyEncipherment", "x509ce.keyEncipherment",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ "", HFILL }},
+ { &hf_x509ce_KeyUsage_dataEncipherment,
+ { "dataEncipherment", "x509ce.dataEncipherment",
+ FT_BOOLEAN, 8, NULL, 0x10,
+ "", HFILL }},
+ { &hf_x509ce_KeyUsage_keyAgreement,
+ { "keyAgreement", "x509ce.keyAgreement",
+ FT_BOOLEAN, 8, NULL, 0x08,
+ "", HFILL }},
+ { &hf_x509ce_KeyUsage_keyCertSign,
+ { "keyCertSign", "x509ce.keyCertSign",
+ FT_BOOLEAN, 8, NULL, 0x04,
+ "", HFILL }},
+ { &hf_x509ce_KeyUsage_cRLSign,
+ { "cRLSign", "x509ce.cRLSign",
+ FT_BOOLEAN, 8, NULL, 0x02,
+ "", HFILL }},
+ { &hf_x509ce_KeyUsage_encipherOnly,
+ { "encipherOnly", "x509ce.encipherOnly",
+ FT_BOOLEAN, 8, NULL, 0x01,
+ "", HFILL }},
+ { &hf_x509ce_KeyUsage_decipherOnly,
+ { "decipherOnly", "x509ce.decipherOnly",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ "", HFILL }},
/*--- End of included file: packet-x509ce-hfarr.c ---*/
@@ -233,8 +559,12 @@ void proto_register_x509ce(void) {
/* packet-x509ce-ettarr.c */
/* ../../tools/asn2eth.py -X -b -p x509ce -c x509ce.cnf -s packet-x509ce-template CertificateExtensions.asn */
+ &ett_x509ce_KeyUsage,
+ &ett_x509ce_PrivateKeyUsagePeriod,
&ett_x509ce_GeneralNames,
&ett_x509ce_GeneralName,
+ &ett_x509ce_AttributesSyntax,
+ &ett_x509ce_BasicConstraintsSyntax,
/*--- End of included file: packet-x509ce-ettarr.c ---*/
@@ -252,5 +582,14 @@ void proto_register_x509ce(void) {
/*--- proto_reg_handoff_x509ce -------------------------------------------*/
void proto_reg_handoff_x509ce(void) {
+ register_ber_oid_dissector("2.5.29.9", dissect_x509ce_subjectDirectoryAttributes_callback, proto_x509ce, "id-ce-subjectDirectoryAttributes");
+ register_ber_oid_dissector("2.5.29.14", dissect_x509ce_subjectKeyIdentifier_callback, proto_x509ce, "id-ce-subjectKeyIdentifier");
+ register_ber_oid_dissector("2.5.29.15", dissect_x509ce_keyUsage_callback, proto_x509ce, "id-ce-keyUsage");
+ register_ber_oid_dissector("2.5.29.16", dissect_x509ce_privateKeyUsagePeriod_callback, proto_x509ce, "id-ce-privateKeyUsagePeriod");
+ register_ber_oid_dissector("2.5.29.17", dissect_x509ce_subjectAltName_callback, proto_x509ce, "id-ce-subjectAltName");
+ register_ber_oid_dissector("2.5.29.18", dissect_x509ce_issuerAltName_callback, proto_x509ce, "id-ce-issuerAltName");
+ register_ber_oid_dissector("2.5.29.19", dissect_x509ce_basicConstraints_callback, proto_x509ce, "id-ce-basicConstraints");
+ register_ber_oid_dissector("2.5.29.20", dissect_x509ce_cRLNumber_callback, proto_x509ce, "id-ce-cRLNumber");
+ register_ber_oid_dissector("2.5.29.21", dissect_x509ce_reasonCode_callback, proto_x509ce, "id-ce-reasonCode");
}