def _get_message_keys(self, messageid): keys = self.key_cache.get(messageid, []) if not keys: email = Email(self._idx(), messageid) # First we check the Autocrypt headers msg = email.get_msg(pgpmime='all') for ach in ([extract_autocrypt_header(msg)] + extract_autocrypt_gossip_headers(msg)): if 'keydata' in ach: for keydata in get_keydata(ach['keydata'], autocrypt_header=ach, include_subkeys=False): keys.append((keydata, ach['keydata'])) # Then go looking at the attachments attachments = email.get_message_tree(want=["attachments"] )["attachments"] for part in attachments: if len(keys) > 100: # Just to set some limit... break if _might_be_pgp_key(part["filename"], part["mimetype"]): key = part["part"].get_payload(None, True) for keydata in get_keydata(key, include_subkeys=False): keys.append((keydata, key)) self.key_cache[messageid] = keys return keys
def _get_message_keys(self, messageid): keys = self.key_cache.get(messageid, []) if not keys: email = Email(self._idx(), messageid) attachments = email.get_message_tree( want=["attachments"])["attachments"] for part in attachments: if _might_be_pgp_key(part["filename"], part["mimetype"]): key = part["part"].get_payload(None, True) for keydata in _get_keydata(key): keys.append((keydata, key)) if len(keys) > 5: # Just to set some limit... break self.key_cache[messageid] = keys return keys
def _get_message_keys(self, messageid): keys = self.key_cache.get(messageid, []) if not keys: email = Email(self._idx(), messageid) attachments = email.get_message_tree(want=["attachments"] )["attachments"] for part in attachments: if _might_be_pgp_key(part["filename"], part["mimetype"]): key = part["part"].get_payload(None, True) for keydata in _get_keydata(key): keys.append((keydata, key)) if len(keys) > 5: # Just to set some limit... break self.key_cache[messageid] = keys return keys
def _get_message_keys(self, messageid, autocrypt=True, autocrypt_gossip=True, attachments=True): keys = self.key_cache.get(messageid, []) if not keys: email = Email(self._idx(), messageid) # First we check the Autocrypt headers loop_count = 0 msg = email.get_msg(pgpmime='all') ac_headers = [] if autocrypt: ac_headers.append(extract_autocrypt_header(msg)) if autocrypt_gossip: ac_headers.extend(extract_autocrypt_gossip_headers(msg)) for ach in ac_headers: loop_count += 1 if 'keydata' in ach: for keyinfo in get_keyinfo(ach['keydata'], autocrypt_header=ach, key_info_class=MailpileKeyInfo): keyinfo.is_autocrypt = True keyinfo.is_gossip = (loop_count > 1) keys.append((keyinfo, ach['keydata'])) # Then go looking at the attachments atts = [] if attachments: atts.extend( email.get_message_tree( want=["attachments"])["attachments"]) for part in atts: if len(keys) > 100: # Just to set some limit... break if _might_be_pgp_key(part["filename"], part["mimetype"]): key = part["part"].get_payload(None, True) for keyinfo in get_keyinfo(key, key_info_class=MailpileKeyInfo): keys.append((keyinfo, key)) self.key_cache[messageid] = keys return keys