only offer plain and omemo encryption when x509 verification is enabled

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/entities/Conversation.java   | 11 
src/main/java/eu/siacs/conversations/ui/ConversationActivity.java |  5 
2 files changed, 13 insertions(+), 3 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/entities/Conversation.java 🔗

@@ -20,6 +20,7 @@ import java.util.Iterator;
 import java.util.List;
 
 import eu.siacs.conversations.Config;
+import eu.siacs.conversations.crypto.axolotl.AxolotlService;
 import eu.siacs.conversations.xmpp.chatstate.ChatState;
 import eu.siacs.conversations.xmpp.jid.InvalidJidException;
 import eu.siacs.conversations.xmpp.jid.Jid;
@@ -607,6 +608,14 @@ public class Conversation extends AbstractEntity implements Blockable {
 	}
 
 	public int getNextEncryption() {
+		final AxolotlService axolotlService = getAccount().getAxolotlService();
+		if (Config.X509_VERIFICATION && mode == MODE_SINGLE) {
+			if (axolotlService != null && axolotlService.isContactAxolotlCapable(getContact())) {
+				return Message.ENCRYPTION_AXOLOTL;
+			} else {
+				return Message.ENCRYPTION_NONE;
+			}
+		}
 		int next = this.getIntAttribute(ATTRIBUTE_NEXT_ENCRYPTION, -1);
 		if (next == -1) {
 			int outgoing = this.getMostRecentlyUsedOutgoingEncryption();
@@ -617,7 +626,7 @@ public class Conversation extends AbstractEntity implements Blockable {
 			}
 		}
 		if (Config.FORCE_ENCRYPTION && mode == MODE_SINGLE && next <= 0) {
-			if (getAccount().getAxolotlService().isContactAxolotlCapable(getContact())) {
+			if (axolotlService != null && axolotlService.isContactAxolotlCapable(getContact())) {
 				return Message.ENCRYPTION_AXOLOTL;
 			} else {
 				return Message.ENCRYPTION_OTR;

src/main/java/eu/siacs/conversations/ui/ConversationActivity.java 🔗

@@ -414,7 +414,7 @@ public class ConversationActivity extends XmppActivity
 					menuContactDetails.setVisible(false);
 					menuAttach.setVisible(getSelectedConversation().getAccount().httpUploadAvailable() && getSelectedConversation().getMucOptions().participating());
 					menuInviteContact.setVisible(getSelectedConversation().getMucOptions().canInvite());
-					menuSecure.setVisible(!Config.HIDE_PGP_IN_UI); //if pgp is hidden conferences have no choice of encryption
+					menuSecure.setVisible(!Config.HIDE_PGP_IN_UI && !Config.X509_VERIFICATION); //if pgp is hidden conferences have no choice of encryption
 				} else {
 					menuMucDetails.setVisible(false);
 				}
@@ -868,8 +868,9 @@ public class ConversationActivity extends XmppActivity
 			MenuItem none = popup.getMenu().findItem(R.id.encryption_choice_none);
 			MenuItem pgp = popup.getMenu().findItem(R.id.encryption_choice_pgp);
 			MenuItem axolotl = popup.getMenu().findItem(R.id.encryption_choice_axolotl);
-			pgp.setVisible(!Config.HIDE_PGP_IN_UI);
+			pgp.setVisible(!Config.HIDE_PGP_IN_UI && !Config.X509_VERIFICATION);
 			none.setVisible(!Config.FORCE_ENCRYPTION);
+			otr.setVisible(!Config.X509_VERIFICATION);
 			if (conversation.getMode() == Conversation.MODE_MULTI) {
 				otr.setVisible(false);
 				axolotl.setVisible(false);