Fix call to python-gnupg verify_file() method (#6022).
authordrebs <drebs@leap.se>
Wed, 27 Aug 2014 15:59:28 +0000 (12:59 -0300)
committerdrebs <drebs@leap.se>
Wed, 27 Aug 2014 15:59:28 +0000 (12:59 -0300)
changes/bug_6022_fix-call-to-verify-file [new file with mode: 0644]
src/leap/keymanager/openpgp.py

diff --git a/changes/bug_6022_fix-call-to-verify-file b/changes/bug_6022_fix-call-to-verify-file
new file mode 100644 (file)
index 0000000..121e25a
--- /dev/null
@@ -0,0 +1 @@
+  o Fix call to python-gnupg's verify_file() method (#6022).
index 46ae2aa..ee37a34 100644 (file)
@@ -22,12 +22,11 @@ import os
 import re
 import shutil
 import tempfile
+import io
 
-from contextlib import closing
 
 from gnupg import GPG
 from gnupg.gnupg import GPGUtilities
-from gnupg._util import _make_binary_stream
 
 from leap.common.check import leap_assert, leap_assert_type, leap_check
 from leap.keymanager import errors
@@ -649,17 +648,13 @@ class OpenPGPScheme(EncryptionScheme):
                 result = gpg.verify(data)
             else:
                 # to verify using a detached sig we have to use
-                # gpg.verify_file(), which receives the name of
-                # files containing the date and the signature.
+                # gpg.verify_file(), which receives the data as a binary
+                # stream and the name of a file containing the signature.
                 sf, sfname = tempfile.mkstemp()
                 with os.fdopen(sf, 'w') as sfd:
                     sfd.write(detached_sig)
-                df, dfname = tempfile.mkstemp()
-                with os.fdopen(df, 'w') as sdd:
-                    sdd.write(data)
-                result = gpg.verify_file(dfname, sig_file=sfname)
+                result = gpg.verify_file(io.BytesIO(data), sig_file=sfname)
                 os.unlink(sfname)
-                os.unlink(dfname)
             gpgpubkey = gpg.list_keys().pop()
             valid = result.valid
             rfprint = result.fingerprint