Changeset 303:909202cb5aeb in mediastreamer2


Ignore:
Timestamp:
Mar 7, 2009 12:22:14 PM (4 years ago)
Author:
aymeric <aymeric@…>
Branch:
default
Message:

add fingerprint support

git-svn-id: svn+ssh://svn.savannah.nongnu.org/linphone/trunk@306 3f6dc0c8-ddfe-455d-9043-3cd528dc4637

File:
1 edited

Legend:

Unmodified
Added
Removed
  • linphone/mediastreamer2/src/ice.c

    r300 r303  
    352352                                                        stunBuildReqSimple( &req, NULL, FALSE, FALSE, 1); 
    353353                                                        req.msgHdr.msgType = (STUN_METHOD_BINDING|STUN_INDICATION); 
     354                                                        req.hasFingerprint = TRUE; 
    354355                                                        len = stunEncodeMessage( &req, buf, len, NULL); 
    355356                                                        sendMessage( media_socket, buf, len, stunServerAddr.addr, stunServerAddr.port ); 
     
    447448        strcpy(response->errorCode.reason, msg); 
    448449        response->errorCode.sizeReason = strlen(msg); 
     450        response->hasFingerprint = TRUE; 
    449451} 
    450452 
     
    586588                */ 
    587589                char hmac[20]; 
    588                 stunCalculateIntegrity_shortterm(hmac, (char*)mp->b_rptr, mp->b_wptr-mp->b_rptr-24, checklist->loc_ice_pwd); 
     590                /* remove length of fingerprint if present */ 
     591                if (msg.hasFingerprint==TRUE) 
     592                { 
     593                        char *lenpos = (char *)mp->b_rptr + sizeof(UInt16); 
     594                        UInt16 newlen = htons(msg.msgHdr.msgLength-8); /* remove fingerprint size */ 
     595                        memcpy(lenpos, &newlen, sizeof(UInt16)); 
     596                        stunCalculateIntegrity_shortterm(hmac, (char*)mp->b_rptr, mp->b_wptr-mp->b_rptr-24-8, checklist->loc_ice_pwd); 
     597                } 
     598                else 
     599                        stunCalculateIntegrity_shortterm(hmac, (char*)mp->b_rptr, mp->b_wptr-mp->b_rptr-24, checklist->loc_ice_pwd); 
    589600                if (memcmp(msg.messageIntegrity.hash, hmac, 20)!=0) 
    590601                { 
     
    597608                                sendMessage( rtp_socket, buf, len, remote_addr.addr, remote_addr.port); 
    598609                        return -1; 
     610                } 
     611                if (msg.hasFingerprint==TRUE) 
     612                { 
     613                        char *lenpos = (char *)mp->b_rptr + sizeof(UInt16); 
     614                        UInt16 newlen = htons(msg.msgHdr.msgLength); /* add back fingerprint size */ 
     615                        memcpy(lenpos, &newlen, sizeof(UInt16)); 
    599616                } 
    600617 
     
    869886                memcpy( resp.softwareName.value, serverName, sizeof(serverName)); 
    870887                resp.softwareName.sizeValue = sizeof(serverName); 
     888 
     889                resp.hasFingerprint = TRUE; 
    871890 
    872891                { 
Note: See TracChangeset for help on using the changeset viewer.