Skip to content

Commit ed6eca8

Browse files
authored
Merge pull request #4431 from deltachat/adb/add-enforce-e2ee
add "Enforce e2ee" switch
2 parents 889c9aa + 52f63b2 commit ed6eca8

5 files changed

Lines changed: 27 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
* Allow to open links in messages via actions in TalkBack menu
2020
* Allow to open map if user clicks "Location streaming enabled" system message
2121
* Allow to disable incoming calls notifications
22+
* Add an option to process unencrypted messages; by default, only encrypted messages can be sent or received
2223
* Fix: do not accidentally set draft in chats that don't allow sending messages
2324
* Fix swipe navigation between tabs in RTL languages
2425
* Remove legacy option

src/main/java/org/thoughtcrime/securesms/connect/DcHelper.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ public class DcHelper {
5555
public static final String CONFIG_PRIVATE_TAG = "private_tag";
5656
public static final String CONFIG_STATS_SENDING = "stats_sending";
5757
public static final String CONFIG_STATS_ID = "stats_id";
58+
public static final String CONFIG_FORCE_ENCRYPTION = "force_encryption";
5859

5960
public static DcContext getContext(@NonNull Context context) {
6061
return ApplicationContext.getInstance(context).getDcContext();

src/main/java/org/thoughtcrime/securesms/relay/EditRelayActivity.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import androidx.annotation.NonNull;
2424
import androidx.annotation.Nullable;
2525
import androidx.appcompat.app.ActionBar;
26+
import androidx.appcompat.widget.SwitchCompat;
2627
import androidx.constraintlayout.widget.Group;
2728
import chat.delta.rpc.Rpc;
2829
import chat.delta.rpc.RpcException;
@@ -75,6 +76,7 @@ private enum VerificationType {
7576
Spinner imapSecurity;
7677
Spinner smtpSecurity;
7778
Spinner certCheck;
79+
private SwitchCompat enforceE2eeSwitch;
7880

7981
Rpc rpc;
8082
int accId;
@@ -110,6 +112,7 @@ public void onCreate(Bundle bundle) {
110112
imapSecurity = findViewById(R.id.imap_security);
111113
smtpSecurity = findViewById(R.id.smtp_security);
112114
certCheck = findViewById(R.id.cert_check);
115+
enforceE2eeSwitch = findViewById(R.id.enforce_e2ee_switch);
113116

114117
String addr = getIntent().getStringExtra(EXTRA_ADDR);
115118
EnteredLoginParam config = null;
@@ -173,6 +176,10 @@ public void afterTextChanged(Editable s) {
173176
boolean expandAdvanced = false;
174177
int intVal;
175178

179+
intVal = getContext(this).getConfigInt(DcHelper.CONFIG_FORCE_ENCRYPTION);
180+
enforceE2eeSwitch.setChecked(intVal == 1);
181+
expandAdvanced = expandAdvanced || intVal == 0;
182+
176183
if (config != null) { // configured
177184
emailInput.setText(config.addr);
178185
if (!TextUtils.isEmpty(config.addr)) {
@@ -500,9 +507,12 @@ private void setupConfig() {
500507
param.smtpPassword = getParam(R.id.smtp_password_text, false);
501508
param.certificateChecks = certificateChecksFromInt(certCheck.getSelectedItemPosition());
502509

510+
final String forceEncryption = enforceE2eeSwitch.isChecked() ? "1" : "0";
511+
503512
new Thread(
504513
() -> {
505514
try {
515+
rpc.setConfig(accId, DcHelper.CONFIG_FORCE_ENCRYPTION, forceEncryption);
506516
rpc.addOrUpdateTransport(accId, param);
507517
DcHelper.getEventCenter(this).endCaptureNextError();
508518
progressDialog.dismiss();

src/main/res/layout/activity_edittransport.xml

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@
129129
android:visibility="gone"
130130
tools:visibility="visible"
131131
app:constraint_referenced_ids="inbox, imap_login, imap_server, imap_port, imap_security_label, imap_security, outbox_view_spacer_top,
132-
outbox, smtp_login, smtp_password, smtp_server, smtp_port, smtp_security_label, smtp_security, cert_check_label, cert_check, view_log_button" />
132+
outbox, smtp_login, smtp_password, smtp_server, smtp_port, smtp_security_label, smtp_security, cert_check_label, cert_check, view_log_button, enforce_e2ee_switch" />
133133

134134
<ImageView
135135
android:id="@+id/advanced_icon"
@@ -362,6 +362,17 @@
362362
app:layout_constraintStart_toStartOf="@id/guideline_root_start"
363363
app:layout_constraintTop_toBottomOf="@id/cert_check_label" />
364364

365+
<androidx.appcompat.widget.SwitchCompat
366+
android:id="@+id/enforce_e2ee_switch"
367+
android:layout_width="0dp"
368+
android:layout_height="wrap_content"
369+
android:paddingTop="16dp"
370+
android:paddingBottom="16dp"
371+
android:text="@string/enforce_e2ee"
372+
app:layout_constraintEnd_toEndOf="@id/guideline_root_end"
373+
app:layout_constraintStart_toStartOf="@id/guideline_root_start"
374+
app:layout_constraintTop_toBottomOf="@id/cert_check" />
375+
365376
<TextView
366377
android:id="@+id/view_log_button"
367378
android:layout_width="0dp"
@@ -375,7 +386,7 @@
375386
android:paddingBottom="32dp"
376387
app:layout_constraintEnd_toEndOf="@id/guideline_root_end"
377388
app:layout_constraintStart_toStartOf="@id/guideline_root_start"
378-
app:layout_constraintTop_toBottomOf="@id/cert_check" />
389+
app:layout_constraintTop_toBottomOf="@id/enforce_e2ee_switch" />
379390

380391
</androidx.constraintlayout.widget.ConstraintLayout>
381392

src/main/res/values/strings.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -673,7 +673,7 @@
673673
<string name="welcome_chat_over_email">Secure Decentralized Chat</string>
674674
<string name="scan_invitation_code">Scan Invitation Code</string>
675675
<string name="login_title">Log In</string>
676-
<string name="login_advanced_hint">This login is for advanced users:\n\n• Do not use an address you\'re using in another app.\n\n• Classic email server allow chats without end-to-end encryption marked by a mail icon.</string>
676+
<string name="login_advanced_hint">This login is for advanced users.\n\nDo not use an address you\'re using in another app.</string>
677677
<string name="login_inbox">Inbox</string>
678678
<string name="login_imap_login">IMAP Login Name</string>
679679
<string name="login_imap_server">IMAP Server</string>
@@ -708,6 +708,7 @@
708708
<string name="used_for_sending">Used for sending</string>
709709
<string name="hide_from_contacts">Hide from Contacts</string>
710710
<string name="hidden_from_contacts">Hidden from contacts</string>
711+
<string name="enforce_e2ee">Enforce Encryption for All Relays</string>
711712
<!-- Hint for the list of relays -->
712713
<string name="transport_list_hint">Messages are received on all relays.\n\n⚠️ If you change anything here, make sure all your devices run at least version 2.47.0. Otherwise older devices may miss messages.</string>
713714
<!-- shown if a QR code was scanned that can be used as a relay -->

0 commit comments

Comments
 (0)