Handle application/pgp

This commit is contained in:
Peter J. Holzer 2019-03-02 12:24:56 +01:00
parent 9f44375354
commit a737ce1760
1 changed files with 24 additions and 1 deletions

View File

@ -176,7 +176,7 @@ def render_body(msg):
stderr=subprocess.PIPE,
universal_newlines=True)
gpgresult = r.stderr
# Analyze gpgresult or just use r,returncode?
# XXX - Analyze gpgresult or just use r,returncode?
gpgstatus = "dubious"
contenthtml = render_message(content)
@ -188,6 +188,29 @@ def render_body(msg):
}
bodyhtml = bodytmpl.render(context)
elif content_type == "application/pgp":
with tempfile.NamedTemporaryFile(buffering=0) as content_fh:
content_fh.write(msg.get_payload(decode=True))
r = subprocess.run(["gpg", "--decrypt", content_fh.name],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
)
gpgresult = r.stderr.decode()
# XXX - Analyze gpgresult or just use r,returncode?
gpgstatus = "dubious"
decrypted_content = r.stdout
p = email.parser.BytesParser()
embedded_message = p.parsebytes(decrypted_content)
contenthtml = render_message(embedded_message)
bodytmpl = jenv.get_template("body_application_pgp.html")
context = {
"content": contenthtml,
"gpgresult": gpgresult,
"gpgstatus": gpgstatus,
}
bodyhtml = bodytmpl.render(context)
else:
raise RuntimeError("Content-type " + content_type + " not implemented yet")