diff --git a/daemon/crypto.c b/daemon/crypto.c index 3b71591db..4eb4b4434 100644 --- a/daemon/crypto.c +++ b/daemon/crypto.c @@ -8,6 +8,12 @@ #include "aux.h" #include "rtp.h" #include "rtcp.h" +#include "log.h" + + + + +#define CRYPTO_DEBUG 0 @@ -200,6 +206,28 @@ int crypto_gen_session_key(struct crypto_context *c, str *out, unsigned char lab prf_n(out, c->master_key, (char *) x); +#if CRYPTO_DEBUG + mylog(LOG_DEBUG, "Generated session key: master key " + "%02x%02x%02x%02x..., " + "master salt " + "%02x%02x%02x%02x..., " + "label %02x, length %i, result " + "%02x%02x%02x%02x...", + (unsigned char) c->master_key[0], + (unsigned char) c->master_key[1], + (unsigned char) c->master_key[2], + (unsigned char) c->master_key[3], + (unsigned char) c->master_salt[0], + (unsigned char) c->master_salt[1], + (unsigned char) c->master_salt[2], + (unsigned char) c->master_salt[3], + label, out->len, + (unsigned char) out->s[0], + (unsigned char) out->s[1], + (unsigned char) out->s[2], + (unsigned char) out->s[3]); +#endif + return 0; } diff --git a/tests/simulator-ng.pl b/tests/simulator-ng.pl index 6333bc665..672e1387f 100755 --- a/tests/simulator-ng.pl +++ b/tests/simulator-ng.pl @@ -161,6 +161,11 @@ sub gen_rtp_session_keys { my $session_key = prf_n(128, $master_key, xor_112($master_salt, "\0\0\0\0\0\0\0")); my $auth_key = prf_n(160, $master_key, xor_112($master_salt, "\1\0\0\0\0\0\0")); my $session_salt = prf_n(112, $master_key, xor_112($master_salt, "\2\0\0\0\0\0\0")); +# print("RTP keys generated for master key " . unpack("H8", $master_key) . "... and salt " . +# unpack("H8", $master_salt) . "... are: " . +# unpack("H8", $session_key) . "..., " . +# unpack("H*", $auth_key) . ", " . +# unpack("H8", $session_salt) . "...\n"); return ($session_key, $auth_key, $session_salt); } @@ -171,6 +176,11 @@ sub gen_rtcp_session_keys { my $session_key = prf_n(128, $master_key, xor_112($master_salt, "\3\0\0\0\0")); my $auth_key = prf_n(160, $master_key, xor_112($master_salt, "\4\0\0\0\0")); my $session_salt = prf_n(112, $master_key, xor_112($master_salt, "\5\0\0\0\0")); +# print("RTCP keys generated for master key " . unpack("H8", $master_key) . "... and salt " . +# unpack("H8", $master_salt) . "... are: " . +# unpack("H8", $session_key) . "..., " . +# unpack("H*", $auth_key) . ", " . +# unpack("H8", $session_salt) . "...\n"); return ($session_key, $auth_key, $session_salt); } @@ -218,6 +228,7 @@ sub rtp_encrypt { my $pkt = pack("a*na*a*a*", $hdr, $seq, $ts, $ssrc, $enc); my $hmac = hmac_sha1($pkt . pack("N", $roc), $$ctx{$dir}{rtp_session_auth_key}); +# print("HMAC for packet " . unpack("H*", $pkt) . " ROC $roc is " . unpack("H*", $hmac) . "\n"); #$pkt .= pack("N", 1); # mki $pkt .= substr($hmac, 0, 10); @@ -489,7 +500,7 @@ a=rtcp:$cp ! $$tr{sdp_media_params} and $sdp .= $$tr{sdp_media_params}($tcx); } - print("transport is $$tr{name} -> $$tr_o{name}\n"); # XXX +# $i or print("transport is $$tr{name} -> $$tr_o{name}\n"); my $dict = {sdp => $sdp, command => $commands[$i], 'call-id' => $callid, 'from-tag' => $$tags[0],