From 0e762608ef5a598030b8d0e56261a830e1b7b724 Mon Sep 17 00:00:00 2001 From: Ben McGinnes Date: Sun, 17 Jun 2018 09:28:30 +1000 Subject: [PATCH] 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 --- AUTHORS | 3 +++ lang/python/src/core.py | 19 +++++++++++++++++++ lang/python/tests/t-import.py | 14 +++++++++----- 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/AUTHORS b/AUTHORS index 1bd3209d..e0136ffd 100644 --- a/AUTHORS +++ b/AUTHORS @@ -62,6 +62,9 @@ Tobias Mueller Ben McGinnes 2017-12-16:20171216002102.l6aejk5xdp6xhtfi@adversary.org: +Jacob Adams +2018-06-03:ad5141df-b6cc-6c2a-59df-b2f18f7160fd@gmail.com: + Copyright 2001, 2002, 2012, 2013 g10 Code GmbH diff --git a/lang/python/src/core.py b/lang/python/src/core.py index bd95d231..1b83a5d4 100644 --- a/lang/python/src/core.py +++ b/lang/python/src/core.py @@ -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): diff --git a/lang/python/tests/t-import.py b/lang/python/tests/t-import.py index e2edf5a2..44dc360b 100755 --- a/lang/python/tests/t-import.py +++ b/lang/python/tests/t-import.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -# Copyright (C) 2016 g10 Code GmbH +# Copyright (C) 2016 Tobias Mueller # # 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