diff options
author | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2004-11-21 05:21:26 +0000 |
---|---|---|
committer | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2004-11-21 05:21:26 +0000 |
commit | 2c25e3c6f6e0619c9a2526f40171d9380be2f98c (patch) | |
tree | 1f46cc18eb8470cae8af7465d7af02e1b0d283f6 /epan/dissectors/packet-pkix1implicit.c | |
parent | 2ad42a55fcc2e1463472737367a1205890bda92a (diff) | |
download | wireshark-2c25e3c6f6e0619c9a2526f40171d9380be2f98c.tar.gz wireshark-2c25e3c6f6e0619c9a2526f40171d9380be2f98c.tar.bz2 wireshark-2c25e3c6f6e0619c9a2526f40171d9380be2f98c.zip |
add dissection of AuthorityInfoAccessSyntax
svn path=/trunk/; revision=12552
Diffstat (limited to 'epan/dissectors/packet-pkix1implicit.c')
-rw-r--r-- | epan/dissectors/packet-pkix1implicit.c | 215 |
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"); |