r2745 - in trunk/libminisip/source: mediahandler zrtp

werner at minisip.org werner at minisip.org
Tue Sep 5 09:39:07 CEST 2006


Author: werner
Date: 2006-09-05 09:39:06 +0200 (Tue, 05 Sep 2006)
New Revision: 2745

Modified:
   trunk/libminisip/source/mediahandler/MediaStream.cxx
   trunk/libminisip/source/zrtp/ZrtpHostBridgeMinisip.cxx
Log:
Fix problems in ZRTP handling

Modified: trunk/libminisip/source/mediahandler/MediaStream.cxx
===================================================================
--- trunk/libminisip/source/mediahandler/MediaStream.cxx	2006-09-04 10:45:03 UTC (rev 2744)
+++ trunk/libminisip/source/mediahandler/MediaStream.cxx	2006-09-05 07:39:06 UTC (rev 2745)
@@ -340,8 +340,8 @@
 	packetSsrc = packet->getHeader().getSSRC();
 	seq_no = packet->getHeader().getSeqNo();
 
-#ifdef ZRT_SUPPORT
-        if (zrtpBridge && zrtpBridge->isZrtpPacket(packet) {
+#ifdef ZRTP_SUPPORT
+        if (zrtpBridge && packet->getHeader().getExtension() && zrtpBridge->isZrtpPacket(packet)) {
             packet->checkZrtpChecksum(false);
         }
         MRef<CryptoContext *> pcc = getCryptoContext(packetSsrc, seq_no);
@@ -350,17 +350,17 @@
         // state then create a real CryptoContext for this SSRC. Assumption:
         // every SSRC stream sent via this connection is secured _and_ uses
         // the same crypto parameters.
-	if (zrtpBridge && zrtpBridge->isSecureState() &&
+        if (zrtpBridge && zrtpBridge->getSsrcSender() != 0 &&
+                    zrtpBridge->isSecureState() &&
                    (pcc->getEalg() == MIKEY_SRTP_EALG_NULL)) {
             pcc = zrtpBridge->newCryptoContextForRecvSSRC(packetSsrc, 0, seq_no, 0L);
         }
         if( packet->unprotect(pcc)) { // Authentication or replay protection failed
             return;
         }
-        if (zrtpBridge && packet->getHeader()->getExtension() &&
+        if (zrtpBridge && packet->getHeader().getExtension() &&
             (zrtpBridge->processPacket(packet) == 0)) {
                 return;
-            }
         }
 #else
 	if( packet->unprotect( getCryptoContext( packetSsrc, seq_no ) )){

Modified: trunk/libminisip/source/zrtp/ZrtpHostBridgeMinisip.cxx
===================================================================
--- trunk/libminisip/source/zrtp/ZrtpHostBridgeMinisip.cxx	2006-09-04 10:45:03 UTC (rev 2744)
+++ trunk/libminisip/source/zrtp/ZrtpHostBridgeMinisip.cxx	2006-09-05 07:39:06 UTC (rev 2745)
@@ -281,7 +281,7 @@
     MRef<CryptoContext *> pcc;
 
     pcc = recvCryptoContext->newCryptoContextForSSRC(ssrc, roc, seq, keyDerivRate);
-    pcc->derive_srtp_keys(recvZrtpSeqNo);
+    pcc->derive_srtp_keys(seq);
     rStream->setKeyAgreementZrtp(pcc);
     return pcc;
 }



More information about the Minisip-devel mailing list