[git] GPGME - branch, gsoc/jacob-key-import, created. gpgme-1.11.1-60-g5a80e75
by Ben McGinnes
cvs at cvs.gnupg.org
Sun Jun 17 06:39:21 CEST 2018
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GnuPG Made Easy".
The branch, gsoc/jacob-key-import has been created
at 5a80e755008bbb3f4c7f91ffccd38f26cd8b3960 (commit)
- Log -----------------------------------------------------------------
commit 5a80e755008bbb3f4c7f91ffccd38f26cd8b3960
Author: Ben McGinnes <ben at adversary.org>
Date: Sun Jun 17 14:35:20 2018 +1000
python bindings: core - key import
* Wrapped the key import function in the try/exception statements
needed to catch at least the most likely unsuccessful import attempt
errors.
* Mostly draws on the file error and no data import statuses for
errors, with a couple of exceptions.
Signed-off-by: Ben McGinnes <ben at adversary.org>
diff --git a/lang/python/src/core.py b/lang/python/src/core.py
index 1b83a5d..06be7f7 100644
--- a/lang/python/src/core.py
+++ b/lang/python/src/core.py
@@ -515,18 +515,46 @@ class Context(GpgmeWrapper):
Imports the given data into the Context.
Returns:
- result -- information about the imported data
+ -- an object describing the results of imported or updated
+ keys
Raises:
- GPGMEError -- as signaled by the underlying library
- ValueError -- Raised if no keys are present in the data
-
+ TypeError -- Very rarely.
+ GPGMEError -- as signaled by the underlying library:
+
+ Import status errors, when they occur, will usually
+ be of NODATA. NO_PUBKEY indicates something
+ managed to run the function without any
+ arguments, while an argument of None triggers
+ the first NODATA of errors.GPGME in the
+ exception.
"""
- self.op_import(data)
- result = self.op_import_result()
- if result.considered == 0:
- raise ValueError
- return result
+ try:
+ self.op_import(data)
+ result = self.op_import_result()
+ if result.considered == 0:
+ status = constants.STATUS_IMPORT_PROBLEM
+ else:
+ status = constants.STATUS_KEY_CONSIDERED
+ except Exception as e:
+ if e == errors.GPGMEError:
+ if e.code_str == "No data":
+ status = constants.STATUS_NODATA
+ else:
+ status = constants.STATUS_FILE_ERROR
+ elif e == TypeError and hasattr(data, "decode") is True:
+ status = constants.STATUS_NO_PUBKEY
+ elif e == TypeError and hasattr(data, "encode") is True:
+ status = constants.STATUS_FILE_ERROR
+ else:
+ status = constants.STATUS_ERROR
+
+ if status == constants.STATUS_KEY_CONSIDERED:
+ import_result = result
+ else:
+ import_result = status
+
+ return import_result
def keylist(self, pattern=None, secret=False,
mode=constants.keylist.mode.LOCAL,
commit 0e762608ef5a598030b8d0e56261a830e1b7b724
Author: Ben McGinnes <ben at adversary.org>
Date: Sun Jun 17 09:28:30 2018 +1000
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 at adversary.org>
diff --git a/AUTHORS b/AUTHORS
index 1bd3209..e0136ff 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -62,6 +62,9 @@ Tobias Mueller <muelli at cryptobitch.de>
Ben McGinnes <ben at adversary.org>
2017-12-16:20171216002102.l6aejk5xdp6xhtfi at adversary.org:
+Jacob Adams <tookmund at gmail.com>
+2018-06-03:ad5141df-b6cc-6c2a-59df-b2f18f7160fd at 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 bd95d23..1b83a5d 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 e2edf5a..44dc360 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 <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
-----------------------------------------------------------------------
hooks/post-receive
--
GnuPG Made Easy
http://git.gnupg.org
More information about the Gnupg-commits
mailing list