From 7a93660d127f63a2e5ff233b6f73cce9c0ec7944 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 13 Mar 2019 08:51:57 +0100 Subject: [PATCH] Revert to no media encryption as default but force ZRTP when doing calls for chat room security purposes --- .../java/org/linphone/call/CallManager.java | 19 ++++++++++++++++--- .../linphone/chat/ChatMessagesFragment.java | 4 ++-- .../org/linphone/chat/DevicesFragment.java | 4 ++-- app/src/main/res/raw/linphonerc_default | 2 +- 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/linphone/call/CallManager.java b/app/src/main/java/org/linphone/call/CallManager.java index 3b4b532c4..bd38b49ae 100644 --- a/app/src/main/java/org/linphone/call/CallManager.java +++ b/app/src/main/java/org/linphone/call/CallManager.java @@ -25,6 +25,7 @@ import org.linphone.core.Address; import org.linphone.core.Call; import org.linphone.core.CallParams; import org.linphone.core.Core; +import org.linphone.core.MediaEncryption; import org.linphone.core.tools.Log; import org.linphone.utils.FileUtils; import org.linphone.utils.LinphoneUtils; @@ -45,15 +46,19 @@ public class CallManager { return BandwidthManager.getInstance(); } - public void inviteAddress(Address lAddress) { + public void inviteAddress(Address lAddress, boolean forceZRTP) { boolean isLowBandwidthConnection = !LinphoneUtils.isHighBandwidthConnection( LinphoneService.instance().getApplicationContext()); - inviteAddress(lAddress, false, isLowBandwidthConnection); + inviteAddress(lAddress, false, isLowBandwidthConnection, forceZRTP); } - public void inviteAddress(Address lAddress, boolean videoEnabled, boolean lowBandwidth) { + public void inviteAddress(Address lAddress) { + inviteAddress(lAddress, false); + } + + public void inviteAddress(Address lAddress, boolean videoEnabled, boolean lowBandwidth, boolean forceZRTP) { Core lc = LinphoneManager.getLc(); CallParams params = lc.createCallParams(null); @@ -70,6 +75,10 @@ public class CallManager { Log.d("Low bandwidth enabled in call params"); } + if (forceZRTP) { + params.setMediaEncryption(MediaEncryption.ZRTP); + } + String recordFile = FileUtils.getCallRecordingFilename( LinphoneManager.getInstance().getContext(), lAddress); @@ -78,6 +87,10 @@ public class CallManager { lc.inviteAddressWithParams(lAddress, params); } + public void inviteAddress(Address lAddress, boolean videoEnabled, boolean lowBandwidth) { + inviteAddress(lAddress, videoEnabled, lowBandwidth, false); + } + /** * Add video to a currently running voice only call. No re-invite is sent if the current call is * already video or if the bandwidth settings are too low. diff --git a/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java b/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java index 632861436..fc7643a69 100644 --- a/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java +++ b/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java @@ -173,7 +173,7 @@ public class ChatMessagesFragment extends Fragment if (oneParticipantOneDevice) { ParticipantDevice device = mChatRoom.getParticipants()[0].getDevices()[0]; - CallManager.getInstance().inviteAddress(device.getAddress()); + CallManager.getInstance().inviteAddress(device.getAddress(), true); } else { LinphoneActivity.instance() .goToContactDevicesInfos(mLocalSipUri, mRemoteSipUri); @@ -893,7 +893,7 @@ public class ChatMessagesFragment extends Fragment if (oneParticipantOneDevice) { ParticipantDevice device = mChatRoom.getParticipants()[0].getDevices()[0]; - CallManager.getInstance().inviteAddress(device.getAddress()); + CallManager.getInstance().inviteAddress(device.getAddress(), true); } else { LinphoneActivity.instance() .goToContactDevicesInfos(mLocalSipUri, mRemoteSipUri); diff --git a/app/src/main/java/org/linphone/chat/DevicesFragment.java b/app/src/main/java/org/linphone/chat/DevicesFragment.java index 099233730..efc4a4008 100644 --- a/app/src/main/java/org/linphone/chat/DevicesFragment.java +++ b/app/src/main/java/org/linphone/chat/DevicesFragment.java @@ -85,7 +85,7 @@ public class DevicesFragment extends Fragment { long l) { ParticipantDevice device = (ParticipantDevice) mAdapter.getChild(groupPosition, childPosition); - CallManager.getInstance().inviteAddress(device.getAddress()); + CallManager.getInstance().inviteAddress(device.getAddress(), true); return false; } }); @@ -101,7 +101,7 @@ public class DevicesFragment extends Fragment { // in this case groups are childs, so call on click ParticipantDevice device = (ParticipantDevice) mAdapter.getGroup(groupPosition); - CallManager.getInstance().inviteAddress(device.getAddress()); + CallManager.getInstance().inviteAddress(device.getAddress(), true); return true; } return false; diff --git a/app/src/main/res/raw/linphonerc_default b/app/src/main/res/raw/linphonerc_default index 16ff78b0d..a220030d0 100644 --- a/app/src/main/res/raw/linphonerc_default +++ b/app/src/main/res/raw/linphonerc_default @@ -6,7 +6,7 @@ keepalive_period=30000 sip_port=-1 sip_tcp_port=-1 sip_tls_port=-1 -media_encryption=zrtp +media_encryption=none [video] size=vga