docs and examples: python howto master
authorBen McGinnes <ben@adversary.org>
Wed, 23 May 2018 04:43:06 +0000 (14:43 +1000)
committerBen McGinnes <ben@adversary.org>
Wed, 23 May 2018 04:43:06 +0000 (14:43 +1000)
* Updated the decryption example code in the HOWTO and the
  corresponding decrypt-file.py script to gracefully handle a
  decryption failure.  This error will always be triggered when GPGME
  is used to try to decrypt an old, MDC-less encrypted message or
  file.

lang/python/docs/GPGMEpythonHOWTOen.org
lang/python/examples/howto/decrypt-file.py

index cb85b61..ef66eff 100644 (file)
@@ -14,7 +14,7 @@
   :CUSTOM_ID: intro
   :END:
 
   :CUSTOM_ID: intro
   :END:
 
-  | Version:        | 0.1.0                                    |
+  | Version:        | 0.1.1                                    |
   | Author:         | Ben McGinnes <ben@gnupg.org>             |
   | Author GPG Key: | DB4724E6FA4286C92B4E55C4321E4E2373590E5D |
   | Language:       | Australian English, British English      |
   | Author:         | Ben McGinnes <ben@gnupg.org>             |
   | Author GPG Key: | DB4724E6FA4286C92B4E55C4321E4E2373590E5D |
   | Language:       | Australian English, British English      |
      newfile = input("Enter path and filename of file to save decrypted data to: ")
 
      with open(ciphertext, "rb") as cfile:
      newfile = input("Enter path and filename of file to save decrypted data to: ")
 
      with open(ciphertext, "rb") as cfile:
-        plaintext, result, verify_result = gpg.Context().decrypt(cfile)
-
-     with open(newfile, "wb") as nfile:
-        nfile.write(plaintext)
+        try:
+            plaintext, result, verify_result = gpg.Context().decrypt(cfile)
+        except gpg.errors.GPGMEError as e:
+            plaintext = None
+            print(e)
+
+     if plaintext is not None:
+        with open(newfile, "wb") as nfile:
+            nfile.write(plaintext)
+     else:
+        pass
    #+end_src
 
    The data available in =plaintext= in this example is the decrypted
    #+end_src
 
    The data available in =plaintext= in this example is the decrypted
index 60a050b..b38acc7 100755 (executable)
@@ -38,7 +38,14 @@ else:
     newfile = input("Enter path and filename of file to save decrypted data to: ")
 
 with open(ciphertext, "rb") as cfile:
     newfile = input("Enter path and filename of file to save decrypted data to: ")
 
 with open(ciphertext, "rb") as cfile:
-    plaintext, result, verify_result = gpg.Context().decrypt(cfile)
+    try:
+        plaintext, result, verify_result = gpg.Context().decrypt(cfile)
+    except gpg.errors.GPGMEError as e:
+        plaintext = None
+        print(e)
 
 
-with open(newfile, "wb") as nfile:
-    nfile.write(plaintext)
+if plaintext is not None:
+    with open(newfile, "wb") as nfile:
+        nfile.write(plaintext)
+else:
+    pass