aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--epan/dissectors/asn1/kerberos/packet-kerberos-template.c21
-rw-r--r--epan/dissectors/packet-kerberos.c27
2 files changed, 33 insertions, 15 deletions
diff --git a/epan/dissectors/asn1/kerberos/packet-kerberos-template.c b/epan/dissectors/asn1/kerberos/packet-kerberos-template.c
index 4fb758f057..4c22cd27d8 100644
--- a/epan/dissectors/asn1/kerberos/packet-kerberos-template.c
+++ b/epan/dissectors/asn1/kerberos/packet-kerberos-template.c
@@ -282,6 +282,19 @@ add_encryption_key(packet_info *pinfo, int keytype, int keylength, const char *k
/*XXX this needs to be freed later */
new_key->keyvalue=(char *)g_memdup(keyvalue, keylength);
}
+
+static void used_encryption_key(proto_tree *tree, packet_info *pinfo,
+ enc_key_t *ek, int usage, tvbuff_t *cryptotvb)
+{
+ proto_tree_add_expert_format(tree, pinfo, &ei_kerberos_decrypted_keytype,
+ cryptotvb, 0, 0,
+ "Decrypted keytype %d usage %d in frame %u "
+ "using %s (%02x%02x%02x%02x...)",
+ ek->keytype, usage, pinfo->fd->num, ek->key_origin,
+ ek->keyvalue[0] & 0xFF, ek->keyvalue[1] & 0xFF,
+ ek->keyvalue[2] & 0xFF, ek->keyvalue[3] & 0xFF);
+}
+
#endif /* HAVE_HEIMDAL_KERBEROS || HAVE_MIT_KERBEROS */
#if defined(HAVE_MIT_KERBEROS)
@@ -416,9 +429,7 @@ decrypt_krb5_data(proto_tree *tree _U_, packet_info *pinfo,
if(ret == 0){
char *user_data;
- expert_add_info_format(pinfo, NULL, &ei_kerberos_decrypted_keytype,
- "Decrypted keytype %d in frame %u using %s",
- ek->keytype, pinfo->num, ek->key_origin);
+ used_encryption_key(tree, pinfo, ek, usage, cryptotvb);
user_data=data.data;
if (datalen) {
@@ -575,9 +586,7 @@ decrypt_krb5_data(proto_tree *tree _U_, packet_info *pinfo,
if((ret == 0) && (length>0)){
char *user_data;
- expert_add_info_format(pinfo, NULL, &ei_kerberos_decrypted_keytype,
- "Decrypted keytype %d in frame %u using %s",
- ek->keytype, pinfo->num, ek->key_origin);
+ used_encryption_key(tree, pinfo, ek, usage, cryptotvb);
krb5_crypto_destroy(krb5_ctx, crypto);
/* return a private wmem_alloced blob to the caller */
diff --git a/epan/dissectors/packet-kerberos.c b/epan/dissectors/packet-kerberos.c
index aba4b0b8c0..c712aa83ca 100644
--- a/epan/dissectors/packet-kerberos.c
+++ b/epan/dissectors/packet-kerberos.c
@@ -590,6 +590,19 @@ add_encryption_key(packet_info *pinfo, int keytype, int keylength, const char *k
/*XXX this needs to be freed later */
new_key->keyvalue=(char *)g_memdup(keyvalue, keylength);
}
+
+static void used_encryption_key(proto_tree *tree, packet_info *pinfo,
+ enc_key_t *ek, int usage, tvbuff_t *cryptotvb)
+{
+ proto_tree_add_expert_format(tree, pinfo, &ei_kerberos_decrypted_keytype,
+ cryptotvb, 0, 0,
+ "Decrypted keytype %d usage %d in frame %u "
+ "using %s (%02x%02x%02x%02x...)",
+ ek->keytype, pinfo->fd->num, usage, ek->key_origin,
+ ek->keyvalue[0] & 0xFF, ek->keyvalue[1] & 0xFF,
+ ek->keyvalue[2] & 0xFF, ek->keyvalue[3] & 0xFF);
+}
+
#endif /* HAVE_HEIMDAL_KERBEROS || HAVE_MIT_KERBEROS */
#if defined(HAVE_MIT_KERBEROS)
@@ -724,9 +737,7 @@ decrypt_krb5_data(proto_tree *tree _U_, packet_info *pinfo,
if(ret == 0){
char *user_data;
- expert_add_info_format(pinfo, NULL, &ei_kerberos_decrypted_keytype,
- "Decrypted keytype %d in frame %u using %s",
- ek->keytype, pinfo->num, ek->key_origin);
+ used_encryption_key(tree, pinfo, ek, usage, cryptotvb);
user_data=data.data;
if (datalen) {
@@ -883,9 +894,7 @@ decrypt_krb5_data(proto_tree *tree _U_, packet_info *pinfo,
if((ret == 0) && (length>0)){
char *user_data;
- expert_add_info_format(pinfo, NULL, &ei_kerberos_decrypted_keytype,
- "Decrypted keytype %d in frame %u using %s",
- ek->keytype, pinfo->num, ek->key_origin);
+ used_encryption_key(tree, pinfo, ek, usage, cryptotvb);
krb5_crypto_destroy(krb5_ctx, crypto);
/* return a private wmem_alloced blob to the caller */
@@ -4648,7 +4657,7 @@ dissect_kerberos_EncryptedChallenge(gboolean implicit_tag _U_, tvbuff_t *tvb _U_
/*--- End of included file: packet-kerberos-fn.c ---*/
-#line 1909 "./asn1/kerberos/packet-kerberos-template.c"
+#line 1918 "./asn1/kerberos/packet-kerberos-template.c"
/* Make wrappers around exported functions for now */
int
@@ -5856,7 +5865,7 @@ void proto_register_kerberos(void) {
NULL, HFILL }},
/*--- End of included file: packet-kerberos-hfarr.c ---*/
-#line 2296 "./asn1/kerberos/packet-kerberos-template.c"
+#line 2305 "./asn1/kerberos/packet-kerberos-template.c"
};
/* List of subtrees */
@@ -5946,7 +5955,7 @@ void proto_register_kerberos(void) {
&ett_kerberos_KrbFastArmoredRep,
/*--- End of included file: packet-kerberos-ettarr.c ---*/
-#line 2312 "./asn1/kerberos/packet-kerberos-template.c"
+#line 2321 "./asn1/kerberos/packet-kerberos-template.c"
};
static ei_register_info ei[] = {