python: Rename Python module from PyME to gpg.

This follows weeks of discussion on the gnupg-devel mailing list.
Hopefully it will make it easier for people using Python to use GnuPG
in the future.

Signed-off-by: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
This commit is contained in:
Daniel Kahn Gillmor 2016-10-28 16:45:49 -04:00 committed by Justus Winter
parent b8159eadb5
commit 2fac017618
70 changed files with 289 additions and 288 deletions

1
NEWS
View File

@ -1,6 +1,7 @@
Noteworthy changes in version 1.7.2 (unreleased) Noteworthy changes in version 1.7.2 (unreleased)
------------------------------------------------ ------------------------------------------------
* The module of the Python bindings has been renamed to 'gpg'.
* Interface changes relative to the 1.7.1 release: * Interface changes relative to the 1.7.1 release:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

View File

@ -885,7 +885,7 @@ AC_CONFIG_FILES([lang/Makefile lang/cl/Makefile lang/cl/gpgme.asd])
AM_COND_IF([HAVE_DOXYGEN], [AC_CONFIG_FILES([lang/qt/doc/Doxyfile])]) AM_COND_IF([HAVE_DOXYGEN], [AC_CONFIG_FILES([lang/qt/doc/Doxyfile])])
AC_CONFIG_FILES(lang/qt/doc/Makefile) AC_CONFIG_FILES(lang/qt/doc/Makefile)
AC_CONFIG_FILES([lang/python/Makefile AC_CONFIG_FILES([lang/python/Makefile
lang/python/pyme/version.py lang/python/gpg/version.py
lang/python/tests/Makefile]) lang/python/tests/Makefile])
AC_CONFIG_FILES([lang/python/setup.py], [chmod a+x lang/python/setup.py]) AC_CONFIG_FILES([lang/python/setup.py], [chmod a+x lang/python/setup.py])
AC_OUTPUT AC_OUTPUT

View File

@ -12,4 +12,4 @@ Directory Language
cl Common Lisp cl Common Lisp
cpp C++ cpp C++
qt Qt-Framework API qt Qt-Framework API
python Python 2 and 3 (port of PyME 0.9.0) python Python 2 and 3 (module name: gpg)

View File

@ -1,4 +1,4 @@
recursive-include examples *.py recursive-include examples *.py
include gpgme-h-clean.py gpgme.i include gpgme-h-clean.py gpgme.i
include helpers.c helpers.h private.h include helpers.c helpers.h private.h
recursive-include pyme *.py recursive-include gpg *.py

View File

@ -23,7 +23,7 @@ EXTRA_DIST = \
helpers.c helpers.h private.h \ helpers.c helpers.h private.h \
gpgme-h-clean.py \ gpgme-h-clean.py \
examples \ examples \
pyme gpg
SUBDIRS = . tests SUBDIRS = . tests
@ -35,21 +35,21 @@ COPY_FILES = \
$(srcdir)/examples \ $(srcdir)/examples \
$(srcdir)/helpers.c $(srcdir)/helpers.h $(srcdir)/private.h $(srcdir)/helpers.c $(srcdir)/helpers.h $(srcdir)/private.h
COPY_FILES_PYME = \ COPY_FILES_GPG = \
$(srcdir)/pyme/callbacks.py \ $(srcdir)/gpg/callbacks.py \
$(srcdir)/pyme/constants \ $(srcdir)/gpg/constants \
$(srcdir)/pyme/core.py \ $(srcdir)/gpg/core.py \
$(srcdir)/pyme/errors.py \ $(srcdir)/gpg/errors.py \
$(srcdir)/pyme/__init__.py \ $(srcdir)/gpg/__init__.py \
$(srcdir)/pyme/results.py \ $(srcdir)/gpg/results.py \
$(srcdir)/pyme/util.py $(srcdir)/gpg/util.py
# For VPATH builds we need to copy some files because Python's # For VPATH builds we need to copy some files because Python's
# distutils are not VPATH-aware. # distutils are not VPATH-aware.
copystamp: $(COPY_FILES) $(COPY_FILES_PYME) data.h config.h copystamp: $(COPY_FILES) $(COPY_FILES_GPG) data.h config.h
if test "$(srcdir)" != "$(builddir)" ; then \ if test "$(srcdir)" != "$(builddir)" ; then \
cp -R $(COPY_FILES) . ; \ cp -R $(COPY_FILES) . ; \
cp -R $(COPY_FILES_PYME) pyme ; \ cp -R $(COPY_FILES_GPG) gpg ; \
fi fi
touch $@ touch $@
@ -65,22 +65,22 @@ all-local: copystamp
$$PYTHON setup.py build --verbose ; \ $$PYTHON setup.py build --verbose ; \
done done
dist/pyme3-$(VERSION).tar.gz dist/pyme3-$(VERSION).tar.gz.asc: copystamp dist/gpg-$(VERSION).tar.gz dist/gpg-$(VERSION).tar.gz.asc: copystamp
CFLAGS="$(CFLAGS)" \ CFLAGS="$(CFLAGS)" \
$(PYTHON) setup.py sdist --verbose $(PYTHON) setup.py sdist --verbose
gpg2 --detach-sign --armor dist/pyme3-$(VERSION).tar.gz gpg2 --detach-sign --armor dist/gpg-$(VERSION).tar.gz
.PHONY: prepare .PHONY: prepare
prepare: copystamp prepare: copystamp
.PHONY: sdist .PHONY: sdist
sdist: dist/pyme3-$(VERSION).tar.gz dist/pyme3-$(VERSION).tar.gz.asc sdist: dist/gpg-$(VERSION).tar.gz dist/gpg-$(VERSION).tar.gz.asc
.PHONY: upload .PHONY: upload
upload: dist/pyme3-$(VERSION).tar.gz dist/pyme3-$(VERSION).tar.gz.asc upload: dist/gpg-$(VERSION).tar.gz dist/gpg-$(VERSION).tar.gz.asc
twine upload $^ twine upload $^
CLEANFILES = gpgme.h errors.i gpgme_wrap.c pyme/gpgme.py \ CLEANFILES = gpgme.h errors.i gpgme_wrap.c gpg/gpgme.py \
data.h config.h copystamp data.h config.h copystamp
# Remove the rest. # Remove the rest.
@ -92,8 +92,8 @@ clean-local:
if test "$(srcdir)" != "$(builddir)" ; then \ if test "$(srcdir)" != "$(builddir)" ; then \
find . -type d ! -perm -200 -exec chmod u+w {} ';' ; \ find . -type d ! -perm -200 -exec chmod u+w {} ';' ; \
for F in $(COPY_FILES); do rm -rf -- `basename $$F` ; done ; \ for F in $(COPY_FILES); do rm -rf -- `basename $$F` ; done ; \
for F in $(COPY_FILES_PYME); do \ for F in $(COPY_FILES_GPG); do \
rm -rf -- pyme/`basename $$F` ; \ rm -rf -- gpg/`basename $$F` ; \
done ; \ done ; \
fi fi
@ -107,9 +107,9 @@ install-exec-local:
cat files.txt >> install_files.txt ; \ cat files.txt >> install_files.txt ; \
rm files.txt ; \ rm files.txt ; \
done done
$(MKDIR_P) $(DESTDIR)$(pythondir)/pyme $(MKDIR_P) $(DESTDIR)$(pythondir)/gpg
mv install_files.txt $(DESTDIR)$(pythondir)/pyme mv install_files.txt $(DESTDIR)$(pythondir)/gpg
uninstall-local: uninstall-local:
xargs <$(DESTDIR)$(pythondir)/pyme/install_files.txt -- rm -rf -- xargs <$(DESTDIR)$(pythondir)/gpg/install_files.txt -- rm -rf --
rm -rf -- $(DESTDIR)$(pythondir)/pyme rm -rf -- $(DESTDIR)$(pythondir)/gpg

View File

@ -1,10 +1,10 @@
PyME - GPGME for Python -*- org -*- gpg - GPGME bindings for Python -*- org -*-
======================= =======================
PyME is a python interface to the GPGME library: The "gpg" module is a python interface to the GPGME library:
https://www.gnupg.org/related_software/gpgme/ https://www.gnupg.org/related_software/gpgme/
PyME offers two interfaces, one is a high-level, curated, and "gpg" offers two interfaces, one is a high-level, curated, and
idiomatic interface that is implemented as a shim on top of the idiomatic interface that is implemented as a shim on top of the
low-level interface automatically created using SWIG. low-level interface automatically created using SWIG.
@ -27,20 +27,22 @@ https://bugs.gnupg.org/gnupg/
* Authors * Authors
PyME has been created by John Goerzen, and maintained, developed, and PyME was created by John Goerzen, and maintained, developed, and
cherished by Igor Belyi, Martin Albrecht, Ben McGinnes, and everyone cherished by Igor Belyi, Martin Albrecht, Ben McGinnes, and everyone
who contributed to it in any way. who contributed to it in any way.
In 2016 we merged a port of PyME to into the GPGME repository, and In 2016 we merged a port of PyME to into the GPGME repository, and
development will continue there. Please see the VCS history for the development will continue there. Please see the VCS history for the
list of contributors, and if you do find bugs, or want to contribute, list of contributors, and if you do find bugs, or want to contribute,
please get in touch and help maintain PyME. please get in touch and help maintain the python gpg bindings.
Please see the section 'History' further down this document for Please see the section 'History' further down this document for
references to previous versions. references to previous versions.
* History * History
- The python bindings were renamed from PyME to "gpg" in 2016.
- The bindings have been merged into the GPGME repository in 2016. - The bindings have been merged into the GPGME repository in 2016.
- The latest version of PyME for Python 3.2 and above (as of - The latest version of PyME for Python 3.2 and above (as of

View File

@ -1,6 +1,6 @@
======================= ==========================================
A Short History of PyME A Short History of gpg bindings for Python
======================= ==========================================
In 2002 John Goerzen released PyME; Python bindings for the GPGME In 2002 John Goerzen released PyME; Python bindings for the GPGME
module which utilised the current release of Python of the time module which utilised the current release of Python of the time
@ -27,6 +27,8 @@ decision to fold the Python 3 port back into the original GPGME
release in the languages subdirectory for non-C bindings. Ben is the release in the languages subdirectory for non-C bindings. Ben is the
maintainer of the Python 3 port within GPGME. maintainer of the Python 3 port within GPGME.
In 2016 PyME was renamed to "gpg" and adopted by the upstream GnuPG
team.
--------------------- ---------------------
The Annoyances of Git The Annoyances of Git

View File

@ -20,9 +20,9 @@
from __future__ import absolute_import, print_function, unicode_literals from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
import pyme import gpg
with pyme.Context(protocol=pyme.constants.PROTOCOL_ASSUAN) as c: with gpg.Context(protocol=gpg.constants.PROTOCOL_ASSUAN) as c:
# Invoke the pinentry to get a confirmation. # Invoke the pinentry to get a confirmation.
err = c.assuan_transact(['GET_CONFIRMATION', 'Hello there']) err = c.assuan_transact(['GET_CONFIRMATION', 'Hello there'])
print("You chose {}.".format("cancel" if err else "ok")) print("You chose {}.".format("cancel" if err else "ok"))

View File

@ -17,7 +17,7 @@
"""A decryption filter """A decryption filter
This demonstrates decryption using pyme3 in three lines of code. To This demonstrates decryption using gpg3 in three lines of code. To
be used like this: be used like this:
./decryption-filter.py <message.gpg >message.plain ./decryption-filter.py <message.gpg >message.plain
@ -28,5 +28,5 @@ from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
import sys import sys
import pyme import gpg
pyme.Context().decrypt(sys.stdin, sink=sys.stdout) gpg.Context().decrypt(sys.stdin, sink=sys.stdout)

View File

@ -22,12 +22,12 @@
from __future__ import absolute_import, print_function, unicode_literals from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
import pyme import gpg
with pyme.Context() as c: with gpg.Context() as c:
# Note: We must not modify the key store during iteration, # Note: We must not modify the key store during iteration,
# therefore, we explicitly make a list. # therefore, we explicitly make a list.
keys = list(c.keylist("joe+pyme@example.org")) keys = list(c.keylist("joe+gpg@example.org"))
for k in keys: for k in keys:
c.op_delete(k, True) c.op_delete(k, True)

View File

@ -26,9 +26,9 @@ from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
import sys import sys
import pyme import gpg
with pyme.Context(armor=True) as c: with gpg.Context(armor=True) as c:
recipients = list() recipients = list()
for key in c.keylist(): for key in c.keylist():
valid = 0 valid = 0
@ -42,7 +42,7 @@ with pyme.Context(armor=True) as c:
try: try:
ciphertext, _, _ = c.encrypt(b'This is my message.', ciphertext, _, _ = c.encrypt(b'This is my message.',
recipients=recipients) recipients=recipients)
except pyme.errors.InvalidRecipients as e: except gpg.errors.InvalidRecipients as e:
print("Encryption failed for these keys:\n{0!s}".format(e)) print("Encryption failed for these keys:\n{0!s}".format(e))
# filter out the bad keys # filter out the bad keys

View File

@ -17,18 +17,18 @@
# along with this program; if not, see <http://www.gnu.org/licenses/>. # along with this program; if not, see <http://www.gnu.org/licenses/>.
# Sample of export and import of keys # Sample of export and import of keys
# It uses keys for joe+pyme@example.org generated by genkey.py script # It uses keys for joe+gpg@example.org generated by genkey.py script
from __future__ import absolute_import, print_function, unicode_literals from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
import sys import sys
import os import os
import pyme import gpg
user = "joe+pyme@example.org" user = "joe+gpg@example.org"
with pyme.Context(armor=True) as c, pyme.Data() as expkey: with gpg.Context(armor=True) as c, gpg.Data() as expkey:
print(" - Export %s's public keys - " % user) print(" - Export %s's public keys - " % user)
c.op_export(user, 0, expkey) c.op_export(user, 0, expkey)
@ -43,7 +43,7 @@ with pyme.Context(armor=True) as c, pyme.Data() as expkey:
# delete keys to ensure that they came from our imported data. Note # delete keys to ensure that they came from our imported data. Note
# that if joe's key has private part as well we can only delete both # that if joe's key has private part as well we can only delete both
# of them. # of them.
with pyme.Context() as c: with gpg.Context() as c:
# Note: We must not modify the key store during iteration, # Note: We must not modify the key store during iteration,
# therfore, we explicitly make a list. # therfore, we explicitly make a list.
keys = list(c.keylist(user)) keys = list(c.keylist(user))
@ -51,7 +51,7 @@ with pyme.Context() as c:
for k in keys: for k in keys:
c.op_delete(k, True) c.op_delete(k, True)
with pyme.Context() as c: with gpg.Context() as c:
print(" - Import exported keys - ") print(" - Import exported keys - ")
c.op_import(expstring) c.op_import(expstring)
result = c.op_import_result() result = c.op_import_result()

View File

@ -20,7 +20,7 @@
from __future__ import absolute_import, print_function, unicode_literals from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
import pyme import gpg
# This is the example from the GPGME manual. # This is the example from the GPGME manual.
@ -31,14 +31,14 @@ Subkey-Type: RSA
Subkey-Length: 2048 Subkey-Length: 2048
Name-Real: Joe Tester Name-Real: Joe Tester
Name-Comment: with stupid passphrase Name-Comment: with stupid passphrase
Name-Email: joe+pyme@example.org Name-Email: joe+gpg@example.org
Passphrase: Crypt0R0cks Passphrase: Crypt0R0cks
Expire-Date: 2020-12-31 Expire-Date: 2020-12-31
</GnupgKeyParms> </GnupgKeyParms>
""" """
with pyme.Context() as c: with gpg.Context() as c:
c.set_progress_cb(pyme.callbacks.progress_stdout) c.set_progress_cb(gpg.callbacks.progress_stdout)
c.op_genkey(parms, None, None) c.op_genkey(parms, None, None)
print("Generated key with fingerprint {0}.".format( print("Generated key with fingerprint {0}.".format(
c.op_genkey_result().fpr)) c.op_genkey_result().fpr))

View File

@ -22,14 +22,14 @@ from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
import sys import sys
import pyme import gpg
if len(sys.argv) != 2: if len(sys.argv) != 2:
sys.exit("Usage: %s <Gpg key pattern>\n" % sys.argv[0]) sys.exit("Usage: %s <Gpg key pattern>\n" % sys.argv[0])
name = sys.argv[1] name = sys.argv[1]
with pyme.Context() as c: with gpg.Context() as c:
keys = list(c.keylist(name)) keys = list(c.keylist(name))
if len(keys) == 0: if len(keys) == 0:
sys.exit("No key matching {}.".format(name)) sys.exit("No key matching {}.".format(name))

View File

@ -20,9 +20,9 @@ from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
import sys import sys
import pyme import gpg
from pyme.constants.sig import mode from gpg.constants.sig import mode
with pyme.Context() as c: with gpg.Context() as c:
signed, _ = c.sign(b"Test message", mode=mode.CLEAR) signed, _ = c.sign(b"Test message", mode=mode.CLEAR)
sys.stdout.buffer.write(signed) sys.stdout.buffer.write(signed)

View File

@ -17,18 +17,18 @@
# along with this program; if not, see <http://www.gnu.org/licenses/>. # along with this program; if not, see <http://www.gnu.org/licenses/>.
# Sample of unattended signing/verifying of a message. # Sample of unattended signing/verifying of a message.
# It uses keys for joe+pyme@example.org generated by genkey.py script # It uses keys for joe+gpg@example.org generated by genkey.py script
from __future__ import absolute_import, print_function, unicode_literals from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
import sys import sys
import pyme import gpg
from pyme.constants.sig import mode from gpg.constants.sig import mode
user = "joe+pyme" user = "joe+gpg"
with pyme.Context(pinentry_mode=pyme.constants.PINENTRY_MODE_LOOPBACK) as c: with gpg.Context(pinentry_mode=gpg.constants.PINENTRY_MODE_LOOPBACK) as c:
keys = list(c.keylist(user)) keys = list(c.keylist(user))
if len(keys) == 0: if len(keys) == 0:
sys.exit("No key matching {}.".format(user)) sys.exit("No key matching {}.".format(user))

View File

@ -21,9 +21,9 @@ from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
import sys import sys
import pyme import gpg
with pyme.Context(armor=True) as c: with gpg.Context(armor=True) as c:
recipients = [] recipients = []
print("Enter name of your recipient(s), end with a blank line.") print("Enter name of your recipient(s), end with a blank line.")
while True: while True:

View File

@ -22,12 +22,12 @@ from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
import sys import sys
import pyme import gpg
if len(sys.argv) != 2: if len(sys.argv) != 2:
sys.exit("fingerprint or unique key ID for gpgme_get_key()") sys.exit("fingerprint or unique key ID for gpgme_get_key()")
with pyme.Context(protocol=pyme.constants.PROTOCOL_CMS) as c: with gpg.Context(protocol=gpg.constants.PROTOCOL_CMS) as c:
key = c.get_key(sys.argv[1]) key = c.get_key(sys.argv[1])
print("got key: ", key.subkeys[0].fpr) print("got key: ", key.subkeys[0].fpr)

View File

@ -21,8 +21,8 @@ from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
import sys import sys
from pyme import core from gpg import core
from pyme.constants import protocol from gpg.constants import protocol
def print_engine_infos(): def print_engine_infos():
print("gpgme version:", core.check_version(None)) print("gpgme version:", core.check_version(None))

View File

@ -16,17 +16,13 @@
# License along with this library; if not, write to the Free Software # License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
"""Pyme: GPGME Interface for Python """gpg: GnuPG Interface for Python (GPGME bindings)
Welcome to PyME, the GPGME Interface for Python. "Pyme", when prounced, Welcome to gpg, the GnuPG Interface for Python.
rhymes with "Pine".
The latest release of this package may be obtained from The latest release of this package may be obtained from
https://www.gnupg.org https://www.gnupg.org
Previous releases of this package for Python 2 can be obtained from
http://pyme.sourceforge.net
FEATURES FEATURES
-------- --------
@ -43,23 +39,23 @@ FEATURES
QUICK EXAMPLE QUICK EXAMPLE
------------- -------------
>>> import pyme >>> import gpg
>>> with pyme.Context() as c: >>> with gpg.Context() as c:
>>> with pyme.Context() as c: >>> with gpg.Context() as c:
... cipher, _, _ = c.encrypt("Hello world :)".encode(), ... cipher, _, _ = c.encrypt("Hello world :)".encode(),
... passphrase="abc") ... passphrase="abc")
... c.decrypt(cipher, passphrase="abc") ... c.decrypt(cipher, passphrase="abc")
... ...
(b'Hello world :)', (b'Hello world :)',
<pyme.results.DecryptResult object at 0x7f5ab8121080>, <gpg.results.DecryptResult object at 0x7f5ab8121080>,
<pyme.results.VerifyResult object at 0x7f5ab81219b0>) <gpg.results.VerifyResult object at 0x7f5ab81219b0>)
GENERAL OVERVIEW GENERAL OVERVIEW
---------------- ----------------
For those of you familiar with GPGME, you will be right at home here. For those of you familiar with GPGME, you will be right at home here.
Pyme is, for the most part, a direct interface to the C GPGME The python gpg module is, for the most part, a direct interface to the C GPGME
library. However, it is re-packaged in a more Pythonic way -- library. However, it is re-packaged in a more Pythonic way --
object-oriented with classes and modules. Take a look at the classes object-oriented with classes and modules. Take a look at the classes
defined here -- they correspond directly to certain object types in GPGME defined here -- they correspond directly to certain object types in GPGME
@ -77,7 +73,7 @@ context = core.Context()
context.op_encrypt(recp, 1, plain, cipher) context.op_encrypt(recp, 1, plain, cipher)
The Python module automatically does error-checking and raises Python The Python module automatically does error-checking and raises Python
exception pyme.errors.GPGMEError when GPGME signals an error. getcode() exception gpg.errors.GPGMEError when GPGME signals an error. getcode()
and getsource() of this exception return code and source of the error. and getsource() of this exception return code and source of the error.
IMPORTANT NOTE IMPORTANT NOTE
@ -94,7 +90,7 @@ be found only in GPGME documentation.
FOR MORE INFORMATION FOR MORE INFORMATION
-------------------- --------------------
PYME3 homepage: https://www.gnupg.org/ GnuPG homepage: https://www.gnupg.org/
GPGME documentation: https://www.gnupg.org/documentation/manuals/gpgme/ GPGME documentation: https://www.gnupg.org/documentation/manuals/gpgme/
""" """

View File

@ -2,14 +2,14 @@
from __future__ import absolute_import, print_function, unicode_literals from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
from pyme import util from gpg import util
util.process_constants('GPGME_', globals()) util.process_constants('GPGME_', globals())
__all__ = ['data', 'event', 'import', 'keylist', 'md', 'pk', __all__ = ['data', 'event', 'import', 'keylist', 'md', 'pk',
'protocol', 'sig', 'sigsum', 'status', 'validity'] 'protocol', 'sig', 'sigsum', 'status', 'validity']
# GPGME 1.7 replaced gpgme_op_edit with gpgme_op_interact. We # GPGME 1.7 replaced gpgme_op_edit with gpgme_op_interact. We
# implement pyme.Context.op_edit using gpgme_op_interact, so the # implement gpg.Context.op_edit using gpgme_op_interact, so the
# callbacks will be called with string keywords instead of numeric # callbacks will be called with string keywords instead of numeric
# status messages. Code that is using these constants will continue # status messages. Code that is using these constants will continue
# to work. # to work.

View File

@ -18,5 +18,5 @@
from __future__ import absolute_import, print_function, unicode_literals from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
from pyme import util from gpg import util
util.process_constants('GPGME_DATA_ENCODING_', globals()) util.process_constants('GPGME_DATA_ENCODING_', globals())

View File

@ -18,5 +18,5 @@
from __future__ import absolute_import, print_function, unicode_literals from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
from pyme import util from gpg import util
util.process_constants('GPGME_EVENT_', globals()) util.process_constants('GPGME_EVENT_', globals())

View File

@ -18,5 +18,5 @@
from __future__ import absolute_import, print_function, unicode_literals from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
from pyme import util from gpg import util
util.process_constants('GPGME_IMPORT_', globals()) util.process_constants('GPGME_IMPORT_', globals())

View File

@ -18,5 +18,5 @@
from __future__ import absolute_import, print_function, unicode_literals from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
from pyme import util from gpg import util
util.process_constants('GPGME_KEYLIST_MODE_', globals()) util.process_constants('GPGME_KEYLIST_MODE_', globals())

View File

@ -18,5 +18,5 @@
from __future__ import absolute_import, print_function, unicode_literals from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
from pyme import util from gpg import util
util.process_constants('GPGME_MD_', globals()) util.process_constants('GPGME_MD_', globals())

View File

@ -18,5 +18,5 @@
from __future__ import absolute_import, print_function, unicode_literals from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
from pyme import util from gpg import util
util.process_constants('GPGME_PK_', globals()) util.process_constants('GPGME_PK_', globals())

View File

@ -18,5 +18,5 @@
from __future__ import absolute_import, print_function, unicode_literals from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
from pyme import util from gpg import util
util.process_constants('GPGME_PROTOCOL_', globals()) util.process_constants('GPGME_PROTOCOL_', globals())

View File

@ -18,5 +18,5 @@
from __future__ import absolute_import, print_function, unicode_literals from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
from pyme import util from gpg import util
util.process_constants('GPGME_SIG_MODE_', globals()) util.process_constants('GPGME_SIG_MODE_', globals())

View File

@ -18,5 +18,5 @@
from __future__ import absolute_import, print_function, unicode_literals from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
from pyme import util from gpg import util
util.process_constants('GPGME_SIGSUM_', globals()) util.process_constants('GPGME_SIGSUM_', globals())

View File

@ -19,7 +19,7 @@ from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
# GPGME 1.7 replaced gpgme_op_edit with gpgme_op_interact. We # GPGME 1.7 replaced gpgme_op_edit with gpgme_op_interact. We
# implement pyme.Context.op_edit using gpgme_op_interact, so the # implement gpg.Context.op_edit using gpgme_op_interact, so the
# callbacks will be called with string keywords instead of numeric # callbacks will be called with string keywords instead of numeric
# status messages. Code that is using these constants will continue # status messages. Code that is using these constants will continue
# to work. # to work.

View File

@ -18,5 +18,5 @@
from __future__ import absolute_import, print_function, unicode_literals from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
from pyme import util from gpg import util
util.process_constants('GPGME_VALIDITY_', globals()) util.process_constants('GPGME_VALIDITY_', globals())

View File

@ -131,13 +131,13 @@ class GpgmeWrapper(object):
def _funcwrap(slf, *args): def _funcwrap(slf, *args):
result = func(slf.wrapped, *args) result = func(slf.wrapped, *args)
if slf._callback_excinfo: if slf._callback_excinfo:
gpgme.pyme_raise_callback_exception(slf) gpgme.gpg_raise_callback_exception(slf)
return errorcheck(result, "Invocation of " + name) return errorcheck(result, "Invocation of " + name)
else: else:
def _funcwrap(slf, *args): def _funcwrap(slf, *args):
result = func(slf.wrapped, *args) result = func(slf.wrapped, *args)
if slf._callback_excinfo: if slf._callback_excinfo:
gpgme.pyme_raise_callback_exception(slf) gpgme.gpg_raise_callback_exception(slf)
return result return result
doc = self._munge_docstring.sub(r'\2.\1(\3', getattr(func, "__doc__")) doc = self._munge_docstring.sub(r'\2.\1(\3', getattr(func, "__doc__"))
@ -528,7 +528,7 @@ class Context(GpgmeWrapper):
errptr) errptr)
if self._callback_excinfo: if self._callback_excinfo:
gpgme.pyme_raise_callback_exception(self) gpgme.gpg_raise_callback_exception(self)
errorcheck(err) errorcheck(err)
@ -567,7 +567,7 @@ class Context(GpgmeWrapper):
result = gpgme.gpgme_op_interact(self.wrapped, key, flags, result = gpgme.gpgme_op_interact(self.wrapped, key, flags,
opaquedata, sink) opaquedata, sink)
if self._callback_excinfo: if self._callback_excinfo:
gpgme.pyme_raise_callback_exception(self) gpgme.gpg_raise_callback_exception(self)
errorcheck(result) errorcheck(result)
@property @property
@ -743,10 +743,10 @@ class Context(GpgmeWrapper):
hookdata = (weakref.ref(self), func) hookdata = (weakref.ref(self), func)
else: else:
hookdata = (weakref.ref(self), func, hook) hookdata = (weakref.ref(self), func, hook)
gpgme.pyme_set_passphrase_cb(self, hookdata) gpgme.gpg_set_passphrase_cb(self, hookdata)
def _free_passcb(self): def _free_passcb(self):
if gpgme.pyme_set_passphrase_cb: if gpgme.gpg_set_passphrase_cb:
self.set_passphrase_cb(None) self.set_passphrase_cb(None)
def set_progress_cb(self, func, hook=None): def set_progress_cb(self, func, hook=None):
@ -768,10 +768,10 @@ class Context(GpgmeWrapper):
hookdata = (weakref.ref(self), func) hookdata = (weakref.ref(self), func)
else: else:
hookdata = (weakref.ref(self), func, hook) hookdata = (weakref.ref(self), func, hook)
gpgme.pyme_set_progress_cb(self, hookdata) gpgme.gpg_set_progress_cb(self, hookdata)
def _free_progresscb(self): def _free_progresscb(self):
if gpgme.pyme_set_progress_cb: if gpgme.gpg_set_progress_cb:
self.set_progress_cb(None) self.set_progress_cb(None)
def set_status_cb(self, func, hook=None): def set_status_cb(self, func, hook=None):
@ -792,10 +792,10 @@ class Context(GpgmeWrapper):
hookdata = (weakref.ref(self), func) hookdata = (weakref.ref(self), func)
else: else:
hookdata = (weakref.ref(self), func, hook) hookdata = (weakref.ref(self), func, hook)
gpgme.pyme_set_status_cb(self, hookdata) gpgme.gpg_set_status_cb(self, hookdata)
def _free_statuscb(self): def _free_statuscb(self):
if gpgme.pyme_set_status_cb: if gpgme.gpg_set_status_cb:
self.set_status_cb(None) self.set_status_cb(None)
@property @property
@ -958,7 +958,7 @@ class Data(GpgmeWrapper):
if self.wrapped != None and gpgme.gpgme_data_release: if self.wrapped != None and gpgme.gpgme_data_release:
gpgme.gpgme_data_release(self.wrapped) gpgme.gpgme_data_release(self.wrapped)
if self._callback_excinfo: if self._callback_excinfo:
gpgme.pyme_raise_callback_exception(self) gpgme.gpg_raise_callback_exception(self)
self.wrapped = None self.wrapped = None
self._free_datacbs() self._free_datacbs()
@ -1003,7 +1003,7 @@ class Data(GpgmeWrapper):
else: else:
hookdata = (weakref.ref(self), hookdata = (weakref.ref(self),
read_cb, write_cb, seek_cb, release_cb) read_cb, write_cb, seek_cb, release_cb)
gpgme.pyme_data_new_from_cbs(self, hookdata, tmp) gpgme.gpg_data_new_from_cbs(self, hookdata, tmp)
self.wrapped = gpgme.gpgme_data_t_p_value(tmp) self.wrapped = gpgme.gpgme_data_t_p_value(tmp)
gpgme.delete_gpgme_data_t_p(tmp) gpgme.delete_gpgme_data_t_p(tmp)
@ -1057,7 +1057,7 @@ class Data(GpgmeWrapper):
written = gpgme.gpgme_data_write(self.wrapped, buffer) written = gpgme.gpgme_data_write(self.wrapped, buffer)
if written < 0: if written < 0:
if self._callback_excinfo: if self._callback_excinfo:
gpgme.pyme_raise_callback_exception(self) gpgme.gpg_raise_callback_exception(self)
else: else:
raise GPGMEError.fromSyserror() raise GPGMEError.fromSyserror()
return written return written
@ -1078,7 +1078,7 @@ class Data(GpgmeWrapper):
result = gpgme.gpgme_data_read(self.wrapped, size) result = gpgme.gpgme_data_read(self.wrapped, size)
except: except:
if self._callback_excinfo: if self._callback_excinfo:
gpgme.pyme_raise_callback_exception(self) gpgme.gpg_raise_callback_exception(self)
else: else:
raise raise
return result return result
@ -1089,7 +1089,7 @@ class Data(GpgmeWrapper):
result = gpgme.gpgme_data_read(self.wrapped, 4096) result = gpgme.gpgme_data_read(self.wrapped, 4096)
except: except:
if self._callback_excinfo: if self._callback_excinfo:
gpgme.pyme_raise_callback_exception(self) gpgme.gpg_raise_callback_exception(self)
else: else:
raise raise
if len(result) == 0: if len(result) == 0:

View File

@ -28,10 +28,10 @@ EOF = None
util.process_constants('GPG_ERR_', globals()) util.process_constants('GPG_ERR_', globals())
class PymeError(Exception): class GpgError(Exception):
pass pass
class GPGMEError(PymeError): class GPGMEError(GpgError):
def __init__(self, error = None, message = None): def __init__(self, error = None, message = None):
self.error = error self.error = error
self.message = message self.message = message
@ -76,7 +76,7 @@ class KeyNotFound(GPGMEError, KeyError):
# These errors are raised in the idiomatic interface code. # These errors are raised in the idiomatic interface code.
class EncryptionError(PymeError): class EncryptionError(GpgError):
pass pass
class InvalidRecipients(EncryptionError): class InvalidRecipients(EncryptionError):
@ -87,7 +87,7 @@ class InvalidRecipients(EncryptionError):
gpgme.gpgme_strerror(r.reason)) gpgme.gpgme_strerror(r.reason))
for r in self.recipients) for r in self.recipients)
class DeryptionError(PymeError): class DeryptionError(GpgError):
pass pass
class UnsupportedAlgorithm(DeryptionError): class UnsupportedAlgorithm(DeryptionError):
@ -96,7 +96,7 @@ class UnsupportedAlgorithm(DeryptionError):
def __str__(self): def __str__(self):
return self.algorithm return self.algorithm
class SigningError(PymeError): class SigningError(GpgError):
pass pass
class InvalidSigners(SigningError): class InvalidSigners(SigningError):
@ -107,7 +107,7 @@ class InvalidSigners(SigningError):
gpgme.gpgme_strerror(s.reason)) gpgme.gpgme_strerror(s.reason))
for s in self.signers) for s in self.signers)
class VerificationError(PymeError): class VerificationError(GpgError):
pass pass
class BadSignatures(VerificationError): class BadSignatures(VerificationError):

View File

@ -21,10 +21,10 @@ del absolute_import, print_function
from . import gpgme from . import gpgme
productname = 'pyme' productname = 'gpg'
versionstr = "@VERSION@" versionstr = "@VERSION@"
gpgme_versionstr = gpgme.GPGME_VERSION gpgme_versionstr = gpgme.GPGME_VERSION
in_tree_build = bool(gpgme.cvar.pyme_in_tree_build) in_tree_build = bool(gpgme.cvar.gpg_in_tree_build)
versionlist = versionstr.split(".") versionlist = versionstr.split(".")
major = versionlist[0] major = versionlist[0]

View File

@ -159,7 +159,7 @@
$1 = NULL; $1 = NULL;
else { else {
PyObject *pypointer; PyObject *pypointer;
pypointer = _pyme_obj2gpgme_data_t($input, $argnum, &wrapper, pypointer = _gpg_obj2gpgme_data_t($input, $argnum, &wrapper,
&bytesio, &view); &bytesio, &view);
if (pypointer == NULL) if (pypointer == NULL)
return NULL; return NULL;
@ -428,7 +428,7 @@
PyObject *fragile; PyObject *fragile;
fragile = SWIG_NewPointerObj(SWIG_as_voidptr($1), $1_descriptor, fragile = SWIG_NewPointerObj(SWIG_as_voidptr($1), $1_descriptor,
%newpointer_flags); %newpointer_flags);
$result = _pyme_wrap_result(fragile, "EncryptResult"); $result = _gpg_wrap_result(fragile, "EncryptResult");
Py_DECREF(fragile); Py_DECREF(fragile);
} }
@ -436,7 +436,7 @@
PyObject *fragile; PyObject *fragile;
fragile = SWIG_NewPointerObj(SWIG_as_voidptr($1), $1_descriptor, fragile = SWIG_NewPointerObj(SWIG_as_voidptr($1), $1_descriptor,
%newpointer_flags); %newpointer_flags);
$result = _pyme_wrap_result(fragile, "DecryptResult"); $result = _gpg_wrap_result(fragile, "DecryptResult");
Py_DECREF(fragile); Py_DECREF(fragile);
} }
@ -444,7 +444,7 @@
PyObject *fragile; PyObject *fragile;
fragile = SWIG_NewPointerObj(SWIG_as_voidptr($1), $1_descriptor, fragile = SWIG_NewPointerObj(SWIG_as_voidptr($1), $1_descriptor,
%newpointer_flags); %newpointer_flags);
$result = _pyme_wrap_result(fragile, "SignResult"); $result = _gpg_wrap_result(fragile, "SignResult");
Py_DECREF(fragile); Py_DECREF(fragile);
} }
@ -452,7 +452,7 @@
PyObject *fragile; PyObject *fragile;
fragile = SWIG_NewPointerObj(SWIG_as_voidptr($1), $1_descriptor, fragile = SWIG_NewPointerObj(SWIG_as_voidptr($1), $1_descriptor,
%newpointer_flags); %newpointer_flags);
$result = _pyme_wrap_result(fragile, "VerifyResult"); $result = _gpg_wrap_result(fragile, "VerifyResult");
Py_DECREF(fragile); Py_DECREF(fragile);
} }
@ -460,7 +460,7 @@
PyObject *fragile; PyObject *fragile;
fragile = SWIG_NewPointerObj(SWIG_as_voidptr($1), $1_descriptor, fragile = SWIG_NewPointerObj(SWIG_as_voidptr($1), $1_descriptor,
%newpointer_flags); %newpointer_flags);
$result = _pyme_wrap_result(fragile, "ImportResult"); $result = _gpg_wrap_result(fragile, "ImportResult");
Py_DECREF(fragile); Py_DECREF(fragile);
} }
@ -468,7 +468,7 @@
PyObject *fragile; PyObject *fragile;
fragile = SWIG_NewPointerObj(SWIG_as_voidptr($1), $1_descriptor, fragile = SWIG_NewPointerObj(SWIG_as_voidptr($1), $1_descriptor,
%newpointer_flags); %newpointer_flags);
$result = _pyme_wrap_result(fragile, "GenkeyResult"); $result = _gpg_wrap_result(fragile, "GenkeyResult");
Py_DECREF(fragile); Py_DECREF(fragile);
} }
@ -476,7 +476,7 @@
PyObject *fragile; PyObject *fragile;
fragile = SWIG_NewPointerObj(SWIG_as_voidptr($1), $1_descriptor, fragile = SWIG_NewPointerObj(SWIG_as_voidptr($1), $1_descriptor,
%newpointer_flags); %newpointer_flags);
$result = _pyme_wrap_result(fragile, "KeylistResult"); $result = _gpg_wrap_result(fragile, "KeylistResult");
Py_DECREF(fragile); Py_DECREF(fragile);
} }
@ -484,7 +484,7 @@
PyObject *fragile; PyObject *fragile;
fragile = SWIG_NewPointerObj(SWIG_as_voidptr($1), $1_descriptor, fragile = SWIG_NewPointerObj(SWIG_as_voidptr($1), $1_descriptor,
%newpointer_flags); %newpointer_flags);
$result = _pyme_wrap_result(fragile, "VFSMountResult"); $result = _gpg_wrap_result(fragile, "VFSMountResult");
Py_DECREF(fragile); Py_DECREF(fragile);
} }
@ -507,7 +507,7 @@
Py_DECREF($result); Py_DECREF($result);
return NULL; /* raise */ return NULL; /* raise */
} }
o = _pyme_wrap_result(fragile, "EngineInfo"); o = _gpg_wrap_result(fragile, "EngineInfo");
Py_DECREF(fragile); Py_DECREF(fragile);
if (o == NULL) if (o == NULL)
{ {
@ -528,7 +528,7 @@
return PyErr_Format(PyExc_TypeError, return PyErr_Format(PyExc_TypeError,
"interact callback must be a tuple of size 2 or 3"); "interact callback must be a tuple of size 2 or 3");
$1 = (gpgme_interact_cb_t) _pyme_interact_cb; $1 = (gpgme_interact_cb_t) _gpg_interact_cb;
$2 = $input; $2 = $input;
} }
@ -547,7 +547,7 @@
"callback must be a tuple of size 2"); "callback must be a tuple of size 2");
if (! PyCallable_Check(PyTuple_GetItem($input, 1))) if (! PyCallable_Check(PyTuple_GetItem($input, 1)))
return PyErr_Format(PyExc_TypeError, "second item must be callable"); return PyErr_Format(PyExc_TypeError, "second item must be callable");
$1 = _pyme_assuan_data_cb; $1 = _gpg_assuan_data_cb;
$2 = $input; $2 = $input;
} }
} }
@ -564,7 +564,7 @@
"callback must be a tuple of size 2"); "callback must be a tuple of size 2");
if (! PyCallable_Check(PyTuple_GetItem($input, 1))) if (! PyCallable_Check(PyTuple_GetItem($input, 1)))
return PyErr_Format(PyExc_TypeError, "second item must be callable"); return PyErr_Format(PyExc_TypeError, "second item must be callable");
$1 = _pyme_assuan_inquire_cb; $1 = _gpg_assuan_inquire_cb;
$2 = $input; $2 = $input;
} }
} }
@ -581,7 +581,7 @@
"callback must be a tuple of size 2"); "callback must be a tuple of size 2");
if (! PyCallable_Check(PyTuple_GetItem($input, 1))) if (! PyCallable_Check(PyTuple_GetItem($input, 1)))
return PyErr_Format(PyExc_TypeError, "second item must be callable"); return PyErr_Format(PyExc_TypeError, "second item must be callable");
$1 = _pyme_assuan_status_cb; $1 = _gpg_assuan_status_cb;
$2 = $input; $2 = $input;
} }
} }
@ -654,13 +654,13 @@ FILE *fdopen(int fildes, const char *mode);
/* SWIG runtime support for helpers.c */ /* SWIG runtime support for helpers.c */
PyObject * PyObject *
_pyme_wrap_gpgme_data_t(gpgme_data_t data) _gpg_wrap_gpgme_data_t(gpgme_data_t data)
{ {
return SWIG_Python_NewPointerObj(NULL, data, SWIGTYPE_p_gpgme_data, 0); return SWIG_Python_NewPointerObj(NULL, data, SWIGTYPE_p_gpgme_data, 0);
} }
gpgme_ctx_t gpgme_ctx_t
_pyme_unwrap_gpgme_ctx_t(PyObject *wrapped) _gpg_unwrap_gpgme_ctx_t(PyObject *wrapped)
{ {
gpgme_ctx_t result; gpgme_ctx_t result;
if (SWIG_ConvertPtr(wrapped, if (SWIG_ConvertPtr(wrapped,

View File

@ -33,7 +33,7 @@
#include "private.h" #include "private.h"
/* Flag specifying whether this is an in-tree build. */ /* Flag specifying whether this is an in-tree build. */
int pyme_in_tree_build = int gpg_in_tree_build =
#if IN_TREE_BUILD #if IN_TREE_BUILD
1 1
#else #else
@ -43,7 +43,7 @@ int pyme_in_tree_build =
static PyObject *GPGMEError = NULL; static PyObject *GPGMEError = NULL;
void _pyme_exception_init(void) { void _gpg_exception_init(void) {
if (GPGMEError == NULL) { if (GPGMEError == NULL) {
PyObject *errors; PyObject *errors;
PyObject *from_list = PyList_New(0); PyObject *from_list = PyList_New(0);
@ -58,11 +58,11 @@ void _pyme_exception_init(void) {
} }
static PyObject * static PyObject *
_pyme_raise_exception(gpgme_error_t err) _gpg_raise_exception(gpgme_error_t err)
{ {
PyObject *e; PyObject *e;
_pyme_exception_init(); _gpg_exception_init();
if (GPGMEError == NULL) if (GPGMEError == NULL)
return PyErr_Format(PyExc_RuntimeError, "Got gpgme_error_t %d", err); return PyErr_Format(PyExc_RuntimeError, "Got gpgme_error_t %d", err);
@ -76,7 +76,7 @@ _pyme_raise_exception(gpgme_error_t err)
return NULL; /* raise */ return NULL; /* raise */
} }
gpgme_error_t _pyme_exception2code(void) { gpgme_error_t _gpg_exception2code(void) {
gpgme_error_t err_status = gpg_error(GPG_ERR_GENERAL); gpgme_error_t err_status = gpg_error(GPG_ERR_GENERAL);
if (GPGMEError && PyErr_ExceptionMatches(GPGMEError)) { if (GPGMEError && PyErr_ExceptionMatches(GPGMEError)) {
PyObject *type = 0, *value = 0, *traceback = 0; PyObject *type = 0, *value = 0, *traceback = 0;
@ -94,7 +94,7 @@ gpgme_error_t _pyme_exception2code(void) {
/* Exception support for callbacks. */ /* Exception support for callbacks. */
#define EXCINFO "_callback_excinfo" #define EXCINFO "_callback_excinfo"
static void _pyme_stash_callback_exception(PyObject *weak_self) static void _gpg_stash_callback_exception(PyObject *weak_self)
{ {
PyObject *self, *ptype, *pvalue, *ptraceback, *excinfo; PyObject *self, *ptype, *pvalue, *ptraceback, *excinfo;
@ -136,7 +136,7 @@ static void _pyme_stash_callback_exception(PyObject *weak_self)
Py_DECREF(excinfo); Py_DECREF(excinfo);
} }
PyObject *pyme_raise_callback_exception(PyObject *self) PyObject *gpg_raise_callback_exception(PyObject *self)
{ {
PyGILState_STATE state = PyGILState_Ensure(); PyGILState_STATE state = PyGILState_Ensure();
PyObject *ptype, *pvalue, *ptraceback, *excinfo; PyObject *ptype, *pvalue, *ptraceback, *excinfo;
@ -192,7 +192,7 @@ PyObject *pyme_raise_callback_exception(PyObject *self)
/* Convert object to a pointer to gpgme type, generic version. */ /* Convert object to a pointer to gpgme type, generic version. */
PyObject * PyObject *
_pyme_obj2gpgme_t(PyObject *input, const char *objtype, int argnum) _gpg_obj2gpgme_t(PyObject *input, const char *objtype, int argnum)
{ {
PyObject *pyname = NULL, *pypointer = NULL; PyObject *pyname = NULL, *pypointer = NULL;
pyname = PyObject_GetAttrString(input, "_ctype"); pyname = PyObject_GetAttrString(input, "_ctype");
@ -229,7 +229,7 @@ _pyme_obj2gpgme_t(PyObject *input, const char *objtype, int argnum)
objects with a fileno method, returning it in WRAPPER. This object objects with a fileno method, returning it in WRAPPER. This object
must be de-referenced when no longer needed. */ must be de-referenced when no longer needed. */
PyObject * PyObject *
_pyme_obj2gpgme_data_t(PyObject *input, int argnum, gpgme_data_t *wrapper, _gpg_obj2gpgme_data_t(PyObject *input, int argnum, gpgme_data_t *wrapper,
PyObject **bytesio, Py_buffer *view) PyObject **bytesio, Py_buffer *view)
{ {
gpgme_error_t err; gpgme_error_t err;
@ -242,9 +242,9 @@ _pyme_obj2gpgme_data_t(PyObject *input, int argnum, gpgme_data_t *wrapper,
err = gpgme_data_new_from_fd(wrapper, (int) PyLong_AsLong(fd)); err = gpgme_data_new_from_fd(wrapper, (int) PyLong_AsLong(fd));
Py_DECREF(fd); Py_DECREF(fd);
if (err) if (err)
return _pyme_raise_exception (err); return _gpg_raise_exception (err);
return _pyme_wrap_gpgme_data_t(*wrapper); return _gpg_wrap_gpgme_data_t(*wrapper);
} }
else else
PyErr_Clear(); PyErr_Clear();
@ -283,17 +283,17 @@ _pyme_obj2gpgme_data_t(PyObject *input, int argnum, gpgme_data_t *wrapper,
err = gpgme_data_new_from_mem(wrapper, view->buf, (size_t) view->len, 0); err = gpgme_data_new_from_mem(wrapper, view->buf, (size_t) view->len, 0);
if (err) if (err)
return _pyme_raise_exception (err); return _gpg_raise_exception (err);
return _pyme_wrap_gpgme_data_t(*wrapper); return _gpg_wrap_gpgme_data_t(*wrapper);
} }
/* As last resort we assume it is a wrapped data object. */ /* As last resort we assume it is a wrapped data object. */
if (PyObject_HasAttrString(data, "_ctype")) if (PyObject_HasAttrString(data, "_ctype"))
return _pyme_obj2gpgme_t(data, "gpgme_data_t", argnum); return _gpg_obj2gpgme_t(data, "gpgme_data_t", argnum);
return PyErr_Format(PyExc_TypeError, return PyErr_Format(PyExc_TypeError,
"arg %d: expected pyme.Data, file, or an object " "arg %d: expected gpg.Data, file, or an object "
"implementing the buffer protocol, got %s", "implementing the buffer protocol, got %s",
argnum, data->ob_type->tp_name); argnum, data->ob_type->tp_name);
} }
@ -301,7 +301,7 @@ _pyme_obj2gpgme_data_t(PyObject *input, int argnum, gpgme_data_t *wrapper,
PyObject * PyObject *
_pyme_wrap_result(PyObject *fragile, const char *classname) _gpg_wrap_result(PyObject *fragile, const char *classname)
{ {
static PyObject *results; static PyObject *results;
PyObject *class; PyObject *class;
@ -348,7 +348,7 @@ static gpgme_error_t pyPassphraseCb(void *hook,
PyObject *encoded = NULL; PyObject *encoded = NULL;
gpgme_error_t err_status = 0; gpgme_error_t err_status = 0;
_pyme_exception_init(); _gpg_exception_init();
assert (PyTuple_Check(pyhook)); assert (PyTuple_Check(pyhook));
assert (PyTuple_Size(pyhook) == 2 || PyTuple_Size(pyhook) == 3); assert (PyTuple_Size(pyhook) == 2 || PyTuple_Size(pyhook) == 3);
@ -385,12 +385,12 @@ static gpgme_error_t pyPassphraseCb(void *hook,
retval = PyObject_CallObject(func, args); retval = PyObject_CallObject(func, args);
Py_DECREF(args); Py_DECREF(args);
if (PyErr_Occurred()) { if (PyErr_Occurred()) {
err_status = _pyme_exception2code(); err_status = _gpg_exception2code();
} else { } else {
if (!retval) { if (!retval) {
if (write(fd, "\n", 1) < 0) { if (write(fd, "\n", 1) < 0) {
err_status = gpgme_error_from_syserror (); err_status = gpgme_error_from_syserror ();
_pyme_raise_exception (err_status); _gpg_raise_exception (err_status);
} }
} else { } else {
char *buf; char *buf;
@ -425,11 +425,11 @@ static gpgme_error_t pyPassphraseCb(void *hook,
if (write(fd, buf, len) < 0) { if (write(fd, buf, len) < 0) {
err_status = gpgme_error_from_syserror (); err_status = gpgme_error_from_syserror ();
_pyme_raise_exception (err_status); _gpg_raise_exception (err_status);
} }
if (! err_status && write(fd, "\n", 1) < 0) { if (! err_status && write(fd, "\n", 1) < 0) {
err_status = gpgme_error_from_syserror (); err_status = gpgme_error_from_syserror ();
_pyme_raise_exception (err_status); _gpg_raise_exception (err_status);
} }
Py_DECREF(retval); Py_DECREF(retval);
@ -438,7 +438,7 @@ static gpgme_error_t pyPassphraseCb(void *hook,
leave: leave:
if (err_status) if (err_status)
_pyme_stash_callback_exception(self); _gpg_stash_callback_exception(self);
Py_XDECREF(encoded); Py_XDECREF(encoded);
PyGILState_Release(state); PyGILState_Release(state);
@ -446,7 +446,7 @@ static gpgme_error_t pyPassphraseCb(void *hook,
} }
PyObject * PyObject *
pyme_set_passphrase_cb(PyObject *self, PyObject *cb) { gpg_set_passphrase_cb(PyObject *self, PyObject *cb) {
PyGILState_STATE state = PyGILState_Ensure(); PyGILState_STATE state = PyGILState_Ensure();
PyObject *wrapped; PyObject *wrapped;
gpgme_ctx_t ctx; gpgme_ctx_t ctx;
@ -459,7 +459,7 @@ pyme_set_passphrase_cb(PyObject *self, PyObject *cb) {
return NULL; return NULL;
} }
ctx = _pyme_unwrap_gpgme_ctx_t(wrapped); ctx = _gpg_unwrap_gpgme_ctx_t(wrapped);
Py_DECREF(wrapped); Py_DECREF(wrapped);
if (ctx == NULL) if (ctx == NULL)
{ {
@ -512,7 +512,7 @@ static void pyProgressCb(void *hook, const char *what, int type, int current,
PyTuple_SetItem(args, 0, PyUnicode_DecodeUTF8(what, strlen (what), PyTuple_SetItem(args, 0, PyUnicode_DecodeUTF8(what, strlen (what),
"strict")); "strict"));
if (PyErr_Occurred()) { if (PyErr_Occurred()) {
_pyme_stash_callback_exception(self); _gpg_stash_callback_exception(self);
Py_DECREF(args); Py_DECREF(args);
PyGILState_Release(state); PyGILState_Release(state);
return; return;
@ -527,14 +527,14 @@ static void pyProgressCb(void *hook, const char *what, int type, int current,
retval = PyObject_CallObject(func, args); retval = PyObject_CallObject(func, args);
if (PyErr_Occurred()) if (PyErr_Occurred())
_pyme_stash_callback_exception(self); _gpg_stash_callback_exception(self);
Py_DECREF(args); Py_DECREF(args);
Py_XDECREF(retval); Py_XDECREF(retval);
PyGILState_Release(state); PyGILState_Release(state);
} }
PyObject * PyObject *
pyme_set_progress_cb(PyObject *self, PyObject *cb) { gpg_set_progress_cb(PyObject *self, PyObject *cb) {
PyGILState_STATE state = PyGILState_Ensure(); PyGILState_STATE state = PyGILState_Ensure();
PyObject *wrapped; PyObject *wrapped;
gpgme_ctx_t ctx; gpgme_ctx_t ctx;
@ -547,7 +547,7 @@ pyme_set_progress_cb(PyObject *self, PyObject *cb) {
return NULL; return NULL;
} }
ctx = _pyme_unwrap_gpgme_ctx_t(wrapped); ctx = _gpg_unwrap_gpgme_ctx_t(wrapped);
Py_DECREF(wrapped); Py_DECREF(wrapped);
if (ctx == NULL) if (ctx == NULL)
{ {
@ -624,19 +624,19 @@ static gpgme_error_t pyStatusCb(void *hook, const char *keyword,
retval = PyObject_CallObject(func, pyargs); retval = PyObject_CallObject(func, pyargs);
if (PyErr_Occurred()) if (PyErr_Occurred())
err = _pyme_exception2code(); err = _gpg_exception2code();
Py_DECREF(pyargs); Py_DECREF(pyargs);
Py_XDECREF(retval); Py_XDECREF(retval);
leave: leave:
if (err) if (err)
_pyme_stash_callback_exception(self); _gpg_stash_callback_exception(self);
PyGILState_Release(state); PyGILState_Release(state);
return err; return err;
} }
PyObject * PyObject *
pyme_set_status_cb(PyObject *self, PyObject *cb) { gpg_set_status_cb(PyObject *self, PyObject *cb) {
PyGILState_STATE state = PyGILState_Ensure(); PyGILState_STATE state = PyGILState_Ensure();
PyObject *wrapped; PyObject *wrapped;
gpgme_ctx_t ctx; gpgme_ctx_t ctx;
@ -649,7 +649,7 @@ pyme_set_status_cb(PyObject *self, PyObject *cb) {
return NULL; return NULL;
} }
ctx = _pyme_unwrap_gpgme_ctx_t(wrapped); ctx = _gpg_unwrap_gpgme_ctx_t(wrapped);
Py_DECREF(wrapped); Py_DECREF(wrapped);
if (ctx == NULL) if (ctx == NULL)
{ {
@ -684,7 +684,7 @@ pyme_set_status_cb(PyObject *self, PyObject *cb) {
/* Interact callbacks. */ /* Interact callbacks. */
gpgme_error_t gpgme_error_t
_pyme_interact_cb(void *opaque, const char *keyword, _gpg_interact_cb(void *opaque, const char *keyword,
const char *args, int fd) const char *args, int fd)
{ {
PyGILState_STATE state = PyGILState_Ensure(); PyGILState_STATE state = PyGILState_Ensure();
@ -694,7 +694,7 @@ _pyme_interact_cb(void *opaque, const char *keyword,
gpgme_error_t err_status = 0; gpgme_error_t err_status = 0;
PyObject *self = NULL; PyObject *self = NULL;
_pyme_exception_init(); _gpg_exception_init();
assert (PyTuple_Check(pyopaque)); assert (PyTuple_Check(pyopaque));
assert (PyTuple_Size(pyopaque) == 2 || PyTuple_Size(pyopaque) == 3); assert (PyTuple_Size(pyopaque) == 2 || PyTuple_Size(pyopaque) == 3);
@ -725,7 +725,7 @@ _pyme_interact_cb(void *opaque, const char *keyword,
retval = PyObject_CallObject(func, pyargs); retval = PyObject_CallObject(func, pyargs);
Py_DECREF(pyargs); Py_DECREF(pyargs);
if (PyErr_Occurred()) { if (PyErr_Occurred()) {
err_status = _pyme_exception2code(); err_status = _gpg_exception2code();
} else { } else {
if (fd>=0 && retval && PyUnicode_Check(retval)) { if (fd>=0 && retval && PyUnicode_Check(retval)) {
PyObject *encoded = NULL; PyObject *encoded = NULL;
@ -747,18 +747,18 @@ _pyme_interact_cb(void *opaque, const char *keyword,
if (write(fd, buffer, size) < 0) { if (write(fd, buffer, size) < 0) {
err_status = gpgme_error_from_syserror (); err_status = gpgme_error_from_syserror ();
_pyme_raise_exception (err_status); _gpg_raise_exception (err_status);
} }
if (! err_status && write(fd, "\n", 1) < 0) { if (! err_status && write(fd, "\n", 1) < 0) {
err_status = gpgme_error_from_syserror (); err_status = gpgme_error_from_syserror ();
_pyme_raise_exception (err_status); _gpg_raise_exception (err_status);
} }
Py_DECREF(encoded); Py_DECREF(encoded);
} }
} }
leave: leave:
if (err_status) if (err_status)
_pyme_stash_callback_exception(self); _gpg_stash_callback_exception(self);
Py_XDECREF(retval); Py_XDECREF(retval);
PyGILState_Release(state); PyGILState_Release(state);
@ -804,7 +804,7 @@ static ssize_t pyDataReadCb(void *hook, void *buffer, size_t size)
retval = PyObject_CallObject(func, pyargs); retval = PyObject_CallObject(func, pyargs);
Py_DECREF(pyargs); Py_DECREF(pyargs);
if (PyErr_Occurred()) { if (PyErr_Occurred()) {
_pyme_stash_callback_exception(self); _gpg_stash_callback_exception(self);
result = -1; result = -1;
goto leave; goto leave;
} }
@ -813,7 +813,7 @@ static ssize_t pyDataReadCb(void *hook, void *buffer, size_t size)
PyErr_Format(PyExc_TypeError, PyErr_Format(PyExc_TypeError,
"expected bytes from read callback, got %s", "expected bytes from read callback, got %s",
retval->ob_type->tp_name); retval->ob_type->tp_name);
_pyme_stash_callback_exception(self); _gpg_stash_callback_exception(self);
result = -1; result = -1;
goto leave; goto leave;
} }
@ -822,7 +822,7 @@ static ssize_t pyDataReadCb(void *hook, void *buffer, size_t size)
PyErr_Format(PyExc_TypeError, PyErr_Format(PyExc_TypeError,
"expected %zu bytes from read callback, got %zu", "expected %zu bytes from read callback, got %zu",
size, PyBytes_Size(retval)); size, PyBytes_Size(retval));
_pyme_stash_callback_exception(self); _gpg_stash_callback_exception(self);
result = -1; result = -1;
goto leave; goto leave;
} }
@ -871,7 +871,7 @@ static ssize_t pyDataWriteCb(void *hook, const void *buffer, size_t size)
retval = PyObject_CallObject(func, pyargs); retval = PyObject_CallObject(func, pyargs);
Py_DECREF(pyargs); Py_DECREF(pyargs);
if (PyErr_Occurred()) { if (PyErr_Occurred()) {
_pyme_stash_callback_exception(self); _gpg_stash_callback_exception(self);
result = -1; result = -1;
goto leave; goto leave;
} }
@ -887,7 +887,7 @@ static ssize_t pyDataWriteCb(void *hook, const void *buffer, size_t size)
PyErr_Format(PyExc_TypeError, PyErr_Format(PyExc_TypeError,
"expected int from write callback, got %s", "expected int from write callback, got %s",
retval->ob_type->tp_name); retval->ob_type->tp_name);
_pyme_stash_callback_exception(self); _gpg_stash_callback_exception(self);
result = -1; result = -1;
} }
@ -938,7 +938,7 @@ static off_t pyDataSeekCb(void *hook, off_t offset, int whence)
retval = PyObject_CallObject(func, pyargs); retval = PyObject_CallObject(func, pyargs);
Py_DECREF(pyargs); Py_DECREF(pyargs);
if (PyErr_Occurred()) { if (PyErr_Occurred()) {
_pyme_stash_callback_exception(self); _gpg_stash_callback_exception(self);
result = -1; result = -1;
goto leave; goto leave;
} }
@ -958,7 +958,7 @@ static off_t pyDataSeekCb(void *hook, off_t offset, int whence)
PyErr_Format(PyExc_TypeError, PyErr_Format(PyExc_TypeError,
"expected int from seek callback, got %s", "expected int from seek callback, got %s",
retval->ob_type->tp_name); retval->ob_type->tp_name);
_pyme_stash_callback_exception(self); _gpg_stash_callback_exception(self);
result = -1; result = -1;
} }
@ -1000,12 +1000,12 @@ static void pyDataReleaseCb(void *hook)
Py_XDECREF(retval); Py_XDECREF(retval);
Py_DECREF(pyargs); Py_DECREF(pyargs);
if (PyErr_Occurred()) if (PyErr_Occurred())
_pyme_stash_callback_exception(self); _gpg_stash_callback_exception(self);
PyGILState_Release(state); PyGILState_Release(state);
} }
PyObject * PyObject *
pyme_data_new_from_cbs(PyObject *self, gpg_data_new_from_cbs(PyObject *self,
PyObject *pycbs, PyObject *pycbs,
gpgme_data_t *r_data) gpgme_data_t *r_data)
{ {
@ -1026,7 +1026,7 @@ pyme_data_new_from_cbs(PyObject *self,
err = gpgme_data_new_from_cbs(r_data, &cbs, (void *) pycbs); err = gpgme_data_new_from_cbs(r_data, &cbs, (void *) pycbs);
if (err) if (err)
return _pyme_raise_exception(err); return _gpg_raise_exception(err);
PyObject_SetAttrString(self, "_data_cbs", pycbs); PyObject_SetAttrString(self, "_data_cbs", pycbs);
@ -1040,7 +1040,7 @@ pyme_data_new_from_cbs(PyObject *self,
/* The assuan callbacks. */ /* The assuan callbacks. */
gpgme_error_t gpgme_error_t
_pyme_assuan_data_cb (void *hook, const void *data, size_t datalen) _gpg_assuan_data_cb (void *hook, const void *data, size_t datalen)
{ {
PyGILState_STATE state = PyGILState_Ensure(); PyGILState_STATE state = PyGILState_Ensure();
gpgme_error_t err = 0; gpgme_error_t err = 0;
@ -1059,25 +1059,25 @@ _pyme_assuan_data_cb (void *hook, const void *data, size_t datalen)
py_data = PyBytes_FromStringAndSize(data, datalen); py_data = PyBytes_FromStringAndSize(data, datalen);
if (py_data == NULL) if (py_data == NULL)
{ {
err = _pyme_exception2code(); err = _gpg_exception2code();
goto leave; goto leave;
} }
retval = PyObject_CallFunctionObjArgs(func, py_data, NULL); retval = PyObject_CallFunctionObjArgs(func, py_data, NULL);
if (PyErr_Occurred()) if (PyErr_Occurred())
err = _pyme_exception2code(); err = _gpg_exception2code();
Py_DECREF(py_data); Py_DECREF(py_data);
Py_XDECREF(retval); Py_XDECREF(retval);
leave: leave:
if (err) if (err)
_pyme_stash_callback_exception(self); _gpg_stash_callback_exception(self);
PyGILState_Release(state); PyGILState_Release(state);
return err; return err;
} }
gpgme_error_t gpgme_error_t
_pyme_assuan_inquire_cb (void *hook, const char *name, const char *args, _gpg_assuan_inquire_cb (void *hook, const char *name, const char *args,
gpgme_data_t *r_data) gpgme_data_t *r_data)
{ {
PyGILState_STATE state = PyGILState_Ensure(); PyGILState_STATE state = PyGILState_Ensure();
@ -1098,20 +1098,20 @@ _pyme_assuan_inquire_cb (void *hook, const char *name, const char *args,
py_name = PyUnicode_FromString(name); py_name = PyUnicode_FromString(name);
if (py_name == NULL) if (py_name == NULL)
{ {
err = _pyme_exception2code(); err = _gpg_exception2code();
goto leave; goto leave;
} }
py_args = PyUnicode_FromString(args); py_args = PyUnicode_FromString(args);
if (py_args == NULL) if (py_args == NULL)
{ {
err = _pyme_exception2code(); err = _gpg_exception2code();
goto leave; goto leave;
} }
retval = PyObject_CallFunctionObjArgs(func, py_name, py_args, NULL); retval = PyObject_CallFunctionObjArgs(func, py_name, py_args, NULL);
if (PyErr_Occurred()) if (PyErr_Occurred())
err = _pyme_exception2code(); err = _gpg_exception2code();
Py_XDECREF(retval); Py_XDECREF(retval);
/* FIXME: Returning data is not yet implemented. */ /* FIXME: Returning data is not yet implemented. */
@ -1121,13 +1121,13 @@ _pyme_assuan_inquire_cb (void *hook, const char *name, const char *args,
Py_XDECREF(py_name); Py_XDECREF(py_name);
Py_XDECREF(py_args); Py_XDECREF(py_args);
if (err) if (err)
_pyme_stash_callback_exception(self); _gpg_stash_callback_exception(self);
PyGILState_Release(state); PyGILState_Release(state);
return err; return err;
} }
gpgme_error_t gpgme_error_t
_pyme_assuan_status_cb (void *hook, const char *status, const char *args) _gpg_assuan_status_cb (void *hook, const char *status, const char *args)
{ {
PyGILState_STATE state = PyGILState_Ensure(); PyGILState_STATE state = PyGILState_Ensure();
gpgme_error_t err = 0; gpgme_error_t err = 0;
@ -1147,27 +1147,27 @@ _pyme_assuan_status_cb (void *hook, const char *status, const char *args)
py_status = PyUnicode_FromString(status); py_status = PyUnicode_FromString(status);
if (py_status == NULL) if (py_status == NULL)
{ {
err = _pyme_exception2code(); err = _gpg_exception2code();
goto leave; goto leave;
} }
py_args = PyUnicode_FromString(args); py_args = PyUnicode_FromString(args);
if (py_args == NULL) if (py_args == NULL)
{ {
err = _pyme_exception2code(); err = _gpg_exception2code();
goto leave; goto leave;
} }
retval = PyObject_CallFunctionObjArgs(func, py_status, py_args, NULL); retval = PyObject_CallFunctionObjArgs(func, py_status, py_args, NULL);
if (PyErr_Occurred()) if (PyErr_Occurred())
err = _pyme_exception2code(); err = _gpg_exception2code();
Py_XDECREF(retval); Py_XDECREF(retval);
leave: leave:
Py_XDECREF(py_status); Py_XDECREF(py_status);
Py_XDECREF(py_args); Py_XDECREF(py_args);
if (err) if (err)
_pyme_stash_callback_exception(self); _gpg_stash_callback_exception(self);
PyGILState_Release(state); PyGILState_Release(state);
return err; return err;
} }

View File

@ -31,13 +31,13 @@
#endif #endif
/* Flag specifying whether this is an in-tree build. */ /* Flag specifying whether this is an in-tree build. */
extern int pyme_in_tree_build; extern int gpg_in_tree_build;
PyObject *pyme_raise_callback_exception(PyObject *self); PyObject *gpg_raise_callback_exception(PyObject *self);
PyObject *pyme_set_passphrase_cb(PyObject *self, PyObject *cb); PyObject *gpg_set_passphrase_cb(PyObject *self, PyObject *cb);
PyObject *pyme_set_progress_cb(PyObject *self, PyObject *cb); PyObject *gpg_set_progress_cb(PyObject *self, PyObject *cb);
PyObject *pyme_set_status_cb(PyObject *self, PyObject *cb); PyObject *gpg_set_status_cb(PyObject *self, PyObject *cb);
PyObject *pyme_data_new_from_cbs(PyObject *self, PyObject *pycbs, PyObject *gpg_data_new_from_cbs(PyObject *self, PyObject *pycbs,
gpgme_data_t *r_data); gpgme_data_t *r_data);

View File

@ -19,36 +19,36 @@
#include <gpgme.h> #include <gpgme.h>
#ifndef _PYME_PRIVATE_H_ #ifndef _GPG_PRIVATE_H_
#define _PYME_PRIVATE_H_ #define _GPG_PRIVATE_H_
/* GPGME glue. Implemented in helpers.c. */ /* GPGME glue. Implemented in helpers.c. */
void _pyme_exception_init(void); void _gpg_exception_init(void);
gpgme_error_t _pyme_exception2code(void); gpgme_error_t _gpg_exception2code(void);
PyObject *_pyme_obj2gpgme_t(PyObject *input, const char *objtype, int argnum); PyObject *_gpg_obj2gpgme_t(PyObject *input, const char *objtype, int argnum);
PyObject *_pyme_obj2gpgme_data_t(PyObject *input, int argnum, PyObject *_gpg_obj2gpgme_data_t(PyObject *input, int argnum,
gpgme_data_t *wrapper, gpgme_data_t *wrapper,
PyObject **bytesio, Py_buffer *view); PyObject **bytesio, Py_buffer *view);
PyObject *_pyme_wrap_result(PyObject *fragile, const char *classname); PyObject *_gpg_wrap_result(PyObject *fragile, const char *classname);
gpgme_error_t _pyme_interact_cb(void *opaque, const char *keyword, gpgme_error_t _gpg_interact_cb(void *opaque, const char *keyword,
const char *args, int fd); const char *args, int fd);
gpgme_error_t _pyme_assuan_data_cb (void *hook, gpgme_error_t _gpg_assuan_data_cb (void *hook,
const void *data, size_t datalen); const void *data, size_t datalen);
gpgme_error_t _pyme_assuan_inquire_cb (void *hook, gpgme_error_t _gpg_assuan_inquire_cb (void *hook,
const char *name, const char *args, const char *name, const char *args,
gpgme_data_t *r_data); gpgme_data_t *r_data);
gpgme_error_t _pyme_assuan_status_cb (void *hook, gpgme_error_t _gpg_assuan_status_cb (void *hook,
const char *status, const char *args); const char *status, const char *args);
/* SWIG runtime support. Implemented in gpgme.i. */ /* SWIG runtime support. Implemented in gpgme.i. */
PyObject *_pyme_wrap_gpgme_data_t(gpgme_data_t data); PyObject *_gpg_wrap_gpgme_data_t(gpgme_data_t data);
gpgme_ctx_t _pyme_unwrap_gpgme_ctx_t(PyObject *wrapped); gpgme_ctx_t _gpg_unwrap_gpgme_ctx_t(PyObject *wrapped);
#endif /* _PYME_PRIVATE_H_ */ #endif /* _GPG_PRIVATE_H_ */

View File

@ -23,7 +23,7 @@ import os, os.path, sys
import glob import glob
import subprocess import subprocess
# Out-of-tree build of the pyme3 bindings. # Out-of-tree build of the gpg bindings.
gpg_error_config = ["gpg-error-config"] gpg_error_config = ["gpg-error-config"]
gpgme_config_flags = ["--thread=pthread"] gpgme_config_flags = ["--thread=pthread"]
gpgme_config = ["gpgme-config"] + gpgme_config_flags gpgme_config = ["gpgme-config"] + gpgme_config_flags
@ -88,7 +88,7 @@ if not os.path.exists(gpg_error_h):
glob.glob(os.path.join(gpg_error_prefix, "include", glob.glob(os.path.join(gpg_error_prefix, "include",
"*", "gpg-error.h"))[0] "*", "gpg-error.h"))[0]
print("Building pyme3 using {} and {}.".format(gpgme_h, gpg_error_h)) print("Building python gpg module using {} and {}.".format(gpgme_h, gpg_error_h))
# Cleanup gpgme.h from deprecated functions and typedefs. # Cleanup gpgme.h from deprecated functions and typedefs.
subprocess.check_call([sys.executable, "gpgme-h-clean.py", gpgme_h], subprocess.check_call([sys.executable, "gpgme-h-clean.py", gpgme_h],
@ -152,15 +152,15 @@ class BuildExtFirstHack(build):
self.run_command('build_ext') self.run_command('build_ext')
build.run(self) build.run(self)
swige = Extension("pyme._gpgme", ["gpgme.i", "helpers.c"], swige = Extension("gpg._gpgme", ["gpgme.i", "helpers.c"],
swig_opts = ['-py3', '-builtin', '-threads', swig_opts = ['-py3', '-builtin', '-threads',
'-outdir', 'pyme'] + extra_swig_opts, '-outdir', 'gpg'] + extra_swig_opts,
include_dirs = include_dirs, include_dirs = include_dirs,
define_macros = define_macros, define_macros = define_macros,
library_dirs = library_dirs, library_dirs = library_dirs,
extra_link_args = libs) extra_link_args = libs)
setup(name="pyme3", setup(name="gpg",
cmdclass={'build': BuildExtFirstHack}, cmdclass={'build': BuildExtFirstHack},
version="@VERSION@", version="@VERSION@",
description='Python bindings for GPGME GnuPG cryptography library', description='Python bindings for GPGME GnuPG cryptography library',
@ -170,8 +170,8 @@ setup(name="pyme3",
author_email='gnupg-devel@gnupg.org', author_email='gnupg-devel@gnupg.org',
url='https://www.gnupg.org', url='https://www.gnupg.org',
ext_modules=[swige], ext_modules=[swige],
packages = ['pyme', 'pyme.constants', 'pyme.constants.data', packages = ['gpg', 'gpg.constants', 'gpg.constants.data',
'pyme.constants.keylist', 'pyme.constants.sig'], 'gpg.constants.keylist', 'gpg.constants.sig'],
license="LGPL2.1+ (the library), GPL2+ (tests and examples)", license="LGPL2.1+ (the library), GPL2+ (tests and examples)",
classifiers=[ classifiers=[
'Development Status :: 4 - Beta', 'Development Status :: 4 - Beta',

View File

@ -22,14 +22,14 @@ del absolute_import, print_function, unicode_literals
import os import os
import subprocess import subprocess
import pyme import gpg
import support import support
support.init_gpgme(pyme.constants.PROTOCOL_OpenPGP) support.init_gpgme(gpg.constants.PROTOCOL_OpenPGP)
subprocess.check_call([os.path.join(os.getenv('top_srcdir'), subprocess.check_call([os.path.join(os.getenv('top_srcdir'),
"tests", "start-stop-agent"), "--start"]) "tests", "start-stop-agent"), "--start"])
with pyme.Context() as c: with gpg.Context() as c:
alpha = c.get_key("A0FF4590BB6122EDEF6E3C542D727CC768697734", False) alpha = c.get_key("A0FF4590BB6122EDEF6E3C542D727CC768697734", False)
bob = c.get_key("D695676BDCEDCC2CDD6152BCFE180B1DA9E3B0B2", False) bob = c.get_key("D695676BDCEDCC2CDD6152BCFE180B1DA9E3B0B2", False)

View File

@ -20,7 +20,7 @@ del absolute_import, print_function, unicode_literals
import sys import sys
import os import os
from pyme import core from gpg import core
# known keys # known keys
alpha = "A0FF4590BB6122EDEF6E3C542D727CC768697734" alpha = "A0FF4590BB6122EDEF6E3C542D727CC768697734"

View File

@ -21,7 +21,7 @@ from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
import os import os
from pyme import core, constants from gpg import core, constants
import support import support
support.init_gpgme(constants.PROTOCOL_OpenPGP) support.init_gpgme(constants.PROTOCOL_OpenPGP)
@ -87,7 +87,7 @@ Key-Type: RSA
Key-Length: 1024 Key-Length: 1024
Name-Real: Joe Tester Name-Real: Joe Tester
Name-Comment: with stupid passphrase Name-Comment: with stupid passphrase
Name-Email: joe+pyme@example.org Name-Email: joe+gpg@example.org
Passphrase: Crypt0R0cks Passphrase: Crypt0R0cks
Expire-Date: 2020-12-31 Expire-Date: 2020-12-31
</GnupgKeyParms> </GnupgKeyParms>

View File

@ -23,7 +23,7 @@ del absolute_import, print_function, unicode_literals
import io import io
import os import os
import tempfile import tempfile
from pyme import core from gpg import core
data = core.Data('Hello world!') data = core.Data('Hello world!')
assert data.read() == b'Hello world!' assert data.read() == b'Hello world!'

View File

@ -20,8 +20,8 @@
from __future__ import absolute_import, print_function, unicode_literals from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
import pyme import gpg
from pyme import core, constants, errors from gpg import core, constants, errors
import support import support
def check_verify_result(result, summary, fpr, status): def check_verify_result(result, summary, fpr, status):
@ -55,7 +55,7 @@ check_verify_result(verify_result,
errors.NO_ERROR) errors.NO_ERROR)
# Idiomatic interface. # Idiomatic interface.
with pyme.Context() as c: with gpg.Context() as c:
alpha = c.get_key("A0FF4590BB6122EDEF6E3C542D727CC768697734", False) alpha = c.get_key("A0FF4590BB6122EDEF6E3C542D727CC768697734", False)
bob = c.get_key("D695676BDCEDCC2CDD6152BCFE180B1DA9E3B0B2", False) bob = c.get_key("D695676BDCEDCC2CDD6152BCFE180B1DA9E3B0B2", False)
plaintext, _, verify_result = \ plaintext, _, verify_result = \

View File

@ -20,8 +20,8 @@
from __future__ import absolute_import, print_function, unicode_literals from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
import pyme import gpg
from pyme import core, constants from gpg import core, constants
import support import support
support.init_gpgme(constants.PROTOCOL_OpenPGP) support.init_gpgme(constants.PROTOCOL_OpenPGP)
@ -38,7 +38,7 @@ assert not result.unsupported_algorithm, \
support.print_data(sink) support.print_data(sink)
# Idiomatic interface. # Idiomatic interface.
with pyme.Context() as c: with gpg.Context() as c:
plaintext, _, _ = c.decrypt(open(support.make_filename("cipher-1.asc"))) plaintext, _, _ = c.decrypt(open(support.make_filename("cipher-1.asc")))
assert len(plaintext) > 0 assert len(plaintext) > 0
assert plaintext.find(b'Wenn Sie dies lesen k') >= 0, \ assert plaintext.find(b'Wenn Sie dies lesen k') >= 0, \

View File

@ -23,7 +23,7 @@ del absolute_import, print_function, unicode_literals
import sys import sys
import os import os
from pyme import core, constants from gpg import core, constants
import support import support
class KeyEditor(object): class KeyEditor(object):

View File

@ -22,7 +22,7 @@ del absolute_import, print_function, unicode_literals
import sys import sys
import random import random
from pyme import core, constants from gpg import core, constants
import support import support
if len(sys.argv) == 2: if len(sys.argv) == 2:

View File

@ -21,8 +21,8 @@ from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
import sys import sys
import pyme import gpg
from pyme import core, constants from gpg import core, constants
import support import support
support.init_gpgme(constants.PROTOCOL_OpenPGP) support.init_gpgme(constants.PROTOCOL_OpenPGP)
@ -76,7 +76,7 @@ for recipients in (keys, []):
# Idiomatic interface. # Idiomatic interface.
with pyme.Context(armor=True) as c: with gpg.Context(armor=True) as c:
message = "Hallo Leute\n".encode() message = "Hallo Leute\n".encode()
ciphertext, _, sig_result = c.encrypt(message, ciphertext, _, sig_result = c.encrypt(message,
recipients=keys, recipients=keys,
@ -91,7 +91,7 @@ with pyme.Context(armor=True) as c:
c.signers = [c.get_key(support.encrypt_only, True)] c.signers = [c.get_key(support.encrypt_only, True)]
try: try:
c.encrypt(message, recipients=keys, always_trust=True) c.encrypt(message, recipients=keys, always_trust=True)
except pyme.errors.InvalidSigners as e: except gpg.errors.InvalidSigners as e:
assert len(e.signers) == 1 assert len(e.signers) == 1
assert support.encrypt_only.endswith(e.signers[0].fpr) assert support.encrypt_only.endswith(e.signers[0].fpr)
else: else:

View File

@ -21,8 +21,8 @@ from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
import os import os
import pyme import gpg
from pyme import core, constants from gpg import core, constants
import support import support
support.init_gpgme(constants.PROTOCOL_OpenPGP) support.init_gpgme(constants.PROTOCOL_OpenPGP)
@ -68,7 +68,7 @@ for passphrase in ("abc", b"abc"):
# Idiomatic interface. # Idiomatic interface.
for passphrase in ("abc", b"abc"): for passphrase in ("abc", b"abc"):
with pyme.Context(armor=True) as c: with gpg.Context(armor=True) as c:
# Check that the passphrase callback is not altered. # Check that the passphrase callback is not altered.
def f(*args): def f(*args):
assert False assert False

View File

@ -20,8 +20,8 @@
from __future__ import absolute_import, print_function, unicode_literals from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
import pyme import gpg
from pyme import core, constants from gpg import core, constants
import support import support
support.init_gpgme(constants.PROTOCOL_OpenPGP) support.init_gpgme(constants.PROTOCOL_OpenPGP)
@ -42,7 +42,7 @@ assert not result.invalid_recipients, \
support.print_data(sink) support.print_data(sink)
# Idiomatic interface. # Idiomatic interface.
with pyme.Context(armor=True) as c: with gpg.Context(armor=True) as c:
ciphertext, _, _ = c.encrypt("Hallo Leute\n".encode(), ciphertext, _, _ = c.encrypt("Hallo Leute\n".encode(),
recipients=keys, recipients=keys,
sign=False, sign=False,
@ -58,7 +58,7 @@ with pyme.Context(armor=True) as c:
c.encrypt("Hallo Leute\n".encode(), c.encrypt("Hallo Leute\n".encode(),
recipients=[c.get_key(support.sign_only, False)], recipients=[c.get_key(support.sign_only, False)],
sign=False, always_trust=True) sign=False, always_trust=True)
except pyme.errors.InvalidRecipients as e: except gpg.errors.InvalidRecipients as e:
assert len(e.recipients) == 1 assert len(e.recipients) == 1
assert support.sign_only.endswith(e.recipients[0].fpr) assert support.sign_only.endswith(e.recipients[0].fpr)
else: else:

View File

@ -20,7 +20,7 @@
from __future__ import absolute_import, print_function, unicode_literals from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
from pyme import core, constants from gpg import core, constants
import support import support
support.init_gpgme(constants.PROTOCOL_OpenPGP) support.init_gpgme(constants.PROTOCOL_OpenPGP)

View File

@ -21,7 +21,7 @@ from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
import os import os
from pyme import core, constants from gpg import core, constants
import support import support
testname = "abcde12345" testname = "abcde12345"

View File

@ -24,13 +24,13 @@ import sys
import io import io
import os import os
import tempfile import tempfile
import pyme import gpg
import support import support
support.init_gpgme(pyme.constants.PROTOCOL_OpenPGP) support.init_gpgme(gpg.constants.PROTOCOL_OpenPGP)
# Both Context and Data can be used as context manager: # Both Context and Data can be used as context manager:
with pyme.Context() as c, pyme.Data() as d: with gpg.Context() as c, gpg.Data() as d:
c.get_engine_info() c.get_engine_info()
d.write(b"Halloechen") d.write(b"Halloechen")
leak_c = c leak_c = c
@ -39,17 +39,17 @@ assert leak_c.wrapped == None
assert leak_d.wrapped == None assert leak_d.wrapped == None
def sign_and_verify(source, signed, sink): def sign_and_verify(source, signed, sink):
with pyme.Context() as c: with gpg.Context() as c:
c.op_sign(source, signed, pyme.constants.SIG_MODE_NORMAL) c.op_sign(source, signed, gpg.constants.SIG_MODE_NORMAL)
signed.seek(0, os.SEEK_SET) signed.seek(0, os.SEEK_SET)
c.op_verify(signed, None, sink) c.op_verify(signed, None, sink)
result = c.op_verify_result() result = c.op_verify_result()
assert len(result.signatures) == 1, "Unexpected number of signatures" assert len(result.signatures) == 1, "Unexpected number of signatures"
sig = result.signatures[0] sig = result.signatures[0]
assert sig.summary == (pyme.constants.SIGSUM_VALID | assert sig.summary == (gpg.constants.SIGSUM_VALID |
pyme.constants.SIGSUM_GREEN) gpg.constants.SIGSUM_GREEN)
assert pyme.errors.GPGMEError(sig.status).getcode() == pyme.errors.NO_ERROR assert gpg.errors.GPGMEError(sig.status).getcode() == gpg.errors.NO_ERROR
sink.seek(0, os.SEEK_SET) sink.seek(0, os.SEEK_SET)
assert sink.read() == b"Hallo Leute\n" assert sink.read() == b"Hallo Leute\n"
@ -80,5 +80,5 @@ if sys.version_info[0] == 3:
# Demonstrate automatic wrapping of objects implementing the buffer # Demonstrate automatic wrapping of objects implementing the buffer
# interface, and the use of data objects with the 'with' statement. # interface, and the use of data objects with the 'with' statement.
with io.BytesIO(preallocate) as signed, pyme.Data() as sink: with io.BytesIO(preallocate) as signed, gpg.Data() as sink:
sign_and_verify(b"Hallo Leute\n", signed, sink) sign_and_verify(b"Hallo Leute\n", signed, sink)

View File

@ -20,7 +20,7 @@
from __future__ import absolute_import, print_function, unicode_literals from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
from pyme import core, constants from gpg import core, constants
import support import support
def check_result(result, fpr, secret): def check_result(result, fpr, secret):

View File

@ -20,8 +20,8 @@
from __future__ import absolute_import, print_function, unicode_literals from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
import pyme import gpg
from pyme import core, constants from gpg import core, constants
import support import support
support.init_gpgme(constants.PROTOCOL_OpenPGP) support.init_gpgme(constants.PROTOCOL_OpenPGP)
@ -248,7 +248,7 @@ for i, key in enumerate(c.keylist()):
# check get_key() # check get_key()
with pyme.Context() as c: with gpg.Context() as c:
c.get_key(support.alpha) c.get_key(support.alpha)
c.get_key(support.alpha, secret=True) c.get_key(support.alpha, secret=True)
@ -263,7 +263,7 @@ with pyme.Context() as c:
# Legacy error # Legacy error
try: try:
c.get_key(support.no_such_key) c.get_key(support.no_such_key)
except pyme.errors.GPGMEError: except gpg.errors.GPGMEError:
pass pass
else: else:
assert False, "Expected GPGMEError" assert False, "Expected GPGMEError"

View File

@ -20,17 +20,17 @@
from __future__ import absolute_import, print_function, unicode_literals from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
import pyme import gpg
with pyme.Context(protocol=pyme.constants.PROTOCOL_ASSUAN) as c: with gpg.Context(protocol=gpg.constants.PROTOCOL_ASSUAN) as c:
# Do nothing. # Do nothing.
c.assuan_transact('nop') c.assuan_transact('nop')
c.assuan_transact('NOP') c.assuan_transact('NOP')
c.assuan_transact(['NOP']) c.assuan_transact(['NOP'])
err = c.assuan_transact('idontexist') err = c.assuan_transact('idontexist')
assert err.getsource() == pyme.errors.SOURCE_GPGAGENT assert err.getsource() == gpg.errors.SOURCE_GPGAGENT
assert err.getcode() == pyme.errors.ASS_UNKNOWN_CMD assert err.getcode() == gpg.errors.ASS_UNKNOWN_CMD
# Invoke the pinentry to get a confirmation. # Invoke the pinentry to get a confirmation.
c.assuan_transact(['GET_CONFIRMATION', 'Hello there']) c.assuan_transact(['GET_CONFIRMATION', 'Hello there'])

View File

@ -21,7 +21,7 @@ from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
import os import os
from pyme import core, constants from gpg import core, constants
import support import support
expected_notations = { expected_notations = {

View File

@ -21,8 +21,8 @@ from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
import os import os
import pyme import gpg
from pyme import core, constants from gpg import core, constants
import support import support
def fail(msg): def fail(msg):
@ -90,23 +90,23 @@ check_result(result, constants.SIG_MODE_CLEAR)
support.print_data(sink) support.print_data(sink)
# Idiomatic interface. # Idiomatic interface.
with pyme.Context(armor=True, textmode=True) as c: with gpg.Context(armor=True, textmode=True) as c:
message = "Hallo Leute\n".encode() message = "Hallo Leute\n".encode()
signed, _ = c.sign(message) signed, _ = c.sign(message)
assert len(signed) > 0 assert len(signed) > 0
assert signed.find(b'BEGIN PGP MESSAGE') > 0, 'Message not found' assert signed.find(b'BEGIN PGP MESSAGE') > 0, 'Message not found'
signed, _ = c.sign(message, mode=pyme.constants.SIG_MODE_DETACH) signed, _ = c.sign(message, mode=gpg.constants.SIG_MODE_DETACH)
assert len(signed) > 0 assert len(signed) > 0
assert signed.find(b'BEGIN PGP SIGNATURE') > 0, 'Signature not found' assert signed.find(b'BEGIN PGP SIGNATURE') > 0, 'Signature not found'
signed, _ = c.sign(message, mode=pyme.constants.SIG_MODE_CLEAR) signed, _ = c.sign(message, mode=gpg.constants.SIG_MODE_CLEAR)
assert len(signed) > 0 assert len(signed) > 0
assert signed.find(b'BEGIN PGP SIGNED MESSAGE') > 0, 'Message not found' assert signed.find(b'BEGIN PGP SIGNED MESSAGE') > 0, 'Message not found'
assert signed.find(message) > 0, 'Message content not found' assert signed.find(message) > 0, 'Message content not found'
assert signed.find(b'BEGIN PGP SIGNATURE') > 0, 'Signature not found' assert signed.find(b'BEGIN PGP SIGNATURE') > 0, 'Signature not found'
with pyme.Context() as c: with gpg.Context() as c:
message = "Hallo Leute\n".encode() message = "Hallo Leute\n".encode()
c.signers = [c.get_key(support.sign_only, True)] c.signers = [c.get_key(support.sign_only, True)]
@ -115,7 +115,7 @@ with pyme.Context() as c:
c.signers = [c.get_key(support.encrypt_only, True)] c.signers = [c.get_key(support.encrypt_only, True)]
try: try:
c.sign(message) c.sign(message)
except pyme.errors.InvalidSigners as e: except gpg.errors.InvalidSigners as e:
assert len(e.signers) == 1 assert len(e.signers) == 1
assert support.encrypt_only.endswith(e.signers[0].fpr) assert support.encrypt_only.endswith(e.signers[0].fpr)
else: else:

View File

@ -20,8 +20,8 @@
from __future__ import absolute_import, print_function, unicode_literals from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
import pyme import gpg
from pyme import core, constants from gpg import core, constants
import support import support
def fail(msg): def fail(msg):
@ -81,7 +81,7 @@ for mode in (constants.SIG_MODE_NORMAL, constants.SIG_MODE_DETACH,
support.print_data(sink) support.print_data(sink)
# Idiomatic interface. # Idiomatic interface.
with pyme.Context(armor=True, textmode=True, signers=keys) as c: with gpg.Context(armor=True, textmode=True, signers=keys) as c:
message = "Hallo Leute\n".encode() message = "Hallo Leute\n".encode()
signed, result = c.sign(message) signed, result = c.sign(message)
check_result(result, constants.SIG_MODE_NORMAL) check_result(result, constants.SIG_MODE_NORMAL)

View File

@ -20,7 +20,7 @@
from __future__ import absolute_import, print_function, unicode_literals from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
from pyme import core, constants from gpg import core, constants
import support import support
support.init_gpgme(constants.PROTOCOL_OpenPGP) support.init_gpgme(constants.PROTOCOL_OpenPGP)

View File

@ -22,8 +22,8 @@ del absolute_import, print_function, unicode_literals
import sys import sys
import os import os
import pyme import gpg
from pyme import core, constants, errors from gpg import core, constants, errors
import support import support
test_text1 = b"Just GNU it!\n" test_text1 = b"Just GNU it!\n"
@ -145,7 +145,7 @@ else:
# Idiomatic interface. # Idiomatic interface.
with pyme.Context(armor=True) as c: with gpg.Context(armor=True) as c:
# Checking a valid message. # Checking a valid message.
_, result = c.verify(test_text1, test_sig1) _, result = c.verify(test_text1, test_sig1)
check_result(result, constants.SIGSUM_VALID | constants.SIGSUM_GREEN, check_result(result, constants.SIGSUM_VALID | constants.SIGSUM_GREEN,

View File

@ -21,7 +21,7 @@ from __future__ import absolute_import, print_function, unicode_literals
del absolute_import, print_function, unicode_literals del absolute_import, print_function, unicode_literals
import time import time
from pyme import core, constants, errors from gpg import core, constants, errors
import support import support
support.init_gpgme(constants.PROTOCOL_OpenPGP) support.init_gpgme(constants.PROTOCOL_OpenPGP)

View File

@ -17,7 +17,7 @@
# You should have received a copy of the GNU Lesser General Public # You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, see <http://www.gnu.org/licenses/>. # License along with this program; if not, see <http://www.gnu.org/licenses/>.
from pyme import core from gpg import core
d0 = core.Data() d0 = core.Data()
d0.seek # trigger on-demand-wrapping d0.seek # trigger on-demand-wrapping