aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-pkix1implicit.c
diff options
context:
space:
mode:
authorRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2004-11-21 05:21:26 +0000
committerRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2004-11-21 05:21:26 +0000
commit2c25e3c6f6e0619c9a2526f40171d9380be2f98c (patch)
tree1f46cc18eb8470cae8af7465d7af02e1b0d283f6 /epan/dissectors/packet-pkix1implicit.c
parent2ad42a55fcc2e1463472737367a1205890bda92a (diff)
add dissection of AuthorityInfoAccessSyntax
svn path=/trunk/; revision=12552
Diffstat (limited to 'epan/dissectors/packet-pkix1implicit.c')
-rw-r--r--epan/dissectors/packet-pkix1implicit.c215
1 files changed, 214 insertions, 1 deletions
diff --git a/epan/dissectors/packet-pkix1implicit.c b/epan/dissectors/packet-pkix1implicit.c
index 5830f6ac2c..aa97249093 100644
--- a/epan/dissectors/packet-pkix1implicit.c
+++ b/epan/dissectors/packet-pkix1implicit.c
@@ -8,7 +8,7 @@
/* packet-pkix1implicit.c
* Routines for PKIX1Implitic packet dissection
*
- * $Id: packet-pkix1implicit-template.c 12203 2004-10-05 09:18:55Z guy $
+ * $Id: packet-pkix1implicit-template.c 12549 2004-11-20 21:26:08Z sahlberg $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -42,6 +42,7 @@
#include "packet-ber.h"
#include "packet-pkix1implicit.h"
+#include "packet-pkix1explicit.h"
#define PNAME "PKIX1Implitit"
#define PSNAME "PKIX1IMPLICIT"
@@ -53,6 +54,19 @@ static int proto_pkix1implicit = -1;
/*--- Included file: packet-pkix1implicit-hf.c ---*/
static int hf_pkix1implicit_Dummy_PDU = -1; /* Dummy */
+static int hf_pkix1implicit_AuthorityInfoAccessSyntax_PDU = -1; /* AuthorityInfoAccessSyntax */
+static int hf_pkix1implicit_rfc822Name = -1; /* IA5String */
+static int hf_pkix1implicit_dNSName = -1; /* IA5String */
+static int hf_pkix1implicit_directoryName = -1; /* Name */
+static int hf_pkix1implicit_ediPartyName = -1; /* EDIPartyName */
+static int hf_pkix1implicit_uniformResourceIdentifier = -1; /* IA5String */
+static int hf_pkix1implicit_iPAddress = -1; /* OCTET_STRING */
+static int hf_pkix1implicit_registeredID = -1; /* OBJECT_IDENTIFIER */
+static int hf_pkix1implicit_nameAssigner = -1; /* DirectoryString */
+static int hf_pkix1implicit_partyName = -1; /* DirectoryString */
+static int hf_pkix1implicit_AuthorityInfoAccessSyntax_item = -1; /* AccessDescription */
+static int hf_pkix1implicit_accessMethod = -1; /* OBJECT_IDENTIFIER */
+static int hf_pkix1implicit_accessLocation = -1; /* GeneralName */
static int hf_pkix1implicit_noticeRef = -1; /* NoticeReference */
static int hf_pkix1implicit_explicitText = -1; /* DisplayText */
static int hf_pkix1implicit_organization = -1; /* DisplayText */
@@ -69,6 +83,10 @@ static int hf_pkix1implicit_utf8String = -1; /* UTF8String */
/*--- Included file: packet-pkix1implicit-ett.c ---*/
+static gint ett_pkix1implicit_GeneralName = -1;
+static gint ett_pkix1implicit_EDIPartyName = -1;
+static gint ett_pkix1implicit_AuthorityInfoAccessSyntax = -1;
+static gint ett_pkix1implicit_AccessDescription = -1;
static gint ett_pkix1implicit_UserNotice = -1;
static gint ett_pkix1implicit_NoticeReference = -1;
static gint ett_pkix1implicit_SEQUNCE_OF_INTEGER = -1;
@@ -83,6 +101,15 @@ static gint ett_pkix1implicit_DisplayText = -1;
/*--- Fields for imported types ---*/
+static int dissect_directoryName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_pkix1explicit_Name(TRUE, tvb, offset, pinfo, tree, hf_pkix1implicit_directoryName);
+}
+static int dissect_nameAssigner_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_pkix1explicit_DirectoryString(TRUE, tvb, offset, pinfo, tree, hf_pkix1implicit_nameAssigner);
+}
+static int dissect_partyName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_pkix1explicit_DirectoryString(TRUE, tvb, offset, pinfo, tree, hf_pkix1implicit_partyName);
+}
static int
@@ -97,6 +124,132 @@ dissect_pkix1implicit_Dummy(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset
static int
+dissect_pkix1implicit_IA5String(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_restricted_string(implicit_tag, 1,
+ pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_rfc822Name_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_pkix1implicit_IA5String(TRUE, tvb, offset, pinfo, tree, hf_pkix1implicit_rfc822Name);
+}
+static int dissect_dNSName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_pkix1implicit_IA5String(TRUE, tvb, offset, pinfo, tree, hf_pkix1implicit_dNSName);
+}
+static int dissect_uniformResourceIdentifier_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_pkix1implicit_IA5String(TRUE, tvb, offset, pinfo, tree, hf_pkix1implicit_uniformResourceIdentifier);
+}
+
+static const ber_sequence EDIPartyName_sequence[] = {
+ { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_nameAssigner_impl },
+ { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_partyName_impl },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_pkix1implicit_EDIPartyName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ EDIPartyName_sequence, hf_index, ett_pkix1implicit_EDIPartyName);
+
+ return offset;
+}
+static int dissect_ediPartyName_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_pkix1implicit_EDIPartyName(TRUE, tvb, offset, pinfo, tree, hf_pkix1implicit_ediPartyName);
+}
+
+
+static int
+dissect_pkix1implicit_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+static int dissect_iPAddress_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_pkix1implicit_OCTET_STRING(TRUE, tvb, offset, pinfo, tree, hf_pkix1implicit_iPAddress);
+}
+
+
+static int
+dissect_pkix1implicit_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset,
+ hf_index, NULL);
+
+ return offset;
+}
+static int dissect_registeredID_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_pkix1implicit_OBJECT_IDENTIFIER(TRUE, tvb, offset, pinfo, tree, hf_pkix1implicit_registeredID);
+}
+static int dissect_accessMethod(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_pkix1implicit_OBJECT_IDENTIFIER(FALSE, tvb, offset, pinfo, tree, hf_pkix1implicit_accessMethod);
+}
+
+
+static const value_string GeneralName_vals[] = {
+ { 1, "rfc822Name" },
+ { 2, "dNSName" },
+ { 4, "directoryName" },
+ { 5, "ediPartyName" },
+ { 6, "uniformResourceIdentifier" },
+ { 7, "iPAddress" },
+ { 8, "registeredID" },
+ { 0, NULL }
+};
+
+static const ber_choice GeneralName_choice[] = {
+ { 1, BER_CLASS_CON, 1, 0, dissect_rfc822Name_impl },
+ { 2, BER_CLASS_CON, 2, 0, dissect_dNSName_impl },
+ { 4, BER_CLASS_CON, 4, 0, dissect_directoryName_impl },
+ { 5, BER_CLASS_CON, 5, 0, dissect_ediPartyName_impl },
+ { 6, BER_CLASS_CON, 6, 0, dissect_uniformResourceIdentifier_impl },
+ { 7, BER_CLASS_CON, 7, 0, dissect_iPAddress_impl },
+ { 8, BER_CLASS_CON, 8, 0, dissect_registeredID_impl },
+ { 0, 0, 0, 0, NULL }
+};
+
+static int
+dissect_pkix1implicit_GeneralName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_choice(pinfo, tree, tvb, offset,
+ GeneralName_choice, hf_index, ett_pkix1implicit_GeneralName);
+
+ return offset;
+}
+static int dissect_accessLocation(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_pkix1implicit_GeneralName(FALSE, tvb, offset, pinfo, tree, hf_pkix1implicit_accessLocation);
+}
+
+static const ber_sequence AccessDescription_sequence[] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_accessMethod },
+ { BER_CLASS_CON, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_accessLocation },
+ { 0, 0, 0, NULL }
+};
+
+static int
+dissect_pkix1implicit_AccessDescription(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
+ AccessDescription_sequence, hf_index, ett_pkix1implicit_AccessDescription);
+
+ return offset;
+}
+static int dissect_AuthorityInfoAccessSyntax_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) {
+ return dissect_pkix1implicit_AccessDescription(FALSE, tvb, offset, pinfo, tree, hf_pkix1implicit_AuthorityInfoAccessSyntax_item);
+}
+
+static const ber_sequence AuthorityInfoAccessSyntax_sequence_of[1] = {
+ { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_AuthorityInfoAccessSyntax_item },
+};
+
+static int
+dissect_pkix1implicit_AuthorityInfoAccessSyntax(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
+ AuthorityInfoAccessSyntax_sequence_of, hf_index, ett_pkix1implicit_AuthorityInfoAccessSyntax);
+
+ return offset;
+}
+
+
+static int
dissect_pkix1implicit_VisibleString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) {
offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_VisibleString,
pinfo, tree, tvb, offset, hf_index,
@@ -226,6 +379,9 @@ dissect_pkix1implicit_UserNotice(gboolean implicit_tag _U_, tvbuff_t *tvb, int o
static void dissect_Dummy_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
dissect_pkix1implicit_Dummy(FALSE, tvb, 0, pinfo, tree, hf_pkix1implicit_Dummy_PDU);
}
+static void dissect_AuthorityInfoAccessSyntax_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
+ dissect_pkix1implicit_AuthorityInfoAccessSyntax(FALSE, tvb, 0, pinfo, tree, hf_pkix1implicit_AuthorityInfoAccessSyntax_PDU);
+}
/*--- End of included file: packet-pkix1implicit-fn.c ---*/
@@ -244,6 +400,58 @@ void proto_register_pkix1implicit(void) {
{ "Dummy", "pkix1implicit.Dummy",
FT_NONE, BASE_NONE, NULL, 0,
"Dummy", HFILL }},
+ { &hf_pkix1implicit_AuthorityInfoAccessSyntax_PDU,
+ { "AuthorityInfoAccessSyntax", "pkix1implicit.AuthorityInfoAccessSyntax",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "AuthorityInfoAccessSyntax", HFILL }},
+ { &hf_pkix1implicit_rfc822Name,
+ { "rfc822Name", "pkix1implicit.rfc822Name",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "GeneralName/rfc822Name", HFILL }},
+ { &hf_pkix1implicit_dNSName,
+ { "dNSName", "pkix1implicit.dNSName",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "GeneralName/dNSName", HFILL }},
+ { &hf_pkix1implicit_directoryName,
+ { "directoryName", "pkix1implicit.directoryName",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "GeneralName/directoryName", HFILL }},
+ { &hf_pkix1implicit_ediPartyName,
+ { "ediPartyName", "pkix1implicit.ediPartyName",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "GeneralName/ediPartyName", HFILL }},
+ { &hf_pkix1implicit_uniformResourceIdentifier,
+ { "uniformResourceIdentifier", "pkix1implicit.uniformResourceIdentifier",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "GeneralName/uniformResourceIdentifier", HFILL }},
+ { &hf_pkix1implicit_iPAddress,
+ { "iPAddress", "pkix1implicit.iPAddress",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "GeneralName/iPAddress", HFILL }},
+ { &hf_pkix1implicit_registeredID,
+ { "registeredID", "pkix1implicit.registeredID",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "GeneralName/registeredID", HFILL }},
+ { &hf_pkix1implicit_nameAssigner,
+ { "nameAssigner", "pkix1implicit.nameAssigner",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "EDIPartyName/nameAssigner", HFILL }},
+ { &hf_pkix1implicit_partyName,
+ { "partyName", "pkix1implicit.partyName",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "EDIPartyName/partyName", HFILL }},
+ { &hf_pkix1implicit_AuthorityInfoAccessSyntax_item,
+ { "Item", "pkix1implicit.AuthorityInfoAccessSyntax_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AuthorityInfoAccessSyntax/_item", HFILL }},
+ { &hf_pkix1implicit_accessMethod,
+ { "accessMethod", "pkix1implicit.accessMethod",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "AccessDescription/accessMethod", HFILL }},
+ { &hf_pkix1implicit_accessLocation,
+ { "accessLocation", "pkix1implicit.accessLocation",
+ FT_UINT32, BASE_DEC, VALS(GeneralName_vals), 0,
+ "AccessDescription/accessLocation", HFILL }},
{ &hf_pkix1implicit_noticeRef,
{ "noticeRef", "pkix1implicit.noticeRef",
FT_NONE, BASE_NONE, NULL, 0,
@@ -286,6 +494,10 @@ void proto_register_pkix1implicit(void) {
/*--- Included file: packet-pkix1implicit-ettarr.c ---*/
+ &ett_pkix1implicit_GeneralName,
+ &ett_pkix1implicit_EDIPartyName,
+ &ett_pkix1implicit_AuthorityInfoAccessSyntax,
+ &ett_pkix1implicit_AccessDescription,
&ett_pkix1implicit_UserNotice,
&ett_pkix1implicit_NoticeReference,
&ett_pkix1implicit_SEQUNCE_OF_INTEGER,
@@ -310,6 +522,7 @@ void proto_reg_handoff_pkix1implicit(void) {
/*--- Included file: packet-pkix1implicit-dis-tab.c ---*/
+ register_ber_oid_dissector("1.3.6.1.5.5.7.1.1", dissect_AuthorityInfoAccessSyntax_PDU, proto_pkix1implicit, "id-pe-authorityInfoAccessSyntax");
register_ber_oid_dissector("1.3.6.1.5.5.7.3.1", dissect_Dummy_PDU, proto_pkix1implicit, "id-kp-serverAuth");
register_ber_oid_dissector("1.3.6.1.5.5.7.3.2", dissect_Dummy_PDU, proto_pkix1implicit, "id-kp-clientAuth");
register_ber_oid_dissector("1.3.6.1.5.5.7.3.3", dissect_Dummy_PDU, proto_pkix1implicit, "id-kp-codeSigning");