aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors
diff options
context:
space:
mode:
authorJaap Keuter <jaap.keuter@xs4all.nl>2010-09-28 21:20:57 +0000
committerJaap Keuter <jaap.keuter@xs4all.nl>2010-09-28 21:20:57 +0000
commitf0428e7d0b964fd984fc2aaebe2cbc8d9c814779 (patch)
tree817e4e51116d3b9985073ba7a73c86a3045cbada /epan/dissectors
parent362118a292b9a24dc5acd5a4380effee816bab03 (diff)
Add the missing Signature-capable flag to the Hello message.
Add missing SRT(C)P setup information to Conf2ACK message. svn path=/trunk/; revision=34277
Diffstat (limited to 'epan/dissectors')
-rw-r--r--epan/dissectors/packet-zrtp.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/epan/dissectors/packet-zrtp.c b/epan/dissectors/packet-zrtp.c
index 983f0a2b9c..c540a8c875 100644
--- a/epan/dissectors/packet-zrtp.c
+++ b/epan/dissectors/packet-zrtp.c
@@ -35,6 +35,8 @@
#include <epan/packet.h>
#include <epan/strutil.h>
#include <epan/crc32.h>
+#include "packet-rtp.h"
+#include "packet-rtcp.h"
/*
RTP header
@@ -61,6 +63,7 @@ static int hf_zrtp_msg_version = -1;
*/
static int hf_zrtp_msg_client_id = -1;
static int hf_zrtp_msg_zid = -1;
+static int hf_zrtp_msg_sigcap = -1;
static int hf_zrtp_msg_mitm = -1;
static int hf_zrtp_msg_passive = -1;
static int hf_zrtp_msg_hash_count = -1;
@@ -456,6 +459,27 @@ dissect_RelayACK(packet_info *pinfo) {
static void
dissect_Conf2ACK(packet_info *pinfo) {
+
+ /* Signals start of SRT(C)P streams */
+ struct srtp_info *dummy_srtp_info = se_alloc0(sizeof(struct srtp_info));
+
+ dummy_srtp_info->encryption_algorithm = SRTP_ENC_ALG_AES_CM;
+ dummy_srtp_info->auth_algorithm = SRTP_AUTH_ALG_HMAC_SHA1;
+ dummy_srtp_info->mki_len = 0;
+ dummy_srtp_info->auth_tag_len = 4;
+
+ srtp_add_address(pinfo, &pinfo->net_src, pinfo->srcport, pinfo->destport,
+ "ZRTP", PINFO_FD_NUM(pinfo), FALSE, NULL, dummy_srtp_info);
+
+ srtp_add_address(pinfo, &pinfo->net_dst, pinfo->destport, pinfo->srcport,
+ "ZRTP", PINFO_FD_NUM(pinfo), FALSE, NULL, dummy_srtp_info);
+
+ srtcp_add_address(pinfo, &pinfo->net_src, pinfo->srcport+1, pinfo->destport+1,
+ "ZRTP", PINFO_FD_NUM(pinfo), dummy_srtp_info);
+
+ srtcp_add_address(pinfo, &pinfo->net_dst, pinfo->destport+1, pinfo->srcport+1,
+ "ZRTP", PINFO_FD_NUM(pinfo), dummy_srtp_info);
+
col_set_str(pinfo->cinfo, COL_INFO, "Conf2ACK Packet");
}
@@ -492,6 +516,8 @@ dissect_GoClear(tvbuff_t *tvb, packet_info *pinfo, proto_tree *zrtp_tree) {
col_set_str(pinfo->cinfo, COL_INFO, "GoClear Packet");
+ /* Now we should clear the SRT(C)P session... */
+
proto_tree_add_item(zrtp_tree,hf_zrtp_msg_hmac,tvb,data_offset+0,8,FALSE);
}
@@ -657,6 +683,7 @@ dissect_Hello(tvbuff_t *tvb, packet_info *pinfo, proto_tree *zrtp_tree) {
proto_tree_add_item(zrtp_tree,hf_zrtp_msg_client_id,tvb,msg_offset+16,16,FALSE);
proto_tree_add_item(zrtp_tree,hf_zrtp_msg_hash_image,tvb,msg_offset+32,32,FALSE);
proto_tree_add_item(zrtp_tree,hf_zrtp_msg_zid,tvb,msg_offset+64,12,FALSE);
+ proto_tree_add_item(zrtp_tree,hf_zrtp_msg_sigcap,tvb,data_offset+0,1,FALSE);
proto_tree_add_item(zrtp_tree,hf_zrtp_msg_mitm,tvb,data_offset+0,1,FALSE);
proto_tree_add_item(zrtp_tree,hf_zrtp_msg_passive,tvb,data_offset+0,1,FALSE);
@@ -859,6 +886,15 @@ proto_register_zrtp(void)
}
},
+ {&hf_zrtp_msg_sigcap,
+ {
+ "Sig.capable", "zrtp.sigcap",
+ FT_BOOLEAN, 8,
+ NULL, 0x40,
+ NULL, HFILL
+ }
+ },
+
{&hf_zrtp_msg_mitm,
{
"MiTM", "zrtp.mitm",