clone orig message in prepare_pgp_message
This commit is contained in:
parent
7ca74eaa6f
commit
53e57eee42
|
@ -396,15 +396,18 @@ _MIME_HEADERS = [h.lower() for h in _MIME_HEADERS]
|
||||||
def prepare_pgp_message(orig_msg: Message, pgp_fingerprint: str, public_key: str):
|
def prepare_pgp_message(orig_msg: Message, pgp_fingerprint: str, public_key: str):
|
||||||
msg = MIMEMultipart("encrypted", protocol="application/pgp-encrypted")
|
msg = MIMEMultipart("encrypted", protocol="application/pgp-encrypted")
|
||||||
|
|
||||||
# copy all headers from original message except all standard MIME headers
|
# clone orig message to avoid modifying it
|
||||||
for i in reversed(range(len(orig_msg._headers))):
|
clone_msg = copy(orig_msg)
|
||||||
header_name = orig_msg._headers[i][0].lower()
|
|
||||||
if header_name.lower() not in _MIME_HEADERS:
|
|
||||||
msg[header_name] = orig_msg._headers[i][1]
|
|
||||||
|
|
||||||
# Delete unnecessary headers in orig_msg except to save space
|
# copy all headers from original message except all standard MIME headers
|
||||||
|
for i in reversed(range(len(clone_msg._headers))):
|
||||||
|
header_name = clone_msg._headers[i][0].lower()
|
||||||
|
if header_name.lower() not in _MIME_HEADERS:
|
||||||
|
msg[header_name] = clone_msg._headers[i][1]
|
||||||
|
|
||||||
|
# Delete unnecessary headers in orig_msg except _MIME_HEADERS to save space
|
||||||
delete_all_headers_except(
|
delete_all_headers_except(
|
||||||
orig_msg,
|
clone_msg,
|
||||||
_MIME_HEADERS,
|
_MIME_HEADERS,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -421,14 +424,13 @@ def prepare_pgp_message(orig_msg: Message, pgp_fingerprint: str, public_key: str
|
||||||
|
|
||||||
# encrypt original message
|
# encrypt original message
|
||||||
# use pgpy as fallback
|
# use pgpy as fallback
|
||||||
|
msg_bytes = clone_msg.as_bytes()
|
||||||
try:
|
try:
|
||||||
encrypted_data = pgp_utils.encrypt_file(
|
encrypted_data = pgp_utils.encrypt_file(BytesIO(msg_bytes), pgp_fingerprint)
|
||||||
BytesIO(orig_msg.as_bytes()), pgp_fingerprint
|
|
||||||
)
|
|
||||||
second.set_payload(encrypted_data)
|
second.set_payload(encrypted_data)
|
||||||
except PGPException:
|
except PGPException:
|
||||||
LOG.exception("Cannot encrypt using python-gnupg, use pgpy")
|
LOG.exception("Cannot encrypt using python-gnupg, use pgpy")
|
||||||
encrypted = pgp_utils.encrypt_file_with_pgpy(orig_msg.as_bytes(), public_key)
|
encrypted = pgp_utils.encrypt_file_with_pgpy(msg_bytes, public_key)
|
||||||
second.set_payload(str(encrypted))
|
second.set_payload(str(encrypted))
|
||||||
|
|
||||||
msg.attach(second)
|
msg.attach(second)
|
||||||
|
|
Loading…
Reference in New Issue