From 3fd35a041e40c27d4002866933cb02e7d892b1a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20H=C3=B6rist?= Date: Sun, 16 Apr 2017 17:16:41 +0200 Subject: [PATCH] Remove PGP encryption/decryption from core --- data/gui/contact_context_menu.ui | 8 -- src/chat_control.py | 115 ++---------------- src/command_system/implementation/standard.py | 5 - src/common/config.py | 1 - src/common/connection.py | 83 ++----------- src/common/connection_handlers.py | 65 +--------- src/common/connection_handlers_events.py | 54 ++++---- src/dialogs.py | 58 --------- src/groupchat_control.py | 5 +- src/gui_menu_builder.py | 18 +-- 10 files changed, 52 insertions(+), 360 deletions(-) diff --git a/data/gui/contact_context_menu.ui b/data/gui/contact_context_menu.ui index 85f1c0387..0ef415bea 100644 --- a/data/gui/contact_context_menu.ui +++ b/data/gui/contact_context_menu.ui @@ -51,14 +51,6 @@ False - - - True - False - Toggle Open_PGP Encryption - True - - True diff --git a/src/chat_control.py b/src/chat_control.py index 0fb0706b2..07ff8adba 100644 --- a/src/chat_control.py +++ b/src/chat_control.py @@ -90,7 +90,6 @@ class ChatControl(ChatControlBase): ChatControlBase.__init__(self, self.TYPE_ID, parent_win, 'chat_control', contact, acct, resource) - self.gpg_is_active = False self.last_recv_message_id = None self.last_recv_message_marks = None self.last_message_timestamp = None @@ -282,25 +281,6 @@ class ChatControl(ChatControlBase): # Enable encryption if needed self.no_autonegotiation = False e2e_is_active = self.session and self.session.enable_encryption - gpg_pref = gajim.config.get_per('contacts', contact.jid, 'gpg_enabled') - - # try GPG first - if not e2e_is_active and gpg_pref and \ - gajim.config.get_per('accounts', self.account, 'keyid') and \ - gajim.connections[self.account].USE_GPG: - self.gpg_is_active = True - gajim.encrypted_chats[self.account].append(contact.jid) - msg = _('OpenPGP encryption enabled') - ChatControlBase.print_conversation_line(self, msg, 'status', '', - None) - - if self.session: - self.session.loggable = gajim.config.get_per('accounts', - self.account, 'log_encrypted_sessions') - # GPG is always authenticated as we use GPG's WoT - self._show_lock_image(self.gpg_is_active, 'OpenPGP', - self.gpg_is_active, self.session and self.session.is_loggable(), - True) self.update_ui() self.set_lock_image() @@ -350,7 +330,8 @@ class ChatControl(ChatControlBase): send_button = self.xml.get_object('send_button') send_button.set_sensitive(True) # Formatting - if self.contact.supports(NS_XHTML_IM) and not self.gpg_is_active: + # TODO: find out what encryption allows for xhtml and which not + if self.contact.supports(NS_XHTML_IM): self._formattings_button.set_sensitive(True) self._formattings_button.set_tooltip_text(_( 'Show a list of formattings')) @@ -862,57 +843,6 @@ class ChatControl(ChatControlBase): def on_video_button_toggled(self, widget): self.on_jingle_button_toggled(widget, 'video') - def _toggle_gpg(self): - if not self.gpg_is_active and not self.contact.keyID: - dialogs.ErrorDialog(_('No OpenPGP key assigned'), - _('No OpenPGP key is assigned to this contact. So you cannot ' - 'encrypt messages with OpenPGP.')) - return - ec = gajim.encrypted_chats[self.account] - if self.gpg_is_active: - # Disable encryption - ec.remove(self.contact.jid) - self.gpg_is_active = False - loggable = False - msg = _('OpenPGP encryption disabled') - ChatControlBase.print_conversation_line(self, msg, 'status', '', - None) - if self.session: - self.session.loggable = True - - else: - # Enable encryption - ec.append(self.contact.jid) - self.gpg_is_active = True - msg = _('OpenPGP encryption enabled') - ChatControlBase.print_conversation_line(self, msg, 'status', '', - None) - - loggable = gajim.config.get_per('accounts', self.account, - 'log_encrypted_sessions') - - if self.session: - self.session.loggable = loggable - - loggable = self.session.is_loggable() - else: - loggable = loggable and gajim.config.should_log(self.account, - self.contact.jid) - - if loggable: - msg = _('Session WILL be logged') - else: - msg = _('Session WILL NOT be logged') - - ChatControlBase.print_conversation_line(self, msg, - 'status', '', None) - - gajim.config.set_per('contacts', self.contact.jid, - 'gpg_enabled', self.gpg_is_active) - - self._show_lock_image(self.gpg_is_active, 'OpenPGP', - self.gpg_is_active, loggable, True) - def set_lock_image(self): visible = self.encryption != 'disabled' loggable = self.session and self.session.is_loggable() @@ -963,9 +893,7 @@ class ChatControl(ChatControlBase): def _on_authentication_button_clicked(self, widget): gajim.plugin_manager.gui_extension_point( 'encryption_dialog' + self.encryption, self) - if self.gpg_is_active: - dialogs.GPGInfoWindow(self, self.parent_win.window) - elif self.session and self.session.enable_encryption: + if self.session and self.session.enable_encryption: dialogs.ESessionInfoWindow(self.session, self.parent_win.window) def send_message(self, message, keyID='', chatstate=None, xhtml=None, @@ -989,12 +917,11 @@ class ChatControl(ChatControlBase): encrypted = bool(self.session) and self.session.enable_encryption - keyID = '' - if self.gpg_is_active: - keyID = contact.keyID - encrypted = True - if not keyID: - keyID = 'UNKNOWN' + keyID = contact.keyID + encrypted = True + + chatstates_on = gajim.config.get('outgoing_chat_state_notifications') != \ + 'disabled' chatstate_to_send = None if contact is not None: @@ -1123,20 +1050,6 @@ class ChatControl(ChatControlBase): msg = _('The following message was NOT encrypted') ChatControlBase.print_conversation_line(self, msg, 'status', '', tim) - else: - # GPG encryption - if encrypted and not self.gpg_is_active: - msg = _('The following message was encrypted') - ChatControlBase.print_conversation_line(self, msg, 'status', - '', tim) - # turn on OpenPGP if this was in fact a XEP-0027 encrypted - # message - if encrypted == 'xep27': - self._toggle_gpg() - elif not encrypted and self.gpg_is_active: - msg = _('The following message was NOT encrypted') - ChatControlBase.print_conversation_line(self, msg, 'status', - '', tim) if not frm: kind = 'incoming' name = contact.get_shown_name() @@ -1146,7 +1059,7 @@ class ChatControl(ChatControlBase): else: kind = 'outgoing' name = self.get_our_nick() - if not xhtml and not (encrypted and self.gpg_is_active) and \ + if not xhtml and not encrypted and \ gajim.config.get('rst_formatting_outgoing_messages'): from common.rst_xhtml_generator import create_xhtml xhtml = create_xhtml(text) @@ -1223,9 +1136,8 @@ class ChatControl(ChatControlBase): def prepare_context_menu(self, hide_buttonbar_items=False): """ Set compact view menuitem active state sets active and sensitivity state - for toggle_gpg_menuitem sets sensitivity for history_menuitem (False for - tranasports) and file_transfer_menuitem and hide()/show() for - add_to_roster_menuitem + for history_menuitem (False for tranasports) and file_transfer_menuitem + and hide()/show() for add_to_roster_menuitem """ if gajim.jid_is_transport(self.contact.jid): menu = gui_menu_builder.get_transport_menu(self.contact, @@ -1520,7 +1432,7 @@ class ChatControl(ChatControlBase): 'enable_esessions') and gajim.config.get_per('accounts', self.account, 'autonegotiate_esessions') and gajim.config.get_per( 'contacts', self.contact.jid, 'autonegotiate_esessions') - want_e2e = not e2e_is_active and not self.gpg_is_active \ + want_e2e = not e2e_is_active and self.encryption == '' \ and e2e_pref if want_e2e and not self.no_autonegotiation \ @@ -1717,9 +1629,6 @@ class ChatControl(ChatControlBase): def _on_contact_information_menuitem_activate(self, widget): gajim.interface.roster.on_info(widget, self.contact, self.account) - def _on_toggle_gpg_menuitem_activate(self, widget): - self._toggle_gpg() - def _on_convert_to_gc_menuitem_activate(self, widget): """ User wants to invite some friends to chat diff --git a/src/command_system/implementation/standard.py b/src/command_system/implementation/standard.py index f7e1daa91..4caba25d7 100644 --- a/src/command_system/implementation/standard.py +++ b/src/command_system/implementation/standard.py @@ -179,11 +179,6 @@ class StandardCommonChatCommands(CommandContainer): def clear(self): self.conv_textview.clear() - @command - @doc(_("Toggle the OpenPGP encryption")) - def gpg(self): - self._toggle_gpg() - @command @doc(_("Send a ping to the contact")) def ping(self): diff --git a/src/common/config.py b/src/common/config.py index f0c1aecb0..b1c096d8a 100644 --- a/src/common/config.py +++ b/src/common/config.py @@ -480,7 +480,6 @@ class Config: 'state_muc_directed_msg_color': [ opt_color, 'red2' ], }, {}), 'contacts': ({ - 'gpg_enabled': [ opt_bool, False, _('Is OpenPGP enabled for this contact?')], 'encryption': [ opt_str, '', _('Encryption used for this contact.')], 'autonegotiate_esessions': [opt_bool, False, _('Should Gajim automatically start an encrypted session with this contact when possible?')], 'speller_language': [ opt_str, '', _('Language for which we want to check misspelled words')], diff --git a/src/common/connection.py b/src/common/connection.py index 36104e34a..e9f1ab2bb 100644 --- a/src/common/connection.py +++ b/src/common/connection.py @@ -296,65 +296,9 @@ class CommonConnection: if not obj.message and obj.chatstate is None and obj.form_node is None: return - if obj.keyID and self.USE_GPG: - self._encrypt_message(obj) - return - self._build_message_stanza(obj) - def _encrypt_message(self, obj): - obj.xhtml = None - if obj.keyID == 'UNKNOWN': - error = _('Neither the remote presence is signed, nor a key was ' - 'assigned.') - elif obj.keyID.endswith('MISMATCH'): - error = _('The contact\'s key (%s) does not match the key assigned ' - 'in Gajim.' % obj.keyID[:8]) - else: - myKeyID = gajim.config.get_per('accounts', self.name, 'keyid') - key_list = [obj.keyID, myKeyID] - def _on_encrypted(output): - msgenc, error = output - if error.startswith('NOT_TRUSTED'): - def _on_always_trust(answer): - if answer: - gajim.thread_interface( - self.gpg.encrypt, [obj.message, key_list, True], - _on_encrypted, []) - else: - self._finished_encrypt(obj, msgenc=msgenc, - error=error) - gajim.nec.push_incoming_event(GPGTrustKeyEvent(None, - conn=self, keyID=error.split(' ')[-1], - callback=_on_always_trust)) - else: - self._finished_encrypt(obj, msgenc=msgenc, error=error) - gajim.thread_interface( - self.gpg.encrypt, [obj.message, key_list, False], - _on_encrypted, []) - return - self._finished_encrypt(obj, error=error) - - def _finished_encrypt(self, obj, msgenc=None, error=None): - if error: - gajim.nec.push_incoming_event( - MessageNotSentEvent( - None, conn=self, jid=obj.jid, message=obj.message, - error=error, time_=time.time(), session=obj.session)) - return - self._build_message_stanza(obj, msgenc) - - def _build_message_stanza(self, obj, msgenc=None): - if msgenc: - msgtxt = '[This message is *encrypted* (See :XEP:`27`]' - lang = os.getenv('LANG') - if lang is not None and not lang.startswith('en'): - # we're not english: one in locale and one en - msgtxt = _('[This message is *encrypted* (See :XEP:`27`]') + \ - ' (' + msgtxt + ')' - else: - msgtxt = obj.message - + def _build_message_stanza(self, obj): if obj.jid == gajim.get_jid_from_account(self.name): fjid = obj.jid else: @@ -368,17 +312,10 @@ class CommonConnection: namespace=nbxmpp.NS_CORRECT) id2 = self.connection.getAnID() obj.correction_msg.setID(id2) - obj.correction_msg.setBody(msgtxt) + obj.correction_msg.setBody(obj.message) if obj.xhtml: obj.correction_msg.setXHTML(obj.xhtml) - if msgenc: - encrypted_tag = obj.correction_msg.getTag( - 'x', namespace=nbxmpp.NS_ENCRYPTED) - obj.correction_msg.delChild(encrypted_tag) - obj.correction_msg.setTag( - 'x', namespace=nbxmpp.NS_ENCRYPTED).setData(msgenc) - if obj.session: obj.session.last_send = time.time() @@ -390,22 +327,19 @@ class CommonConnection: return if obj.type_ == 'chat': - msg_iq = nbxmpp.Message(body=msgtxt, typ=obj.type_, + msg_iq = nbxmpp.Message(body=obj.message, typ=obj.type_, xhtml=obj.xhtml) else: if obj.subject: - msg_iq = nbxmpp.Message(body=msgtxt, typ='normal', + msg_iq = nbxmpp.Message(body=obj.message, typ='normal', subject=obj.subject, xhtml=obj.xhtml) else: - msg_iq = nbxmpp.Message(body=msgtxt, typ='normal', + msg_iq = nbxmpp.Message(body=obj.message, typ='normal', xhtml=obj.xhtml) if obj.msg_id: msg_iq.setID(obj.msg_id) - if msgenc: - msg_iq.setTag('x', namespace=nbxmpp.NS_ENCRYPTED).setData(msgenc) - if obj.form_node: msg_iq.addChild(node=obj.form_node) if obj.label: @@ -460,7 +394,7 @@ class CommonConnection: if obj.chatstate and contact and contact.supports(nbxmpp.NS_CHATSTATES): msg_iq.setTag(obj.chatstate, namespace=nbxmpp.NS_CHATSTATES) only_chatste = False - if not msgtxt: + if not obj.message: only_chatste = True if only_chatste and not obj.session.enable_encryption: msg_iq.setTag('no-store', @@ -468,8 +402,9 @@ class CommonConnection: # XEP-0184 if obj.jid != gajim.get_jid_from_account(self.name): - if msgtxt and gajim.config.get_per('accounts', self.name, - 'request_receipt'): + request = gajim.config.get_per('accounts', self.name, + 'request_receipt') + if obj.message and request: msg_iq.setTag('request', namespace=nbxmpp.NS_RECEIPTS) if obj.forward_from: diff --git a/src/common/connection_handlers.py b/src/common/connection_handlers.py index 2c45ec661..ec25feaf9 100644 --- a/src/common/connection_handlers.py +++ b/src/common/connection_handlers.py @@ -897,7 +897,7 @@ class ConnectionHandlersBase: gajim.ged.register_event_handler('message-received', ged.CORE, self._nec_message_received) gajim.ged.register_event_handler('mam-message-received', ged.CORE, - self._nec_mam_message_received) + self._nec_message_received) gajim.ged.register_event_handler('decrypted-message-received', ged.CORE, self._nec_decrypted_message_received) @@ -911,7 +911,7 @@ class ConnectionHandlersBase: gajim.ged.remove_event_handler('message-received', ged.CORE, self._nec_message_received) gajim.ged.remove_event_handler('mam-message-received', ged.CORE, - self._nec_mam_message_received) + self._nec_message_received) gajim.ged.remove_event_handler('decrypted-message-received', ged.CORE, self._nec_decrypted_message_received) @@ -1080,14 +1080,6 @@ class ConnectionHandlersBase: if sess.enable_encryption: sess.terminate_e2e() - def decrypt_thread(self, encmsg, keyID, obj): - decmsg = self.gpg.decrypt(encmsg, keyID) - decmsg = self.connection.Dispatcher.replace_non_character(decmsg) - # \x00 chars are not allowed in C (so in GTK) - obj.msgtxt = decmsg.replace('\x00', '') - obj.encrypted = 'xep27' - self.gpg_messages_to_decrypt.remove([encmsg, keyID, obj]) - def _nec_message_received(self, obj): if obj.conn.name != self.name: return @@ -1106,59 +1098,6 @@ class ConnectionHandlersBase: conn=self, msg_obj=obj)) return - if obj.enc_tag and self.USE_GPG: - encmsg = obj.enc_tag.getData() - - keyID = gajim.config.get_per('accounts', self.name, 'keyid') - if keyID: - self.gpg_messages_to_decrypt.append([encmsg, keyID, obj]) - if len(self.gpg_messages_to_decrypt) == 1: - gajim.thread_interface(self.decrypt_thread, [encmsg, keyID, - obj], self._on_message_decrypted, [obj]) - return - gajim.nec.push_incoming_event(DecryptedMessageReceivedEvent(None, - conn=self, msg_obj=obj)) - - def _nec_mam_message_received(self, obj): - if obj.conn.name != self.name: - return - if obj.enc_tag and self.USE_GPG: - encmsg = obj.enc_tag.getData() - - keyID = gajim.config.get_per('accounts', self.name, 'keyid') - if keyID: - self.gpg_messages_to_decrypt.append([encmsg, keyID, obj]) - if len(self.gpg_messages_to_decrypt) == 1: - gajim.thread_interface(self.decrypt_thread, [encmsg, keyID, - obj], self._on_mam_message_decrypted, [obj]) - return - gajim.nec.push_incoming_event(MamDecryptedMessageReceivedEvent(None, - conn=self, msg_obj=obj)) - - def _on_message_decrypted(self, output, obj): - if len(self.gpg_messages_to_decrypt): - encmsg, keyID, obj2 = self.gpg_messages_to_decrypt[0] - if type(obj2) == MessageReceivedEvent: - cb = self._on_message_decrypted - else: - cb = self._on_mam_message_decrypted - gajim.thread_interface(self.decrypt_thread, [encmsg, keyID, obj2], - cb, [obj2]) - gajim.nec.push_incoming_event(DecryptedMessageReceivedEvent(None, - conn=self, msg_obj=obj)) - - def _on_mam_message_decrypted(self, output, obj): - if len(self.gpg_messages_to_decrypt): - encmsg, keyID, obj2 = self.gpg_messages_to_decrypt[0] - if type(obj2) == MessageReceivedEvent: - cb = self._on_message_decrypted - else: - cb = self._on_mam_message_decrypted - gajim.thread_interface(self.decrypt_thread, [encmsg, keyID, obj2], - cb, [obj2]) - gajim.nec.push_incoming_event(MamDecryptedMessageReceivedEvent(None, - conn=self, msg_obj=obj)) - def _on_message_received(self, obj): if isinstance(obj, MessageReceivedEvent): gajim.nec.push_incoming_event( diff --git a/src/common/connection_handlers_events.py b/src/common/connection_handlers_events.py index f5489600b..c30823ccc 100644 --- a/src/common/connection_handlers_events.py +++ b/src/common/connection_handlers_events.py @@ -1035,6 +1035,7 @@ class MamMessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent): def init(self): self.additional_data = {} + self.encrypted = False def generate(self): if not self.stanza: @@ -1067,7 +1068,6 @@ class MamMessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent): self.with_ = to_ self.direction = 'to' self.resource = gajim.get_resource_from_jid(self.msg_.getAttr('to')) - self.enc_tag = self.msg_.getTag('x', namespace=nbxmpp.NS_ENCRYPTED) return True class MamDecryptedMessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent): @@ -1216,33 +1216,31 @@ class MessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent): conn=self.conn, stanza=forwarded)) return - self.enc_tag = self.stanza.getTag('x', namespace=nbxmpp.NS_ENCRYPTED) - if not self.enc_tag: - # Mediated invitation? - muc_user = self.stanza.getTag('x', namespace=nbxmpp.NS_MUC_USER) - if muc_user: - if muc_user.getTag('decline'): - gajim.nec.push_incoming_event( - GcDeclineReceivedEvent( - None, conn=self.conn, - room_jid=self.fjid, stanza=muc_user)) - return - if muc_user.getTag('invite'): - gajim.nec.push_incoming_event( - GcInvitationReceivedEvent( - None, conn=self.conn, jid_from=self.fjid, - mediated=True, stanza=muc_user)) - return - else: - # Direct invitation? - direct = self.stanza.getTag( - 'x', namespace=nbxmpp.NS_CONFERENCE) - if direct: - gajim.nec.push_incoming_event( - GcInvitationReceivedEvent( - None, conn=self.conn, jid_from=self.fjid, - mediated=False, stanza=direct)) - return + # Mediated invitation? + muc_user = self.stanza.getTag('x', namespace=nbxmpp.NS_MUC_USER) + if muc_user: + if muc_user.getTag('decline'): + gajim.nec.push_incoming_event( + GcDeclineReceivedEvent( + None, conn=self.conn, + room_jid=self.fjid, stanza=muc_user)) + return + if muc_user.getTag('invite'): + gajim.nec.push_incoming_event( + GcInvitationReceivedEvent( + None, conn=self.conn, jid_from=self.fjid, + mediated=True, stanza=muc_user)) + return + else: + # Direct invitation? + direct = self.stanza.getTag( + 'x', namespace=nbxmpp.NS_CONFERENCE) + if direct: + gajim.nec.push_incoming_event( + GcInvitationReceivedEvent( + None, conn=self.conn, jid_from=self.fjid, + mediated=False, stanza=direct)) + return self.thread_id = self.stanza.getThread() self.mtype = self.stanza.getType() diff --git a/src/dialogs.py b/src/dialogs.py index 549bb05e2..bfe84ba30 100644 --- a/src/dialogs.py +++ b/src/dialogs.py @@ -5391,64 +5391,6 @@ class ESessionInfoWindow: YesNoDialog(pritext, sectext, on_response_yes=on_yes, on_response_no=on_no, transient_for=self.window) -class GPGInfoWindow: - """ - Class for displaying information about a XEP-0116 encrypted session - """ - def __init__(self, control, transient_for=None): - xml = gtkgui_helpers.get_gtk_builder('esession_info_window.ui') - security_image = xml.get_object('security_image') - status_label = xml.get_object('verification_status_label') - info_label = xml.get_object('info_display') - verify_now_button = xml.get_object('verify_now_button') - self.window = xml.get_object('esession_info_window') - account = control.account - keyID = control.contact.keyID - error = None - - verify_now_button.set_no_show_all(True) - verify_now_button.hide() - - if keyID.endswith('MISMATCH'): - verification_status = _('''Contact's identity NOT verified''') - info = _('The contact\'s key (%s) does not match the key ' - 'assigned in Gajim.') % keyID[:8] - image = 'security-low' - elif not keyID: - # No key assigned nor a key is used by remote contact - verification_status = _('No OpenPGP key assigned') - info = _('No OpenPGP key is assigned to this contact. So you cannot' - ' encrypt messages.') - image = 'security-low' - else: - error = gajim.connections[account].gpg.encrypt('test', [keyID])[1] - if error: - verification_status = _('''Contact's identity NOT verified''') - info = _('OpenPGP key is assigned to this contact, but you ' - 'do not trust their key, so message cannot be ' - 'encrypted. Use your OpenPGP client to trust their key.') - image = 'security-low' - else: - verification_status = _('''Contact's identity verified''') - info = _('OpenPGP Key is assigned to this contact, and you ' - 'trust their key, so messages will be encrypted.') - image = 'security-high' - - status_label.set_markup('%s' % \ - verification_status) - info_label.set_markup(info) - - path = gtkgui_helpers.get_icon_path(image, 32) - security_image.set_from_file(path) - - self.window.set_transient_for(transient_for) - xml.connect_signals(self) - self.window.show_all() - - def on_close_button_clicked(self, widget): - self.window.destroy() - - class ResourceConflictDialog(TimeoutDialog, InputDialog): def __init__(self, title, text, resource, ok_handler): diff --git a/src/groupchat_control.py b/src/groupchat_control.py index facef7ece..7c62977de 100644 --- a/src/groupchat_control.py +++ b/src/groupchat_control.py @@ -257,9 +257,8 @@ class PrivateChatControl(ChatControl): def prepare_context_menu(self, hide_buttonbar_items=False): """ Set compact view menuitem active state sets active and sensitivity state - for toggle_gpg_menuitem sets sensitivity for history_menuitem (False for - tranasports) and file_transfer_menuitem and hide()/show() for - add_to_roster_menuitem + for history_menuitem (False for tranasports) and file_transfer_menuitem + and hide()/show() for add_to_roster_menuitem """ menu = gui_menu_builder.get_contact_menu(self.contact, self.account, use_multiple_contacts=False, show_start_chat=False, diff --git a/src/gui_menu_builder.py b/src/gui_menu_builder.py index 6db2a8bb1..f61ae68bd 100644 --- a/src/gui_menu_builder.py +++ b/src/gui_menu_builder.py @@ -246,7 +246,6 @@ control=None, gc_contact=None, is_anonymous=True): manage_contact_menuitem = xml.get_object('manage_contact') convert_to_gc_menuitem = xml.get_object('convert_to_groupchat_menuitem') encryption_separator = xml.get_object('encryption_separator') - toggle_gpg_menuitem = xml.get_object('toggle_gpg_menuitem') toggle_e2e_menuitem = xml.get_object('toggle_e2e_menuitem') last_separator = xml.get_object('last_separator') @@ -323,32 +322,17 @@ control=None, gc_contact=None, is_anonymous=True): items_to_hide.append(start_chat_menuitem) if not show_encryption or not control: - items_to_hide += [encryption_separator, toggle_gpg_menuitem, - toggle_e2e_menuitem] + items_to_hide += [encryption_separator, toggle_e2e_menuitem] else: e2e_is_active = control.session is not None and \ control.session.enable_encryption - # check if we support and use gpg - if not gajim.config.get_per('accounts', account, 'keyid') or \ - not gajim.connections[account].USE_GPG or gajim.jid_is_transport( - contact.jid): - toggle_gpg_menuitem.set_sensitive(False) - else: - toggle_gpg_menuitem.set_sensitive(control.gpg_is_active or \ - not e2e_is_active) - toggle_gpg_menuitem.set_active(control.gpg_is_active) - toggle_gpg_menuitem.connect('activate', - control._on_toggle_gpg_menuitem_activate) - # disable esessions if we or the other client don't support them if not gajim.HAVE_PYCRYPTO or not contact.supports(NS_ESESSION) or \ not gajim.config.get_per('accounts', account, 'enable_esessions'): toggle_e2e_menuitem.set_sensitive(False) else: toggle_e2e_menuitem.set_active(e2e_is_active) - toggle_e2e_menuitem.set_sensitive(e2e_is_active or \ - not control.gpg_is_active) toggle_e2e_menuitem.connect('activate', control._on_toggle_e2e_menuitem_activate)