aboutsummaryrefslogtreecommitdiffstats
path: root/lang/python/gpg/core.py
diff options
context:
space:
mode:
authorJustus Winter <[email protected]>2017-03-21 11:32:31 +0000
committerJustus Winter <[email protected]>2017-03-21 11:55:33 +0000
commitf3e8d8a4518de2768692e0b392262d0da6d0fd84 (patch)
tree8aaea23c79f205d9c61a36525d14a32f57408601 /lang/python/gpg/core.py
parentcore: Extend gpgme_get_dirinfo to return the gpg-wks-client name. (diff)
downloadgpgme-f3e8d8a4518de2768692e0b392262d0da6d0fd84.tar.gz
gpgme-f3e8d8a4518de2768692e0b392262d0da6d0fd84.zip
python: Wrap 'gpgme_op_keylist_from_data_start'.
* NEWS: Update. * lang/python/gpg/core.py (Context.keylist): New keyword argument 'source'. If given, list keys from 'source'. * lang/python/gpgme.i: Wrap the argument to 'gpgme_op_keylist_from_data_start'. * lang/python/tests/Makefile.am (py_tests): Add new test. * lang/python/tests/support.py (EphemeralContext): Do not throw an error if no agent has been started in the context. * lang/python/tests/t-keylist-from-data.py: New file. Signed-off-by: Justus Winter <[email protected]>
Diffstat (limited to 'lang/python/gpg/core.py')
-rw-r--r--lang/python/gpg/core.py23
1 files changed, 20 insertions, 3 deletions
diff --git a/lang/python/gpg/core.py b/lang/python/gpg/core.py
index fe0ba81c..632f4ca5 100644
--- a/lang/python/gpg/core.py
+++ b/lang/python/gpg/core.py
@@ -484,13 +484,16 @@ class Context(GpgmeWrapper):
return plainbytes, result
def keylist(self, pattern=None, secret=False,
- mode=constants.keylist.mode.LOCAL):
+ mode=constants.keylist.mode.LOCAL,
+ source=None):
"""List keys
Keyword arguments:
pattern -- return keys matching pattern (default: all keys)
secret -- return only secret keys (default: False)
mode -- keylist mode (default: list local keys)
+ source -- read keys from source instead from the keyring
+ (all other options are ignored in this case)
Returns:
-- an iterator returning key objects
@@ -498,8 +501,22 @@ class Context(GpgmeWrapper):
Raises:
GPGMEError -- as signaled by the underlying library
"""
- self.set_keylist_mode(mode)
- return self.op_keylist_all(pattern, secret)
+ if not source:
+ self.set_keylist_mode(mode)
+ self.op_keylist_start(pattern, secret)
+ else:
+ # Automatic wrapping of SOURCE is not possible here,
+ # because the object must not be deallocated until the
+ # iteration over the results ends.
+ if not isinstance(source, Data):
+ source = Data(file=source)
+ self.op_keylist_from_data_start(source, 0)
+
+ key = self.op_keylist_next()
+ while key:
+ yield key
+ key = self.op_keylist_next()
+ self.op_keylist_end()
def create_key(self, userid, algorithm=None, expires_in=0, expires=True,
sign=False, encrypt=False, certify=False, authenticate=False,