aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-pkinit.c
diff options
context:
space:
mode:
authorPascal Quantin <pascal.quantin@gmail.com>2012-07-17 19:43:17 +0000
committerPascal Quantin <pascal.quantin@gmail.com>2012-07-17 19:43:17 +0000
commite9de91f53ea5b1187c3fb300c8459154a3a730d0 (patch)
tree9a979e13471a466a5b618fe61e38a774b240a819 /epan/dissectors/packet-pkinit.c
parentae8d9d44614752fd3b67c76caf61f77684f7d485 (diff)
Fix https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7470 :
Add support for OID 1.3.6.1.5.2.2 svn path=/trunk/; revision=43771
Diffstat (limited to 'epan/dissectors/packet-pkinit.c')
-rw-r--r--epan/dissectors/packet-pkinit.c60
1 files changed, 56 insertions, 4 deletions
diff --git a/epan/dissectors/packet-pkinit.c b/epan/dissectors/packet-pkinit.c
index 85a7ccbb56..126f9cb14b 100644
--- a/epan/dissectors/packet-pkinit.c
+++ b/epan/dissectors/packet-pkinit.c
@@ -55,6 +55,7 @@ static int proto_pkinit = -1;
/*--- Included file: packet-pkinit-hf.c ---*/
#line 1 "../../asn1/pkinit/packet-pkinit-hf.c"
static int hf_pkinit_AuthPack_PDU = -1; /* AuthPack */
+static int hf_pkinit_KRB5PrincipalName_PDU = -1; /* KRB5PrincipalName */
static int hf_pkinit_KDCDHKeyInfo_PDU = -1; /* KDCDHKeyInfo */
static int hf_pkinit_signedAuthPack = -1; /* ContentInfo */
static int hf_pkinit_trustedCertifiers = -1; /* SEQUENCE_OF_TrustedCA */
@@ -70,6 +71,8 @@ static int hf_pkinit_cusec = -1; /* INTEGER */
static int hf_pkinit_ctime = -1; /* KerberosTime */
static int hf_pkinit_paNonce = -1; /* INTEGER_0_4294967295 */
static int hf_pkinit_paChecksum = -1; /* Checksum */
+static int hf_pkinit_realm = -1; /* Realm */
+static int hf_pkinit_principalName = -1; /* PrincipalName */
static int hf_pkinit_dhSignedData = -1; /* ContentInfo */
static int hf_pkinit_encKeyPack = -1; /* ContentInfo */
static int hf_pkinit_subjectPublicKey = -1; /* BIT_STRING */
@@ -89,6 +92,7 @@ static gint ett_pkinit_TrustedCA = -1;
static gint ett_pkinit_AuthPack = -1;
static gint ett_pkinit_SEQUENCE_OF_AlgorithmIdentifier = -1;
static gint ett_pkinit_PKAuthenticator = -1;
+static gint ett_pkinit_KRB5PrincipalName = -1;
static gint ett_pkinit_PaPkAsRep = -1;
static gint ett_pkinit_KDCDHKeyInfo = -1;
@@ -97,6 +101,8 @@ static gint ett_pkinit_KDCDHKeyInfo = -1;
static int dissect_KerberosV5Spec2_KerberosTime(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index _U_);
static int dissect_KerberosV5Spec2_Checksum(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index _U_);
+static int dissect_KerberosV5Spec2_Realm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index _U_);
+static int dissect_KerberosV5Spec2_PrincipalName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index _U_);
/*--- Included file: packet-pkinit-fn.c ---*/
@@ -219,6 +225,21 @@ dissect_pkinit_AuthPack(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
}
+static const ber_sequence_t KRB5PrincipalName_sequence[] = {
+ { &hf_pkinit_realm , BER_CLASS_CON, 0, 0, dissect_KerberosV5Spec2_Realm },
+ { &hf_pkinit_principalName, BER_CLASS_CON, 1, 0, dissect_KerberosV5Spec2_PrincipalName },
+ { NULL, 0, 0, 0, NULL }
+};
+
+static int
+dissect_pkinit_KRB5PrincipalName(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,
+ KRB5PrincipalName_sequence, hf_index, ett_pkinit_KRB5PrincipalName);
+
+ return offset;
+}
+
+
const value_string pkinit_PaPkAsRep_vals[] = {
{ 0, "dhSignedData" },
{ 1, "encKeyPack" },
@@ -274,6 +295,11 @@ static void dissect_AuthPack_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, prot
asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
dissect_pkinit_AuthPack(FALSE, tvb, 0, &asn1_ctx, tree, hf_pkinit_AuthPack_PDU);
}
+static void dissect_KRB5PrincipalName_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_pkinit_KRB5PrincipalName(FALSE, tvb, 0, &asn1_ctx, tree, hf_pkinit_KRB5PrincipalName_PDU);
+}
static void dissect_KDCDHKeyInfo_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);
@@ -282,7 +308,7 @@ static void dissect_KDCDHKeyInfo_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_,
/*--- End of included file: packet-pkinit-fn.c ---*/
-#line 55 "../../asn1/pkinit/packet-pkinit-template.c"
+#line 57 "../../asn1/pkinit/packet-pkinit-template.c"
int
dissect_pkinit_PA_PK_AS_REQ(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_) {
@@ -308,6 +334,18 @@ dissect_KerberosV5Spec2_Checksum(gboolean implicit_tag _U_, tvbuff_t *tvb, int o
return offset;
}
+static int
+dissect_KerberosV5Spec2_Realm(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_krb5_realm(tree, tvb, offset, actx);
+ return offset;
+}
+
+static int
+dissect_KerberosV5Spec2_PrincipalName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index _U_) {
+ offset = dissect_krb5_cname(tree, tvb, offset, actx);
+ return offset;
+}
+
/*--- proto_register_pkinit ----------------------------------------------*/
void proto_register_pkinit(void) {
@@ -321,6 +359,10 @@ void proto_register_pkinit(void) {
{ "AuthPack", "pkinit.AuthPack",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_pkinit_KRB5PrincipalName_PDU,
+ { "KRB5PrincipalName", "pkinit.KRB5PrincipalName",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_pkinit_KDCDHKeyInfo_PDU,
{ "KDCDHKeyInfo", "pkinit.KDCDHKeyInfo",
FT_NONE, BASE_NONE, NULL, 0,
@@ -381,6 +423,14 @@ void proto_register_pkinit(void) {
{ "paChecksum", "pkinit.paChecksum",
FT_NONE, BASE_NONE, NULL, 0,
"Checksum", HFILL }},
+ { &hf_pkinit_realm,
+ { "realm", "pkinit.realm",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_pkinit_principalName,
+ { "principalName", "pkinit.principalName",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_pkinit_dhSignedData,
{ "dhSignedData", "pkinit.dhSignedData",
FT_NONE, BASE_NONE, NULL, 0,
@@ -403,7 +453,7 @@ void proto_register_pkinit(void) {
"KerberosTime", HFILL }},
/*--- End of included file: packet-pkinit-hfarr.c ---*/
-#line 87 "../../asn1/pkinit/packet-pkinit-template.c"
+#line 101 "../../asn1/pkinit/packet-pkinit-template.c"
};
/* List of subtrees */
@@ -417,11 +467,12 @@ void proto_register_pkinit(void) {
&ett_pkinit_AuthPack,
&ett_pkinit_SEQUENCE_OF_AlgorithmIdentifier,
&ett_pkinit_PKAuthenticator,
+ &ett_pkinit_KRB5PrincipalName,
&ett_pkinit_PaPkAsRep,
&ett_pkinit_KDCDHKeyInfo,
/*--- End of included file: packet-pkinit-ettarr.c ---*/
-#line 92 "../../asn1/pkinit/packet-pkinit-template.c"
+#line 106 "../../asn1/pkinit/packet-pkinit-template.c"
};
/* Register protocol */
@@ -441,9 +492,10 @@ void proto_reg_handoff_pkinit(void) {
#line 1 "../../asn1/pkinit/packet-pkinit-dis-tab.c"
register_ber_oid_dissector("1.3.6.1.5.2.3.1", dissect_AuthPack_PDU, proto_pkinit, "id-pkauthdata");
register_ber_oid_dissector("1.3.6.1.5.2.3.2", dissect_KDCDHKeyInfo_PDU, proto_pkinit, "id-pkdhkeydata");
+ register_ber_oid_dissector("1.3.6.1.5.2.2", dissect_KRB5PrincipalName_PDU, proto_pkinit, "id-pkinit-san");
/*--- End of included file: packet-pkinit-dis-tab.c ---*/
-#line 107 "../../asn1/pkinit/packet-pkinit-template.c"
+#line 121 "../../asn1/pkinit/packet-pkinit-template.c"
}