python bindings: export public keys

* Added functions for exporting public keys to gpg.core in both
  complete form and in minimised form.
* Rather than letting people need to worry about the export modes we
  are simply separating the functions as people would be more familiar
  with from the command line usage anyway.
* Functions added for Context are: ctx.key_export_minimal and
  ctx.key_export as the default or full export.

Signed-off-by: Ben McGinnes <ben@adversary.org>
This commit is contained in:
Ben McGinnes 2018-06-27 18:51:09 +10:00
parent d8beab30c4
commit 870c317120

View File

@ -537,7 +537,7 @@ class Context(GpgmeWrapper):
managed to run the function without any managed to run the function without any
arguments, while an argument of None triggers arguments, while an argument of None triggers
the first NODATA of errors.GPGME in the the first NODATA of errors.GPGME in the
exception. exception.
""" """
try: try:
self.op_import(data) self.op_import(data)
@ -566,6 +566,63 @@ class Context(GpgmeWrapper):
return import_result return import_result
def key_export(self, pattern=None):
"""Export keys.
Exports public keys matching the pattern specified. If no
pattern is specified then exports all available keys.
Keyword arguments:
pattern -- return keys matching pattern (default: all keys)
Returns:
-- A key block containing one or more OpenPGP keys in
either ASCII armoured or binary format as determined
by the Context().
Raises:
GPGMEError -- as signaled by the underlying library.
"""
data = Data()
mode = 0
try:
self.op_export(pattern, mode, data)
data.seek(0, os.SEEK_SET)
result = data.read()
except GPGMEError as e:
result = e
return result
def key_export_minimal(self, pattern=None):
"""Export keys.
Exports public keys matching the pattern specified in a
minimised format. If no pattern is specified then exports all
available keys.
Keyword arguments:
pattern -- return keys matching pattern (default: all keys)
Returns:
-- A key block containing one or more minimised OpenPGP
keys in either ASCII armoured or binary format as
determined by the Context().
Raises:
GPGMEError -- as signaled by the underlying library.
"""
data = Data()
mode = gpgme.GPGME_EXPORT_MODE_MINIMAL
try:
self.op_export(pattern, mode, data)
data.seek(0, os.SEEK_SET)
result = data.read()
except GPGMEError as e:
result = e
return result
def keylist(self, pattern=None, secret=False, def keylist(self, pattern=None, secret=False,
mode=constants.keylist.mode.LOCAL, mode=constants.keylist.mode.LOCAL,
source=None): source=None):