aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Schneppe <christian.schneppe@pix-art.de>2019-11-02 17:18:45 +0100
committerChristian Schneppe <christian.schneppe@pix-art.de>2019-11-02 17:18:45 +0100
commit06949b76490736783520d783f0ec889e58707062 (patch)
tree946b6a6d16ba1d03ee2e82dbba79e2a6b8c128e3
parentf81d60f9a84ebe491b9343f4dfbdf0e893100cd3 (diff)
introduce setting to completely disable (OMEMO) encryption
-rw-r--r--src/main/java/de/pixart/messenger/crypto/OmemoSetting.java13
-rw-r--r--src/main/java/de/pixart/messenger/entities/Conversation.java3
-rw-r--r--src/main/java/de/pixart/messenger/ui/SettingsActivity.java3
-rw-r--r--src/main/java/de/pixart/messenger/ui/util/ConversationMenuConfigurator.java2
-rw-r--r--src/main/res/values/arrays.xml2
-rw-r--r--src/main/res/values/strings.xml2
6 files changed, 24 insertions, 1 deletions
diff --git a/src/main/java/de/pixart/messenger/crypto/OmemoSetting.java b/src/main/java/de/pixart/messenger/crypto/OmemoSetting.java
index 19fd6f9c0..973b44545 100644
--- a/src/main/java/de/pixart/messenger/crypto/OmemoSetting.java
+++ b/src/main/java/de/pixart/messenger/crypto/OmemoSetting.java
@@ -39,12 +39,17 @@ import de.pixart.messenger.ui.SettingsActivity;
public class OmemoSetting {
private static boolean always = false;
+ private static boolean never = false;
private static int encryption = Message.ENCRYPTION_AXOLOTL;
public static boolean isAlways() {
return always;
}
+ public static boolean isNever() {
+ return never;
+ }
+
public static int getEncryption() {
return encryption;
}
@@ -54,14 +59,22 @@ public class OmemoSetting {
switch (value) {
case "always":
always = true;
+ never = false;
encryption = Message.ENCRYPTION_AXOLOTL;
break;
case "default_on":
always = false;
+ never = false;
encryption = Message.ENCRYPTION_AXOLOTL;
break;
+ case "always_off":
+ always = false;
+ never = true;
+ encryption = Message.ENCRYPTION_NONE;
+ break;
default:
always = false;
+ never = false;
encryption = Message.ENCRYPTION_NONE;
break;
diff --git a/src/main/java/de/pixart/messenger/entities/Conversation.java b/src/main/java/de/pixart/messenger/entities/Conversation.java
index b20976316..cc0d5525f 100644
--- a/src/main/java/de/pixart/messenger/entities/Conversation.java
+++ b/src/main/java/de/pixart/messenger/entities/Conversation.java
@@ -805,6 +805,9 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl
if (OmemoSetting.isAlways()) {
return suitableForOmemoByDefault(this) ? Message.ENCRYPTION_AXOLOTL : Message.ENCRYPTION_NONE;
}
+ if (OmemoSetting.isNever()) {
+ return Message.ENCRYPTION_NONE;
+ }
final int defaultEncryption;
if (suitableForOmemoByDefault(this)) {
defaultEncryption = OmemoSetting.getEncryption();
diff --git a/src/main/java/de/pixart/messenger/ui/SettingsActivity.java b/src/main/java/de/pixart/messenger/ui/SettingsActivity.java
index e57030a61..419785ecf 100644
--- a/src/main/java/de/pixart/messenger/ui/SettingsActivity.java
+++ b/src/main/java/de/pixart/messenger/ui/SettingsActivity.java
@@ -370,6 +370,9 @@ public class SettingsActivity extends XmppActivity implements
case "default_off":
omemoPreference.setSummary(R.string.pref_omemo_setting_summary_default_off);
break;
+ case "always_off":
+ omemoPreference.setSummary(R.string.pref_omemo_setting_summary_always_off);
+ break;
}
} else {
Log.d(Config.LOGTAG, "unable to find preference named " + OMEMO_SETTING);
diff --git a/src/main/java/de/pixart/messenger/ui/util/ConversationMenuConfigurator.java b/src/main/java/de/pixart/messenger/ui/util/ConversationMenuConfigurator.java
index fd5a5c441..cb4211b1e 100644
--- a/src/main/java/de/pixart/messenger/ui/util/ConversationMenuConfigurator.java
+++ b/src/main/java/de/pixart/messenger/ui/util/ConversationMenuConfigurator.java
@@ -106,7 +106,7 @@ public class ConversationMenuConfigurator {
final int next = conversation.getNextEncryption();
boolean visible;
- if (OmemoSetting.isAlways()) {
+ if (OmemoSetting.isAlways() || OmemoSetting.isNever()) {
visible = false;
} else if (conversation.getMode() == Conversation.MODE_MULTI) {
if (next == Message.ENCRYPTION_NONE && !conversation.isPrivateAndNonAnonymous() && !conversation.getBooleanAttribute(Conversation.ATTRIBUTE_FORMERLY_PRIVATE_NON_ANONYMOUS, false)) {
diff --git a/src/main/res/values/arrays.xml b/src/main/res/values/arrays.xml
index b15e4cea2..fecbff8a4 100644
--- a/src/main/res/values/arrays.xml
+++ b/src/main/res/values/arrays.xml
@@ -105,12 +105,14 @@
<item>always</item>
<item>default_on</item>
<item>default_off</item>
+ <item>always_off</item>
</string-array>
<string-array name="omemo_setting_entries">
<item>@string/always</item>
<item>@string/default_on</item>
<item>@string/default_off</item>
+ <item>@string/always_off</item>
</string-array>
<string-array name="font_size_entry_values">
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index f3a5071a8..83de8be6b 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -496,6 +496,7 @@
<string name="video_high">high (1080p)</string>
<string name="video_original">original (uncompressed)</string>
<string name="always">Always</string>
+ <string name="always_off">Always off</string>
<string name="battery_optimizations_enabled">Battery optimizations enabled</string>
<string name="battery_optimizations_enabled_explained">Your device is doing some heavy battery optimizations on Pix-Art Messenger that might lead to delayed notifications or even message loss.\nIt is recommended to disable those.</string>
<string name="battery_optimizations_enabled_dialog">Your device is doing some heavy battery optimizations on Pix-Art Messenger that might lead to delayed notifications or even message loss.\n\nYou will now be asked to disable those.</string>
@@ -734,6 +735,7 @@
<string name="pref_omemo_setting_summary_always">OMEMO will always be used for one-on-one and private group chats.</string>
<string name="pref_omemo_setting_summary_default_on">OMEMO will be used by default for new conversations.</string>
<string name="pref_omemo_setting_summary_default_off">OMEMO will have to be turned on explicitly for new conversations.</string>
+ <string name="pref_omemo_setting_summary_always_off">OMEMO will never be used.</string>
<string name="default_on">On by default</string>
<string name="default_off">Off by default</string>
<string name="pref_theme_light">Light theme</string>