Re: ZRTP on Android
Eli Burke <eburke <at> edge-net.net>
2013-06-18 12:30:40 GMT
I encountered similar behavior earlier this year. By any chance are you using Freeswitch in proxy-media
mode? Freeswitch is hard-coded to look for the zrtp-hello-hash in order to enable passing ZRTP variables
between two call legs. If the client does not support sending a zrtp-hello-hash, it can never establish a
secure call that has Freeswitch in the middle. You may be able to verify this by trying ZRTP on a one-legged
call to an server-side extension that echoes back or plays music, or by switching your config to
At any rate, stock Linphone does not implement the optional zrtp-hello-hash extension. I submitted a patch:
and it was successfully used by someone to modify the Android client:
There is another patch that fixes a sequence number handling issue that COULD cause ZRTP compatibility
problems with non-Linphone clients:
I should add that my patches have not been integrated back into Linphone; the developers reported that it
caused a crash when enabling video after establishing an audio call. We don't use video so I have not seen
this. But in my client the audio becomes corrupted when pausing and resuming a call. The common element is
that both scenarios cause renegotiation of the media streams. I suspect that the key is either not being
updated, or is zeroed and never re-set. It's on my short-list to investigate further, but if you have any
C/C++ development experience I encourage you to have a look. The patches are pretty short and simple, and
indicate the exact places in the code where ZRTP is used.
On Jun 18, 2013, at 3:56 AM, linphone-users-request <at> nongnu.org wrote:
> Date: Tue, 18 Jun 2013 09:56:28 +0200
> From: Daniel Muller <verliba <at> gmail.com>
> To: linphone-users <linphone-users <at> nongnu.org>
> Subject: Re: [Linphone-users] ZRTP on Android
> <CA+N=EFSDHSEaO1qVC8EFKuKz=Lu_QdqTykNKadkpg2AoX43MzA <at> mail.gmail.com>
> Content-Type: text/plain; charset="iso-8859-1"
> Thanks I will keep doing only the make now on..
> Yes, the peer is a twinkle on which I made ZRTP calls successfully before
> with a windows build of linphone.
> I will try this evening or some of the next ones with another linphone,
> just in case.. But, well, if twinkle worked with one, it could work with
> Daniel Muller, Prague, CZ
> On Tue, Jun 18, 2013 at 9:07 AM, Guillaume Beraudo <
> guillaume.beraudo <at> linphone.org> wrote:
>> First, note that you should do "make" to build the application and not
>> run prepare_sources.sh yourself anymore.
>> What you see on the traces is that your phone tries to initiate a ZRTP
>> However it gets no answer for the peer and thus ZRTP fails.
>> Do you have ZRTP enabled on peer?
>> On Mon, Jun 17, 2013 at 11:10:53PM +0200, Daniel Muller wrote:
>>> Ok, now with r8d
>>> I ran make BUILD_GPLV3_ZRTP=1 BUILD_AMRWB=1
>>> and ./prepare_sources.h with same params
>>> also run eclipse that has bult the java projects
>>> tun debugger
>>> configured media_encryption to be zrtp and debug on
>>> and this is ZRT filtered log cat..
>>> 06-17 21:06:30.998: I/Linphone(839): Initialized ZRTP context
>>> 06-17 21:06:31.258: I/Linphone(839): Starting ZRTP engine
>>> 06-17 21:06:31.258: I/Linphone(839): sent ZRTP Hello 59827
>>> 06-17 21:06:31.629: I/Linphone(839): sent ZRTP Hello 59828
>>> 06-17 21:06:31.868: I/Linphone(839): sent ZRTP Hello 59829
>>> 06-17 21:06:32.138: I/Linphone(839): sent ZRTP Hello 59830
>>> 06-17 21:06:32.609: I/Linphone(839): sent ZRTP Hello 59831
>>> 06-17 21:06:33.248: I/Linphone(839): sent ZRTP Hello 59832
>>> 06-17 21:06:34.038: I/Linphone(839): sent ZRTP Hello 59833
>>> 06-17 21:06:34.569: I/Linphone(839): sent ZRTP Hello 59834
>>> 06-17 21:06:34.769: I/Linphone(839): sent ZRTP Hello 59835
>>> 06-17 21:06:34.968: I/Linphone(839): sent ZRTP Hello 59836
>>> 06-17 21:06:35.178: I/Linphone(839): sent ZRTP Hello 59837
>>> 06-17 21:06:35.348: I/Linphone(839): Stopping ZRTP context
>>> 06-17 21:06:35.358: I/Linphone(839): Destroying ZRTP wrapper
>>> 06-17 21:06:35.358: I/Linphone(839): Destroying ORTP-ZRTP mutex
>>> 06-17 21:06:35.358: I/Linphone(839): ORTP-ZRTP context destroyed
>>> Obviously the ZRTP did not hold too long.
>>> What might be wrong now?
>>> Do you think my libs are built well already?
>>> Daniel Muller, Prague, CZ