hudamalmsteen / csipsimple

Automatically exported from code.google.com/p/csipsimple
0 stars 0 forks source link

Add support for ZRTP #262

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
Not a bug - enhancement 

please add ZRTP support this allows for a more secure handling of handset to 
handset key exchanges.   Two linux softphones I know of built on pjsip allow 
SRTP and ZRTP, allow using them at the same time.

other pjsip implementations:
http://www.sflphone.org/
http://twinklephone.com/

Original issue reported on code.google.com by wheresau...@lavabit.com on 5 Oct 2010 at 10:52

GoogleCodeExporter commented 9 years ago
What is the verison of the app you are using? 
Recently latest ZRTP version has been added to support in zrtpcpp/zrtp4pj and 
integrated into csipsimple.

Original comment by r3gis...@gmail.com on 30 Mar 2013 at 7:16

GoogleCodeExporter commented 9 years ago
r2180, r2174, r2170, ...

I tried also with phoner lite on Win8, ZRTP did not work.

Original comment by hvtaifwk...@gmail.com on 31 Mar 2013 at 11:06

GoogleCodeExporter commented 9 years ago
The change I mentioned was introduced in r2169 
(http://code.google.com/p/csipsimple/source/detail?r=2169)
I'm not sure to understand from your post if you tried one before r2169.

Original comment by r3gis...@gmail.com on 31 Mar 2013 at 12:06

GoogleCodeExporter commented 9 years ago
I have used also the Google Play version and IIRC r2165 or r2163

Original comment by hvtaifwk...@gmail.com on 31 Mar 2013 at 12:17

GoogleCodeExporter commented 9 years ago
Ok thanks, so it's not a problem with this last change.

So, I've no idea what could be the root cause. :/

The problem is only with linphone? It seems you already tried with other 
softphones, so I guess yes (maybe you can try with twinkle that was one of the 
first to support zrtp).
In logs what seems to be the root problem is : "RTP decode error: Invalid RTP 
version (PJMEDIA_RTP_EINVER) [err:220122]". It could come if csipsimple is 
configured to enable SRTP(with key exch on sdp) and ZRTP at the same time. But 
I guess you take care to check that already. So there is maybe something on 
linphone side that put pjsip in a mode that bypass zrtp transport adapter...

Original comment by r3gis...@gmail.com on 31 Mar 2013 at 12:33

GoogleCodeExporter commented 9 years ago
I try with any softphone I can get to compile/work on Linux.

Now I tried with Twinkle, when it answered call from CSipSimple, ZRTP did not 
get enabled and it crashed with segmentation fault when I hanged up.  And it 
did not manage to make a call to CSipSimple (Send Internal: 404).

SRTP is disabled in CS.

With what software have you managed to get ZRTP working (calling both ways) 
with CS?

Original comment by hvtaifwk...@gmail.com on 31 Mar 2013 at 1:35

GoogleCodeExporter commented 9 years ago
I do my unit tests with twinkle and no problem so far (I just did a new one 
just now with css calling and with twinkle calling and no problems).

So I guess there is something else.
Are you trying peer to peer calls? Or using a sip server in the middle? Maybe I 
can have a look to your full logs (see HowToCollectLogs). There is maybe 
something that will ring a bell. (For example if SIP ACK never arrives maybe 
there is some network topology vs configuration problem... for example if stun 
is enabled but trying to call on local network only).

Original comment by r3gis...@gmail.com on 31 Mar 2013 at 2:16

GoogleCodeExporter commented 9 years ago
With sflphone ZRTP works both ways, but nothing is heard from the CS speaker.

Then CS crashed with segfault

17:35:56.425  strm0x134ddb4  RTP status: badpt=0, badssrc=0, dup=0, 
outorder=-1, probation=-1, restart=0
17:35:56.445   Master/sound !Underflow, buf_cnt=0, will generate 1 frame
17:35:56.446   Master/sound  Underflow, buf_cnt=0, will generate 1 frame

[dmesg]
<3>[03-31 14:35:56.460] [audio_pcm_in.c:audpcm_in_get_dsp_frames] Error! not 
able to keep up the read

17:35:56.468   Master/sound  Underflow, buf_cnt=0, will generate 1 frame
17:35:56.474  strm0x134ddb4 !RTP status: badpt=0, badssrc=0, dup=0, 
outorder=-1, probation=-1, restart=0
17:35:56.474  strm0x134ddb4  RTP status: badpt=0, badssrc=0, dup=0, 
outorder=-1, probation=-1, restart=0
17:35:56.474  strm0x134ddb4  RTP status: badpt=0, badssrc=0, dup=0, 
outorder=-1, probation=-1, restart=0
17:35:56.478   Master/sound !456 samples reduced, buf_cnt=2104
17:35:56.478   Master/sound  326 samples reduced, buf_cnt=2098
17:35:56.478   Master/sound  354 samples reduced, buf_cnt=2064
...
17:35:56.654  strm0x134ddb4  RTP status: badpt=0, badssrc=0, dup=0, 
outorder=-1, probation=-1, restart=0
17:35:56.664  strm0x134ddb4  RTP status: badpt=0, badssrc=0, dup=0, 
outorder=-1, probation=-1, restart=0
17:35:

log ended here and CS started new log file..

There's always some SIP server in the way, yeah.  I'd prefer not to.
I have tried quite a many, iptel.org seems to work most reliably.

Original comment by hvtaifwk...@gmail.com on 31 Mar 2013 at 3:36

GoogleCodeExporter commented 9 years ago
I would be very very interested by the logs of the crash (*Using the 
HowToCollectLogs instructions* : it captures more than the pjsip log file). If 
you can send me the crash logs by mail it will be very valuable for me because 
the crash logs indicates exactly where in the native stack it crashes.

If you want to test without sip server in the middle it's pretty easy if your 
pc and your smartphone are on same network. (That's how I do many of my tests 
when I want to sort out all NAT problems)
So to test that :
In csipsimple create a "Local" account.
There is probably the equivalent on other desktop softphone (on twinkle just 
create an account with as domain the lan ip of your pc).
Then you can call from one device to the other by dialing sip:user@192.168.x.x 
(user doesn't matter really here, it can also be omitted depending on the sip 
softphone and 192.168.x.x is the ip of the other side).

Original comment by r3gis...@gmail.com on 31 Mar 2013 at 3:57

GoogleCodeExporter commented 9 years ago
I was wondering if the experimental video is also encrypted with zrtp? I guess 
not cause only one SAS is shown. Are there any plans to encrypt and show both?

Original comment by felix.kn...@googlemail.com on 3 Nov 2013 at 11:12

GoogleCodeExporter commented 9 years ago
No experimental video feature is not yet encrypted with ZRTP. There is some 
work to do in order to use multistream feature of lib ZRTPCpp.

Original comment by r3gis...@gmail.com on 4 Nov 2013 at 8:34