diff --git a/src/chat_control.py b/src/chat_control.py
index aabcee9d28e4b7f786bf26bf12af4051066a1822..86a3c1e1265c084342ef999c67b39d95e1e9c24b 100644
--- a/src/chat_control.py
+++ b/src/chat_control.py
@@ -1516,6 +1516,11 @@ class ChatControl(ChatControlBase):
 		banner_name_tooltip.set_tip(banner_name_label, label_tooltip)
 
 	def _toggle_gpg(self):
+		if not self.gpg_is_active and not self.contact.keyID:
+			dialogs.ErrorDialog(_('No GPG key assigned'),
+				_('No GPG key is assigned to this contact. So you cannot '
+					'encrypt messages with GPG.'))
+			return
 		ec = gajim.encrypted_chats[self.account]
 		if self.gpg_is_active:
 			# Disable encryption
diff --git a/src/dialogs.py b/src/dialogs.py
index b8ed950dd06bd0fb8679d028ffb333abe3aca2f5..0253cd9da31b6521a4087dfaeb04f7ea3fff9297 100644
--- a/src/dialogs.py
+++ b/src/dialogs.py
@@ -3898,11 +3898,17 @@ class GPGInfoWindow:
 			info = _('The contact\'s key (%s) <b>does not match</b> the key '
 				'assigned in Gajim.') % keyID[:8]
 			image = 'security-low-big.png'
+		elif not keyID:
+			# No key assigned nor a key is used by remote contact
+			verification_status = _('No GPG key assigned')
+			info = _('No GPG key is assigned to this contact. So you cannot '
+				'encrypt messages.')
+			image = 'security-low-big.png'
 		else:
 			msgenc, error = gajim.connections[account].gpg.encrypt('test', [keyID])
 			if error:
 				verification_status = _('''Contact's identity NOT verified''')
-				info = _('GPG Key is assigned to this contact, but <b>you do not '
+				info = _('GPG key is assigned to this contact, but <b>you do not '
 					'trust his key</b>, so message <b>cannot</b> be encrypted. Use '
 					'your GPG client to trust this key.')
 				image = 'security-low-big.png'