PKIX1EXPLICIT: Fixing Attribute and AttributeTypeAndValue ASN.1 cnf
authorMartin Peylo <wireshark@izac.de>
Mon, 12 Nov 2018 17:56:11 +0000 (19:56 +0200)
committerAnders Broman <a.broman58@gmail.com>
Tue, 13 Nov 2018 17:58:08 +0000 (17:58 +0000)
EXPERIMENTAL, this has not been widely validated yet.  It is not clear whether
there is any deeper sense in how the prior ASN.1 cnf was done.

If this is used, it might also be beneficial to rename the double-overloaded
"type".

Removing pre-existing empty line at the end of packet-pkix1explicit-template.c
to comply with coding style requirements.

Change-Id: Iaddeb62f8abb8605b182091ea9c64b8f2172a884
Reviewed-on: https://code.wireshark.org/review/30599
Petri-Dish: Anders Broman <a.broman58@gmail.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman <a.broman58@gmail.com>
epan/dissectors/asn1/pkix1explicit/packet-pkix1explicit-template.c
epan/dissectors/asn1/pkix1explicit/pkix1explicit.cnf
epan/dissectors/packet-pkix1explicit.c

index 5260a74cd74573623a16f4ef7e8d0dc84f52797b..e4d9199c92e028568fc0d07be41ff59222b872a4 100644 (file)
@@ -129,4 +129,3 @@ void proto_reg_handoff_pkix1explicit(void) {
        oid_add_from_string("id-dsa-with-sha1","1.2.840.10040.4.3");
 #include "packet-pkix1explicit-dis-tab.c"
 }
-
index de7bc2f260e55070adbfff3cd5aaee39cc559c6e..29bc5f3cf55ddd4cba03eb80c4ec778b7e91af5f 100644 (file)
@@ -40,21 +40,17 @@ Extensions      B "1.2.840.113549.1.9.14" "pkcs-9-at-extensionRequest"
 #.FN_BODY DirectoryString
        offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
 
-#.FN_PARS Attribute/values
-  FN_VARIANT = _str  HF_INDEX = hf_pkix1explicit_object_identifier_id
+#.FN_PARS Attribute/type
+  FN_VARIANT = _str  HF_INDEX = hf_pkix1explicit_type  VAL_PTR = &actx->external.direct_reference
 
 #.FN_BODY Attribute/values/_item
-  if (actx->external.direct_ref_present) {
     offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
-  }
 
-#.FN_PARS AttributeTypeAndValue/value
-  FN_VARIANT = _str  HF_INDEX = hf_pkix1explicit_object_identifier_id
+#.FN_PARS AttributeTypeAndValue/type
+  FN_VARIANT = _str  HF_INDEX = hf_pkix1explicit_type_01  VAL_PTR = &actx->external.direct_reference
 
 #.FN_BODY AttributeTypeAndValue/value
-  if (actx->external.direct_ref_present) {
     offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
-  }
 
 #.FN_PARS Extension/extnId
   FN_VARIANT = _str  HF_INDEX = hf_pkix1explicit_object_identifier_id  VAL_PTR = &actx->external.direct_reference
index cba740394f1df840b111fa2069ba762fe616492c..b87faa78c6eabcc3aee9a0e19336161cf8527795 100644 (file)
@@ -71,13 +71,14 @@ static int hf_pkix1explicit_j = -1;               /* INTEGER */
 static int hf_pkix1explicit_validationParms = -1;  /* ValidationParms */
 static int hf_pkix1explicit_seed = -1;            /* BIT_STRING */
 static int hf_pkix1explicit_pgenCounter = -1;     /* INTEGER */
-static int hf_pkix1explicit_type = -1;            /* OBJECT_IDENTIFIER */
+static int hf_pkix1explicit_type = -1;            /* T_type */
 static int hf_pkix1explicit_values = -1;          /* T_values */
 static int hf_pkix1explicit_values_item = -1;     /* T_values_item */
+static int hf_pkix1explicit_type_01 = -1;         /* T_type_01 */
 static int hf_pkix1explicit_value = -1;           /* T_value */
 static int hf_pkix1explicit_RDNSequence_item = -1;  /* RelativeDistinguishedName */
 static int hf_pkix1explicit_RelativeDistinguishedName_item = -1;  /* AttributeTypeAndValue */
-static int hf_pkix1explicit_type_01 = -1;         /* TeletexString */
+static int hf_pkix1explicit_type_02 = -1;         /* TeletexString */
 static int hf_pkix1explicit_value_01 = -1;        /* TeletexString */
 static int hf_pkix1explicit_Features_item = -1;   /* INTEGER */
 static int hf_pkix1explicit_IPAddrBlocks_item = -1;  /* IPAddressFamily */
@@ -257,7 +258,7 @@ dissect_pkix1explicit_Time(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off
 
 static int
 dissect_pkix1explicit_T_extnId(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 63 "./asn1/pkix1explicit/pkix1explicit.cnf"
+#line 59 "./asn1/pkix1explicit/pkix1explicit.cnf"
   offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_pkix1explicit_object_identifier_id, &actx->external.direct_reference);
 
   actx->external.direct_ref_present = (actx->external.direct_reference != NULL) ? TRUE : FALSE;
@@ -280,7 +281,7 @@ dissect_pkix1explicit_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
 
 static int
 dissect_pkix1explicit_T_extnValue(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 67 "./asn1/pkix1explicit/pkix1explicit.cnf"
+#line 63 "./asn1/pkix1explicit/pkix1explicit.cnf"
   gint8 appclass;
   gboolean pc, ind;
   gint32 tag;
@@ -384,8 +385,8 @@ dissect_pkix1explicit_DomainParameters(gboolean implicit_tag _U_, tvbuff_t *tvb
 
 
 static int
-dissect_pkix1explicit_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-  offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
+dissect_pkix1explicit_T_type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_pkix1explicit_type, &actx->external.direct_reference);
 
   return offset;
 }
@@ -395,9 +396,7 @@ dissect_pkix1explicit_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb
 static int
 dissect_pkix1explicit_T_values_item(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 47 "./asn1/pkix1explicit/pkix1explicit.cnf"
-  if (actx->external.direct_ref_present) {
     offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
-  }
 
 
 
@@ -412,14 +411,14 @@ static const ber_sequence_t T_values_set_of[1] = {
 static int
 dissect_pkix1explicit_T_values(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
-                                 T_values_set_of, hf_pkix1explicit_object_identifier_id, ett_pkix1explicit_T_values);
+                                 T_values_set_of, hf_index, ett_pkix1explicit_T_values);
 
   return offset;
 }
 
 
 static const ber_sequence_t Attribute_sequence[] = {
-  { &hf_pkix1explicit_type  , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_OBJECT_IDENTIFIER },
+  { &hf_pkix1explicit_type  , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_T_type },
   { &hf_pkix1explicit_values, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_T_values },
   { NULL, 0, 0, 0, NULL }
 };
@@ -434,12 +433,19 @@ dissect_pkix1explicit_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
 
 
 
+static int
+dissect_pkix1explicit_T_type_01(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_pkix1explicit_type_01, &actx->external.direct_reference);
+
+  return offset;
+}
+
+
+
 static int
 dissect_pkix1explicit_T_value(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 55 "./asn1/pkix1explicit/pkix1explicit.cnf"
-  if (actx->external.direct_ref_present) {
+#line 53 "./asn1/pkix1explicit/pkix1explicit.cnf"
     offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
-  }
 
 
 
@@ -448,7 +454,7 @@ dissect_pkix1explicit_T_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
 
 
 static const ber_sequence_t AttributeTypeAndValue_sequence[] = {
-  { &hf_pkix1explicit_type  , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_OBJECT_IDENTIFIER },
+  { &hf_pkix1explicit_type_01, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_T_type_01 },
   { &hf_pkix1explicit_value , BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_T_value },
   { NULL, 0, 0, 0, NULL }
 };
@@ -532,7 +538,7 @@ dissect_pkix1explicit_TeletexString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_
 
 
 static const ber_sequence_t TeletexDomainDefinedAttribute_sequence[] = {
-  { &hf_pkix1explicit_type_01, BER_CLASS_UNI, BER_UNI_TAG_TeletexString, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_TeletexString },
+  { &hf_pkix1explicit_type_02, BER_CLASS_UNI, BER_UNI_TAG_TeletexString, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_TeletexString },
   { &hf_pkix1explicit_value_01, BER_CLASS_UNI, BER_UNI_TAG_TeletexString, BER_FLAGS_NOOWNTAG, dissect_pkix1explicit_TeletexString },
   { NULL, 0, 0, 0, NULL }
 };
@@ -562,7 +568,7 @@ dissect_pkix1explicit_Features(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
 
 static int
 dissect_pkix1explicit_T_addressFamily(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 81 "./asn1/pkix1explicit/pkix1explicit.cnf"
+#line 77 "./asn1/pkix1explicit/pkix1explicit.cnf"
        tvbuff_t        *parameter_tvb;
        proto_tree *subtree;
 
@@ -947,7 +953,7 @@ void proto_register_pkix1explicit(void) {
     { &hf_pkix1explicit_type,
       { "type", "pkix1explicit.type",
         FT_OID, BASE_NONE, NULL, 0,
-        "OBJECT_IDENTIFIER", HFILL }},
+        NULL, HFILL }},
     { &hf_pkix1explicit_values,
       { "values", "pkix1explicit.values",
         FT_UINT32, BASE_DEC, NULL, 0,
@@ -956,6 +962,10 @@ void proto_register_pkix1explicit(void) {
       { "values item", "pkix1explicit.values_item_element",
         FT_NONE, BASE_NONE, NULL, 0,
         NULL, HFILL }},
+    { &hf_pkix1explicit_type_01,
+      { "type", "pkix1explicit.type",
+        FT_OID, BASE_NONE, NULL, 0,
+        "T_type_01", HFILL }},
     { &hf_pkix1explicit_value,
       { "value", "pkix1explicit.value_element",
         FT_NONE, BASE_NONE, NULL, 0,
@@ -968,7 +978,7 @@ void proto_register_pkix1explicit(void) {
       { "AttributeTypeAndValue", "pkix1explicit.AttributeTypeAndValue_element",
         FT_NONE, BASE_NONE, NULL, 0,
         NULL, HFILL }},
-    { &hf_pkix1explicit_type_01,
+    { &hf_pkix1explicit_type_02,
       { "type", "pkix1explicit.type",
         FT_STRING, STR_UNICODE, NULL, 0,
         "TeletexString", HFILL }},
@@ -1120,4 +1130,3 @@ void proto_reg_handoff_pkix1explicit(void) {
 /*--- End of included file: packet-pkix1explicit-dis-tab.c ---*/
 #line 131 "./asn1/pkix1explicit/packet-pkix1explicit-template.c"
 }
-