handle_args()
+ gpgme_ctx = get_gpg_context(edward_config.gnupghome,
+ edward_config.sign_with_key)
+
email_text = sys.stdin.read()
email_from, email_subject = email_from_subject(email_text)
- os.environ['GNUPGHOME'] = edward_config.gnupghome
- gpgme_ctx = gpgme.Context()
- gpgme_ctx.armor = True
-
plaintext, keys = email_decode_flatten(email_text, gpgme_ctx, False)
encrypt_to_key = choose_reply_encryption_key(keys)
reply_message = generate_reply(plaintext, email_from, \
email_subject, encrypt_to_key,
- edward_config.sign_with_key,
gpgme_ctx)
print(reply_message)
+def get_gpg_context (gnupghome, sign_with_key_fp):
+
+ os.environ['GNUPGHOME'] = gnupghome
+
+ gpgme_ctx = gpgme.Context()
+ gpgme_ctx.armor = True
+
+ try:
+ sign_with_key = gpgme_ctx.get_key(sign_with_key_fp)
+ except:
+ error("unable to load signing key. is the gnupghome "
+ + "and signing key properly set in the edward_config.py?")
+ exit(1)
+
+ gpgme_ctx.signers = [sign_with_key]
+
+ return gpgme_ctx
+
+
def email_decode_flatten (email_text, gpgme_ctx, from_decryption):
body = ""
def generate_reply (plaintext, email_from, email_subject, encrypt_to_key,
- sign_with_fingerprint, gpgme_ctx):
+ gpgme_ctx):
reply = "To: " + email_from + "\n"
encrypted_text = encrypt_sign_message(plaintext_mime.as_string(),
encrypt_to_key,
- sign_with_fingerprint,
gpgme_ctx)
control_mime = MIMEApplication("Version: 1",
return quoted_message
-def encrypt_sign_message (plaintext, encrypt_to_key, sign_with_fingerprint, gpgme_ctx):
-
- sign_with_key = gpgme_ctx.get_key(sign_with_fingerprint)
- gpgme_ctx.signers = [sign_with_key]
+def encrypt_sign_message (plaintext, encrypt_to_key, gpgme_ctx):
plaintext_bytes = io.BytesIO(plaintext.encode('ascii'))
encrypted_bytes = io.BytesIO()
return encrypted_txt
+def error (error_msg):
+
+ sys.stderr.write(progname + ": " + error_msg + "\n")
+
+
def debug (debug_msg):
if edward_config.debug == True:
- sys.stderr.write(progname + ": " + debug_msg + "\n")
+ error(debug_msg)
def handle_args ():
--- /dev/null
+From: No One <noone@localhost>
+MIME-Version: 1.0
+To: No One <noone@localhost>
+Subject: =?UTF-8?B?44GT44KT44Gr44Gh44Gv44CB44GK5YWD5rCX44Gn44GZ44GL77yf?=
+Content-Type: multipart/encrypted;
+ protocol="application/pgp-encrypted";
+ boundary="x2iAciceo0NrKsl4uFVFGTgJ6k0ocg8FW"
+
+This is an OpenPGP/MIME encrypted message (RFC 4880 and 3156)
+--x2iAciceo0NrKsl4uFVFGTgJ6k0ocg8FW
+Content-Type: application/pgp-encrypted
+Content-Description: PGP/MIME version identification
+
+Version: 1
+
+--x2iAciceo0NrKsl4uFVFGTgJ6k0ocg8FW
+Content-Type: application/octet-stream; name="encrypted.asc"
+Content-Description: OpenPGP encrypted message
+Content-Disposition: inline; filename="encrypted.asc"
+
+-----BEGIN PGP MESSAGE-----
+Version: GnuPG v1
+
+hIwDWouAYlp2iv8BA/sEjt5WzTB5XjR1ya3gb9q2bAhyn/KqxTX12K6/ZgiyVwO4
+1MW8MaVx1l9+RTeWj1mWYo7snTGsKYvUjnrFaL25LghxTcqiiIgrQbXS+94nbmmJ
+l5XUOND4Z9sLutWZ12edAZCPXONuvsRpjKbJ0COo2xT8dRG/nYPch5l+iQbW9tLp
+AYA+g74i8gOOvGubE9EAtcTCODfH/ZOeDfwBZx0DzyhJ8/WkDcgSTUX5O64o53z9
+ps4jcyw2usX74iNNiBvFsYLlFe3ouHnPgXidLCmuHGKm+NYSe2IHFaBNuMn9sjzm
+nkzuN5DxC5bnm4VsAY4hqh3JBlU9KhYse8z2JANNqe3ykF350mC5HZ7vldtiYzyI
+gAOJjkisIclt4W7S+zNXlAe+wtDjRadWAjLB1NO41ByBSqOTXo2HnLIE/wjZYAcO
++6AcCykXcnpgPbcpWxtmStVrUdCOhHJHyHxZaOtmym0+5ZxwEx3ZTNZI01LNUJ72
+6WGgEA7VnwYZpIONWpHiFE5R4nn/C/O465R60EM9V8rS7JyVNP/YBRVVVl1EyjDZ
+scOoTiV3dX1+42Mhhn7CrwrgADSID00gPrYWRiVjJZFfDIJoKShk4LxhoKCwiNr3
+lTFGV37BBQvAi5Ff38IhDF9maHlq1zNWYicQ1gt4IiWPToXCwEkAPvuBJngBoD7v
+y+BdGLSHDBM0aaM9XrUdIjp2JGDMkDu0omXluXDsy5arhdOPDz7DlKcRiNvdYc1P
+oR+Efnj6REgGXX7H/xwmD9+ZK2PBFMUMOOMV39o+SyP+10CV4OCD6B9vzYw0tCTK
+zzB1haHF1oHT2ywgtgM6eFeuc1XBbuEGTOToEC8VDuAug38k0ucFWdQHg++qzYnb
+K5sKzzl40UDdLDIU1bD3VIkqAufAr886CAvKDzGseA==
+=FfqK
+-----END PGP MESSAGE-----
+
+--x2iAciceo0NrKsl4uFVFGTgJ6k0ocg8FW--
+