aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/asn1/x509ce/packet-x509ce-template.c12
-rw-r--r--epan/dissectors/asn1/x509ce/x509ce.cnf12
-rw-r--r--epan/dissectors/packet-x509ce.c40
3 files changed, 44 insertions, 20 deletions
diff --git a/epan/dissectors/asn1/x509ce/packet-x509ce-template.c b/epan/dissectors/asn1/x509ce/packet-x509ce-template.c
index def4145f23..000421964b 100644
--- a/epan/dissectors/asn1/x509ce/packet-x509ce-template.c
+++ b/epan/dissectors/asn1/x509ce/packet-x509ce-template.c
@@ -33,7 +33,8 @@ static int proto_x509ce = -1;
static int hf_x509ce_id_ce_invalidityDate = -1;
static int hf_x509ce_id_ce_baseUpdateTime = -1;
static int hf_x509ce_object_identifier_id = -1;
-static int hf_x509ce_IPAddress = -1;
+static int hf_x509ce_IPAddress_ipv4 = -1;
+static int hf_x509ce_IPAddress_ipv6 = -1;
#include "packet-x509ce-hf.c"
/* Initialize the subtree pointers */
@@ -99,9 +100,12 @@ void proto_register_x509ce(void) {
{ &hf_x509ce_object_identifier_id,
{ "Id", "x509ce.id", FT_OID, BASE_NONE, NULL, 0,
"Object identifier Id", HFILL }},
- { &hf_x509ce_IPAddress,
- { "iPAddress", "x509ce.IPAddress", FT_IPv4, BASE_NONE, NULL, 0,
- "IP Address", HFILL }},
+ { &hf_x509ce_IPAddress_ipv4,
+ { "iPAddress", "x509ce.IPAddress.ipv4", FT_IPv4, BASE_NONE, NULL, 0,
+ "IPv4 address", HFILL }},
+ { &hf_x509ce_IPAddress_ipv6,
+ { "iPAddress", "x509ce.IPAddress.ipv6", FT_IPv6, BASE_NONE, NULL, 0,
+ "IPv6 address", HFILL }},
#include "packet-x509ce-hfarr.c"
};
diff --git a/epan/dissectors/asn1/x509ce/x509ce.cnf b/epan/dissectors/asn1/x509ce/x509ce.cnf
index 153e5cfcc2..0c89ef10ed 100644
--- a/epan/dissectors/asn1/x509ce/x509ce.cnf
+++ b/epan/dissectors/asn1/x509ce/x509ce.cnf
@@ -169,8 +169,16 @@ EnhancedCertificateAssertion/pathToName enhancedPathToName
offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
#.FN_BODY GeneralName/iPAddress
- proto_tree_add_item(tree, hf_x509ce_IPAddress, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset+=4;
+ switch (tvb_reported_length(tvb)) {
+ case 4: /* IPv4 */
+ proto_tree_add_item(tree, hf_x509ce_IPAddress_ipv4, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ break;
+ case 16: /* IPv6 */
+ proto_tree_add_item(tree, hf_x509ce_IPAddress_ipv6, tvb, offset, 16, ENC_NA);
+ offset += 16;
+ break;
+ }
#.FN_PARS OtherNameType
FN_VARIANT = _str VAL_PTR = &actx->external.direct_reference
diff --git a/epan/dissectors/packet-x509ce.c b/epan/dissectors/packet-x509ce.c
index 0c07904d82..aec877d516 100644
--- a/epan/dissectors/packet-x509ce.c
+++ b/epan/dissectors/packet-x509ce.c
@@ -41,7 +41,8 @@ static int proto_x509ce = -1;
static int hf_x509ce_id_ce_invalidityDate = -1;
static int hf_x509ce_id_ce_baseUpdateTime = -1;
static int hf_x509ce_object_identifier_id = -1;
-static int hf_x509ce_IPAddress = -1;
+static int hf_x509ce_IPAddress_ipv4 = -1;
+static int hf_x509ce_IPAddress_ipv6 = -1;
/*--- Included file: packet-x509ce-hf.c ---*/
#line 1 "./asn1/x509ce/packet-x509ce-hf.c"
@@ -244,7 +245,7 @@ static int hf_x509ce_EntrustInfoFlags_webCategory = -1;
static int hf_x509ce_EntrustInfoFlags_sETCategory = -1;
/*--- End of included file: packet-x509ce-hf.c ---*/
-#line 38 "./asn1/x509ce/packet-x509ce-template.c"
+#line 39 "./asn1/x509ce/packet-x509ce-template.c"
/* Initialize the subtree pointers */
@@ -312,7 +313,7 @@ static gint ett_x509ce_EntrustInfoFlags = -1;
static gint ett_x509ce_ScramblerCapabilities = -1;
/*--- End of included file: packet-x509ce-ett.c ---*/
-#line 41 "./asn1/x509ce/packet-x509ce-template.c"
+#line 42 "./asn1/x509ce/packet-x509ce-template.c"
/*--- Included file: packet-x509ce-fn.c ---*/
#line 1 "./asn1/x509ce/packet-x509ce-fn.c"
@@ -339,7 +340,7 @@ dissect_x509ce_OtherNameType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int o
static int
dissect_x509ce_OtherNameValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 179 "./asn1/x509ce/x509ce.cnf"
+#line 187 "./asn1/x509ce/x509ce.cnf"
offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
@@ -396,7 +397,7 @@ dissect_x509ce_T_uniformResourceIdentifier(gboolean implicit_tag _U_, tvbuff_t *
actx, tree, tvb, offset, hf_index,
NULL);
-#line 182 "./asn1/x509ce/x509ce.cnf"
+#line 190 "./asn1/x509ce/x509ce.cnf"
PROTO_ITEM_SET_URL(actx->created_item);
@@ -409,8 +410,16 @@ dissect_x509ce_T_uniformResourceIdentifier(gboolean implicit_tag _U_, tvbuff_t *
static int
dissect_x509ce_T_iPAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 172 "./asn1/x509ce/x509ce.cnf"
- proto_tree_add_item(tree, hf_x509ce_IPAddress, tvb, offset, 4, ENC_BIG_ENDIAN);
- offset+=4;
+ switch (tvb_reported_length(tvb)) {
+ case 4: /* IPv4 */
+ proto_tree_add_item(tree, hf_x509ce_IPAddress_ipv4, tvb, offset, 4, ENC_BIG_ENDIAN);
+ offset += 4;
+ break;
+ case 16: /* IPv6 */
+ proto_tree_add_item(tree, hf_x509ce_IPAddress_ipv6, tvb, offset, 16, ENC_NA);
+ offset += 16;
+ break;
+ }
@@ -1934,7 +1943,7 @@ static int dissect_CicamBrandId_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, p
/*--- End of included file: packet-x509ce-fn.c ---*/
-#line 42 "./asn1/x509ce/packet-x509ce-template.c"
+#line 43 "./asn1/x509ce/packet-x509ce-template.c"
/* CI+ (www.ci-plus.com) defines some X.509 certificate extensions
that use OIDs which are not officially assigned
@@ -1995,9 +2004,12 @@ void proto_register_x509ce(void) {
{ &hf_x509ce_object_identifier_id,
{ "Id", "x509ce.id", FT_OID, BASE_NONE, NULL, 0,
"Object identifier Id", HFILL }},
- { &hf_x509ce_IPAddress,
- { "iPAddress", "x509ce.IPAddress", FT_IPv4, BASE_NONE, NULL, 0,
- "IP Address", HFILL }},
+ { &hf_x509ce_IPAddress_ipv4,
+ { "iPAddress", "x509ce.IPAddress.ipv4", FT_IPv4, BASE_NONE, NULL, 0,
+ "IPv4 address", HFILL }},
+ { &hf_x509ce_IPAddress_ipv6,
+ { "iPAddress", "x509ce.IPAddress.ipv6", FT_IPv6, BASE_NONE, NULL, 0,
+ "IPv6 address", HFILL }},
/*--- Included file: packet-x509ce-hfarr.c ---*/
@@ -2788,7 +2800,7 @@ void proto_register_x509ce(void) {
NULL, HFILL }},
/*--- End of included file: packet-x509ce-hfarr.c ---*/
-#line 107 "./asn1/x509ce/packet-x509ce-template.c"
+#line 111 "./asn1/x509ce/packet-x509ce-template.c"
};
/* List of subtrees */
@@ -2858,7 +2870,7 @@ void proto_register_x509ce(void) {
&ett_x509ce_ScramblerCapabilities,
/*--- End of included file: packet-x509ce-ettarr.c ---*/
-#line 112 "./asn1/x509ce/packet-x509ce-template.c"
+#line 116 "./asn1/x509ce/packet-x509ce-template.c"
};
/* Register protocol */
@@ -2921,7 +2933,7 @@ void proto_reg_handoff_x509ce(void) {
/*--- End of included file: packet-x509ce-dis-tab.c ---*/
-#line 127 "./asn1/x509ce/packet-x509ce-template.c"
+#line 131 "./asn1/x509ce/packet-x509ce-template.c"
register_ber_oid_dissector("2.5.29.24", dissect_x509ce_invalidityDate_callback, proto_x509ce, "id-ce-invalidityDate");
register_ber_oid_dissector("2.5.29.51", dissect_x509ce_baseUpdateTime_callback, proto_x509ce, "id-ce-baseUpdateTime");
}