summaryrefslogtreecommitdiff
path: root/epan/dissectors/packet-pkcs1.c
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors/packet-pkcs1.c')
-rw-r--r--epan/dissectors/packet-pkcs1.c253
1 files changed, 247 insertions, 6 deletions
diff --git a/epan/dissectors/packet-pkcs1.c b/epan/dissectors/packet-pkcs1.c
index 365906e09c..0ef799589d 100644
--- a/epan/dissectors/packet-pkcs1.c
+++ b/epan/dissectors/packet-pkcs1.c
@@ -1,7 +1,7 @@
/* Do not modify this file. */
/* It is created automatically by the ASN.1 to Wireshark dissector compiler */
/* packet-pkcs1.c */
-/* ../../tools/asn2wrs.py -b -p pkcs1 -c ./pkcs1.cnf -s ./packet-pkcs1-template -D . PKCS1.asn */
+/* ../../tools/asn2wrs.py -b -p pkcs1 -c ./pkcs1.cnf -s ./packet-pkcs1-template -D . PKIXAlgs-2009.asn */
/* Input file: packet-pkcs1-template.c */
@@ -37,6 +37,7 @@
#include <glib.h>
#include <epan/packet.h>
+#include <epan/oids.h>
#include <epan/asn1.h>
#include "packet-ber.h"
@@ -52,6 +53,10 @@ static int proto_pkcs1 = -1;
/*--- Included file: packet-pkcs1-hf.c ---*/
#line 1 "../../asn1/pkcs1/packet-pkcs1-hf.c"
+static int hf_pkcs1_DSA_Params_PDU = -1; /* DSA_Params */
+static int hf_pkcs1_DomainParameters_PDU = -1; /* DomainParameters */
+static int hf_pkcs1_KEA_Params_Id_PDU = -1; /* KEA_Params_Id */
+static int hf_pkcs1_ECParameters_PDU = -1; /* ECParameters */
static int hf_pkcs1_modulus = -1; /* INTEGER */
static int hf_pkcs1_publicExponent = -1; /* INTEGER */
static int hf_pkcs1_version = -1; /* Version */
@@ -63,9 +68,19 @@ static int hf_pkcs1_exponent2 = -1; /* INTEGER */
static int hf_pkcs1_coefficient = -1; /* INTEGER */
static int hf_pkcs1_digestAlgorithm = -1; /* DigestAlgorithmIdentifier */
static int hf_pkcs1_digest = -1; /* Digest */
+static int hf_pkcs1_p = -1; /* INTEGER */
+static int hf_pkcs1_q = -1; /* INTEGER */
+static int hf_pkcs1_g = -1; /* INTEGER */
+static int hf_pkcs1_j = -1; /* INTEGER */
+static int hf_pkcs1_validationParams = -1; /* ValidationParams */
+static int hf_pkcs1_seed = -1; /* BIT_STRING */
+static int hf_pkcs1_pgenCounter = -1; /* INTEGER */
+static int hf_pkcs1_namedCurve = -1; /* OBJECT_IDENTIFIER */
+static int hf_pkcs1_r = -1; /* INTEGER */
+static int hf_pkcs1_s = -1; /* INTEGER */
/*--- End of included file: packet-pkcs1-hf.c ---*/
-#line 45 "../../asn1/pkcs1/packet-pkcs1-template.c"
+#line 46 "../../asn1/pkcs1/packet-pkcs1-template.c"
/* Initialize the subtree pointers */
@@ -74,9 +89,15 @@ static int hf_pkcs1_digest = -1; /* Digest */
static gint ett_pkcs1_RSAPublicKey = -1;
static gint ett_pkcs1_RSAPrivateKey = -1;
static gint ett_pkcs1_DigestInfo = -1;
+static gint ett_pkcs1_DSA_Params = -1;
+static gint ett_pkcs1_DomainParameters = -1;
+static gint ett_pkcs1_ValidationParams = -1;
+static gint ett_pkcs1_ECParameters = -1;
+static gint ett_pkcs1_DSA_Sig_Value = -1;
+static gint ett_pkcs1_ECDSA_Sig_Value = -1;
/*--- End of included file: packet-pkcs1-ett.c ---*/
-#line 48 "../../asn1/pkcs1/packet-pkcs1-template.c"
+#line 49 "../../asn1/pkcs1/packet-pkcs1-template.c"
/*--- Included file: packet-pkcs1-fn.c ---*/
@@ -173,8 +194,135 @@ dissect_pkcs1_DigestInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offse
}
+static const ber_sequence_t DSA_Params_sequence[] = {
+ { &hf_pkcs1_p , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_pkcs1_INTEGER },
+ { &hf_pkcs1_q , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_pkcs1_INTEGER },
+ { &hf_pkcs1_g , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_pkcs1_INTEGER },
+ { NULL, 0, 0, 0, NULL }
+};
+
+static int
+dissect_pkcs1_DSA_Params(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_sequence(implicit_tag, actx, tree, tvb, offset,
+ DSA_Params_sequence, hf_index, ett_pkcs1_DSA_Params);
+
+ return offset;
+}
+
+
+
+
+static int
+dissect_pkcs1_BIT_STRING(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_bitstring(implicit_tag, actx, tree, tvb, offset,
+ NULL, hf_index, -1,
+ NULL);
+
+ return offset;
+}
+
+
+static const ber_sequence_t ValidationParams_sequence[] = {
+ { &hf_pkcs1_seed , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_pkcs1_BIT_STRING },
+ { &hf_pkcs1_pgenCounter , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_pkcs1_INTEGER },
+ { NULL, 0, 0, 0, NULL }
+};
+
+static int
+dissect_pkcs1_ValidationParams(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_sequence(implicit_tag, actx, tree, tvb, offset,
+ ValidationParams_sequence, hf_index, ett_pkcs1_ValidationParams);
+
+ return offset;
+}
+
+
+static const ber_sequence_t DomainParameters_sequence[] = {
+ { &hf_pkcs1_p , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_pkcs1_INTEGER },
+ { &hf_pkcs1_g , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_pkcs1_INTEGER },
+ { &hf_pkcs1_q , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_pkcs1_INTEGER },
+ { &hf_pkcs1_j , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_pkcs1_INTEGER },
+ { &hf_pkcs1_validationParams, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_pkcs1_ValidationParams },
+ { NULL, 0, 0, 0, NULL }
+};
+
+static int
+dissect_pkcs1_DomainParameters(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_sequence(implicit_tag, actx, tree, tvb, offset,
+ DomainParameters_sequence, hf_index, ett_pkcs1_DomainParameters);
+
+ return offset;
+}
+
+
+
+
+static int
+dissect_pkcs1_KEA_Params_Id(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_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+
+
+
+
+static int
+dissect_pkcs1_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);
+
+ return offset;
+}
+
+
+static const value_string pkcs1_ECParameters_vals[] = {
+ { 0, "namedCurve" },
+ { 0, NULL }
+};
+
+static const ber_choice_t ECParameters_choice[] = {
+ { 0, &hf_pkcs1_namedCurve , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_pkcs1_OBJECT_IDENTIFIER },
+ { 0, NULL, 0, 0, 0, NULL }
+};
+
+static int
+dissect_pkcs1_ECParameters(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_choice(actx, tree, tvb, offset,
+ ECParameters_choice, hf_index, ett_pkcs1_ECParameters,
+ NULL);
+
+ return offset;
+}
+
+
+
+/*--- PDUs ---*/
+
+static void dissect_DSA_Params_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
+ asn1_ctx_t asn1_ctx;
+ asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
+ dissect_pkcs1_DSA_Params(FALSE, tvb, 0, &asn1_ctx, tree, hf_pkcs1_DSA_Params_PDU);
+}
+static void dissect_DomainParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
+ asn1_ctx_t asn1_ctx;
+ asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
+ dissect_pkcs1_DomainParameters(FALSE, tvb, 0, &asn1_ctx, tree, hf_pkcs1_DomainParameters_PDU);
+}
+static void dissect_KEA_Params_Id_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
+ asn1_ctx_t asn1_ctx;
+ asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
+ dissect_pkcs1_KEA_Params_Id(FALSE, tvb, 0, &asn1_ctx, tree, hf_pkcs1_KEA_Params_Id_PDU);
+}
+static void dissect_ECParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
+ asn1_ctx_t asn1_ctx;
+ asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
+ dissect_pkcs1_ECParameters(FALSE, tvb, 0, &asn1_ctx, tree, hf_pkcs1_ECParameters_PDU);
+}
+
+
/*--- End of included file: packet-pkcs1-fn.c ---*/
-#line 50 "../../asn1/pkcs1/packet-pkcs1-template.c"
+#line 51 "../../asn1/pkcs1/packet-pkcs1-template.c"
/*--- proto_register_pkcs1 ----------------------------------------------*/
void proto_register_pkcs1(void) {
@@ -184,6 +332,22 @@ void proto_register_pkcs1(void) {
/*--- Included file: packet-pkcs1-hfarr.c ---*/
#line 1 "../../asn1/pkcs1/packet-pkcs1-hfarr.c"
+ { &hf_pkcs1_DSA_Params_PDU,
+ { "DSA-Params", "pkcs1.DSA_Params",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_pkcs1_DomainParameters_PDU,
+ { "DomainParameters", "pkcs1.DomainParameters",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_pkcs1_KEA_Params_Id_PDU,
+ { "KEA-Params-Id", "pkcs1.KEA_Params_Id",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_pkcs1_ECParameters_PDU,
+ { "ECParameters", "pkcs1.ECParameters",
+ FT_UINT32, BASE_DEC, VALS(pkcs1_ECParameters_vals), 0,
+ NULL, HFILL }},
{ &hf_pkcs1_modulus,
{ "modulus", "pkcs1.modulus",
FT_INT32, BASE_DEC, NULL, 0,
@@ -228,9 +392,49 @@ void proto_register_pkcs1(void) {
{ "digest", "pkcs1.digest",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_pkcs1_p,
+ { "p", "pkcs1.p",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "INTEGER", HFILL }},
+ { &hf_pkcs1_q,
+ { "q", "pkcs1.q",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "INTEGER", HFILL }},
+ { &hf_pkcs1_g,
+ { "g", "pkcs1.g",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "INTEGER", HFILL }},
+ { &hf_pkcs1_j,
+ { "j", "pkcs1.j",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "INTEGER", HFILL }},
+ { &hf_pkcs1_validationParams,
+ { "validationParams", "pkcs1.validationParams",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_pkcs1_seed,
+ { "seed", "pkcs1.seed",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING", HFILL }},
+ { &hf_pkcs1_pgenCounter,
+ { "pgenCounter", "pkcs1.pgenCounter",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "INTEGER", HFILL }},
+ { &hf_pkcs1_namedCurve,
+ { "namedCurve", "pkcs1.namedCurve",
+ FT_OID, BASE_NONE, NULL, 0,
+ "OBJECT_IDENTIFIER", HFILL }},
+ { &hf_pkcs1_r,
+ { "r", "pkcs1.r",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "INTEGER", HFILL }},
+ { &hf_pkcs1_s,
+ { "s", "pkcs1.s",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "INTEGER", HFILL }},
/*--- End of included file: packet-pkcs1-hfarr.c ---*/
-#line 57 "../../asn1/pkcs1/packet-pkcs1-template.c"
+#line 58 "../../asn1/pkcs1/packet-pkcs1-template.c"
};
/* List of subtrees */
@@ -241,9 +445,15 @@ void proto_register_pkcs1(void) {
&ett_pkcs1_RSAPublicKey,
&ett_pkcs1_RSAPrivateKey,
&ett_pkcs1_DigestInfo,
+ &ett_pkcs1_DSA_Params,
+ &ett_pkcs1_DomainParameters,
+ &ett_pkcs1_ValidationParams,
+ &ett_pkcs1_ECParameters,
+ &ett_pkcs1_DSA_Sig_Value,
+ &ett_pkcs1_ECDSA_Sig_Value,
/*--- End of included file: packet-pkcs1-ettarr.c ---*/
-#line 62 "../../asn1/pkcs1/packet-pkcs1-template.c"
+#line 63 "../../asn1/pkcs1/packet-pkcs1-template.c"
};
/* Register protocol */
@@ -258,6 +468,20 @@ void proto_register_pkcs1(void) {
/*--- proto_reg_handoff_pkcs1 -------------------------------------------*/
void proto_reg_handoff_pkcs1(void) {
+
+/*--- Included file: packet-pkcs1-dis-tab.c ---*/
+#line 1 "../../asn1/pkcs1/packet-pkcs1-dis-tab.c"
+ register_ber_oid_dissector("1.2.840.10040.4.1", dissect_DSA_Params_PDU, proto_pkcs1, "id-dsa");
+ register_ber_oid_dissector("1.2.840.10046.2.1", dissect_DomainParameters_PDU, proto_pkcs1, "dhpublicnumber");
+ register_ber_oid_dissector("2.16.840.1.101.2.1.1.22", dissect_KEA_Params_Id_PDU, proto_pkcs1, "id-keyExchangeAlgorithm");
+ register_ber_oid_dissector("1.2.840.10045.2.1", dissect_ECParameters_PDU, proto_pkcs1, "id-ecPublicKey");
+ register_ber_oid_dissector("1.3.132.1.12", dissect_ECParameters_PDU, proto_pkcs1, "id-ecDH");
+ register_ber_oid_dissector("1.2.840.10045.2.13", dissect_ECParameters_PDU, proto_pkcs1, "id-ecMQV");
+
+
+/*--- End of included file: packet-pkcs1-dis-tab.c ---*/
+#line 78 "../../asn1/pkcs1/packet-pkcs1-template.c"
+
register_ber_oid_dissector("1.2.840.113549.2.2", dissect_ber_oid_NULL_callback, proto_pkcs1, "md2");
register_ber_oid_dissector("1.2.840.113549.2.4", dissect_ber_oid_NULL_callback, proto_pkcs1, "md4");
register_ber_oid_dissector("1.2.840.113549.2.5", dissect_ber_oid_NULL_callback, proto_pkcs1, "md5");
@@ -273,5 +497,22 @@ void proto_reg_handoff_pkcs1(void) {
*/
register_ber_oid_dissector("1.2.840.113549.1.1.5", dissect_ber_oid_NULL_callback, proto_pkcs1, "shaWithRSAEncryption");
register_ber_oid_dissector("1.2.840.113549.1.1.6", dissect_ber_oid_NULL_callback, proto_pkcs1, "rsaOAEPEncryptionSET");
+
+ oid_add_from_string("secp192r1","1.2.840.10045.3.1.1");
+ oid_add_from_string("sect163k1","1.3.132.0.1");
+ oid_add_from_string("sect163r2","1.3.132.0.15");
+ oid_add_from_string("secp224r1","1.3.132.0.33");
+ oid_add_from_string("sect233k1","1.3.132.0.26");
+ oid_add_from_string("sect233r1","1.3.132.0.27");
+ oid_add_from_string("secp256r1","1.2.840.10045.3.1.7");
+ oid_add_from_string("sect283k1","1.3.132.0.16");
+ oid_add_from_string("sect283r1","1.3.132.0.17");
+ oid_add_from_string("secp384r1","1.3.132.0.34");
+ oid_add_from_string("sect409k1","1.3.132.0.36");
+ oid_add_from_string("sect409r1","1.3.132.0.37");
+ oid_add_from_string("sect521r1","1.3.132.0.35")
+; oid_add_from_string("sect571k1","1.3.132.0.38");
+ oid_add_from_string("sect571r1","1.3.132.0.39");
+
}