python bindings: core key import

* The foundation of a pythonic key import function authored by Jacob
  Adams.
* A unit testing script for the same function originally authored by
  Tobias Mueller
* Added DCO reference for Jacob Adams to the GPGME AUTHORS file.
* Additional details regarding this patch are available here:
  https://dev.gnupg.org/T4001

Signed-off-by: Ben McGinnes <ben@adversary.org>
This commit is contained in:
Ben McGinnes 2018-06-17 09:28:30 +10:00
parent 92cd060f5e
commit 0e762608ef
3 changed files with 31 additions and 5 deletions

View File

@ -62,6 +62,9 @@ Tobias Mueller <muelli@cryptobitch.de>
Ben McGinnes <ben@adversary.org>
2017-12-16:20171216002102.l6aejk5xdp6xhtfi@adversary.org:
Jacob Adams <tookmund@gmail.com>
2018-06-03:ad5141df-b6cc-6c2a-59df-b2f18f7160fd@gmail.com:
Copyright 2001, 2002, 2012, 2013 g10 Code GmbH

View File

@ -509,6 +509,25 @@ class Context(GpgmeWrapper):
return results
def key_import(self, data):
"""Import data
Imports the given data into the Context.
Returns:
result -- information about the imported data
Raises:
GPGMEError -- as signaled by the underlying library
ValueError -- Raised if no keys are present in the data
"""
self.op_import(data)
result = self.op_import_result()
if result.considered == 0:
raise ValueError
return result
def keylist(self, pattern=None, secret=False,
mode=constants.keylist.mode.LOCAL,
source=None):

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python
# Copyright (C) 2016 g10 Code GmbH
# Copyright (C) 2016 Tobias Mueller <muelli at cryptobitch.de>
#
# This file is part of GPGME.
#
@ -69,10 +69,14 @@ def check_result(result, fpr, secret):
c = gpg.Context()
c.op_import(gpg.Data(file=support.make_filename("pubkey-1.asc")))
result = c.op_import_result()
result = c.key_import(open(support.make_filename("pubkey-1.asc"), 'rb').read())
check_result(result, "ADAB7FCC1F4DE2616ECFA402AF82244F9CD9FD55", False)
c.op_import(gpg.Data(file=support.make_filename("seckey-1.asc")))
result = c.op_import_result()
result = c.key_import(open(support.make_filename("seckey-1.asc"), 'rb').read())
check_result(result, "ADAB7FCC1F4DE2616ECFA402AF82244F9CD9FD55", True)
try:
result = c.key_import(b"thisisnotakey")
except ValueError:
pass
assert result.considered == 0