|
|
|
|
@ -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],
|
|
|
|
|
|