Accepting request 501420 from home:Pharaoh_Atem:branches:devel:languages:python
- Update to 0.3 - Add patches from Fedora to fix pygpgme with new gpgme - Convert to singlespec to build for Python 2 and Python 3 OBS-URL: https://build.opensuse.org/request/show/501420 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-gpgme?expand=0&rev=6
This commit is contained in:
parent
edce000cab
commit
a9f97a2d5b
88
0001-reflect-2.1-reporting-for-key-imports.patch
Normal file
88
0001-reflect-2.1-reporting-for-key-imports.patch
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
From 4f15b1c042e9cb8c68223c3f78a47b6c18678802 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
|
||||||
|
Date: Tue, 26 Jan 2016 14:24:26 -0500
|
||||||
|
Subject: [PATCH 1/6] reflect 2.1 reporting for key imports
|
||||||
|
|
||||||
|
GnuPG 2.1 changes how it reports key imports. These changes should
|
||||||
|
make the pygpgme test suite compatible with GnuPG 2.1.
|
||||||
|
|
||||||
|
See also:
|
||||||
|
https://lists.gnupg.org/pipermail/gnupg-devel/2016-January/030718.html
|
||||||
|
---
|
||||||
|
tests/test_import.py | 22 +++++++++++-----------
|
||||||
|
1 file changed, 11 insertions(+), 11 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/tests/test_import.py b/tests/test_import.py
|
||||||
|
index 10eb816..597eb47 100644
|
||||||
|
--- a/tests/test_import.py
|
||||||
|
+++ b/tests/test_import.py
|
||||||
|
@@ -55,7 +55,7 @@ class ImportTestCase(GpgHomeTestCase):
|
||||||
|
ctx = gpgme.Context()
|
||||||
|
with self.keyfile('key1.sec') as fp:
|
||||||
|
result = ctx.import_(fp)
|
||||||
|
- self.assertEqual(result.considered, 1)
|
||||||
|
+ self.assertEqual(result.considered, 3)
|
||||||
|
self.assertEqual(result.no_user_id, 0)
|
||||||
|
self.assertEqual(result.imported, 1)
|
||||||
|
self.assertEqual(result.imported_rsa, 0)
|
||||||
|
@@ -64,18 +64,18 @@ class ImportTestCase(GpgHomeTestCase):
|
||||||
|
self.assertEqual(result.new_sub_keys, 0)
|
||||||
|
self.assertEqual(result.new_signatures, 0)
|
||||||
|
self.assertEqual(result.new_revocations, 0)
|
||||||
|
- self.assertEqual(result.secret_read, 1)
|
||||||
|
- self.assertEqual(result.secret_imported, 1)
|
||||||
|
+ self.assertEqual(result.secret_read, 3)
|
||||||
|
+ self.assertEqual(result.secret_imported, 2)
|
||||||
|
self.assertEqual(result.secret_unchanged, 0)
|
||||||
|
self.assertEqual(result.skipped_new_keys, 0)
|
||||||
|
self.assertEqual(result.not_imported, 0)
|
||||||
|
self.assertEqual(len(result.imports), 2)
|
||||||
|
self.assertEqual(result.imports[0],
|
||||||
|
('E79A842DA34A1CA383F64A1546BB55F0885C65A4',
|
||||||
|
- None, gpgme.IMPORT_NEW | gpgme.IMPORT_SECRET))
|
||||||
|
+ None, gpgme.IMPORT_NEW))
|
||||||
|
self.assertEqual(result.imports[1],
|
||||||
|
('E79A842DA34A1CA383F64A1546BB55F0885C65A4',
|
||||||
|
- None, gpgme.IMPORT_NEW))
|
||||||
|
+ None, gpgme.IMPORT_NEW | gpgme.IMPORT_SECRET))
|
||||||
|
# can we get the public key?
|
||||||
|
key = ctx.get_key('E79A842DA34A1CA383F64A1546BB55F0885C65A4')
|
||||||
|
# can we get the secret key?
|
||||||
|
@@ -102,17 +102,17 @@ class ImportTestCase(GpgHomeTestCase):
|
||||||
|
fp = BytesIO(b'\n'.join(keys))
|
||||||
|
ctx = gpgme.Context()
|
||||||
|
result = ctx.import_(fp)
|
||||||
|
- self.assertEqual(result.considered, 3)
|
||||||
|
+ self.assertEqual(result.considered, 5)
|
||||||
|
self.assertEqual(result.no_user_id, 0)
|
||||||
|
self.assertEqual(result.imported, 2)
|
||||||
|
- self.assertEqual(result.imported_rsa, 1)
|
||||||
|
+ self.assertEqual(result.imported_rsa, 0)
|
||||||
|
self.assertEqual(result.unchanged, 0)
|
||||||
|
self.assertEqual(result.new_user_ids, 0)
|
||||||
|
self.assertEqual(result.new_sub_keys, 0)
|
||||||
|
self.assertEqual(result.new_signatures, 1)
|
||||||
|
self.assertEqual(result.new_revocations, 0)
|
||||||
|
- self.assertEqual(result.secret_read, 1)
|
||||||
|
- self.assertEqual(result.secret_imported, 1)
|
||||||
|
+ self.assertEqual(result.secret_read, 3)
|
||||||
|
+ self.assertEqual(result.secret_imported, 2)
|
||||||
|
self.assertEqual(result.secret_unchanged, 0)
|
||||||
|
self.assertEqual(result.skipped_new_keys, 0)
|
||||||
|
self.assertEqual(result.not_imported, 0)
|
||||||
|
@@ -122,10 +122,10 @@ class ImportTestCase(GpgHomeTestCase):
|
||||||
|
None, gpgme.IMPORT_NEW))
|
||||||
|
self.assertEqual(result.imports[1],
|
||||||
|
('E79A842DA34A1CA383F64A1546BB55F0885C65A4',
|
||||||
|
- None, gpgme.IMPORT_NEW | gpgme.IMPORT_SECRET))
|
||||||
|
+ None, gpgme.IMPORT_SIG))
|
||||||
|
self.assertEqual(result.imports[2],
|
||||||
|
('E79A842DA34A1CA383F64A1546BB55F0885C65A4',
|
||||||
|
- None, gpgme.IMPORT_SIG))
|
||||||
|
+ None, gpgme.IMPORT_NEW | gpgme.IMPORT_SECRET))
|
||||||
|
self.assertEqual(result.imports[3],
|
||||||
|
('93C2240D6B8AA10AB28F701D2CF46B7FC97E6B0F',
|
||||||
|
None, gpgme.IMPORT_NEW))
|
||||||
|
--
|
||||||
|
2.7.4
|
||||||
|
|
50
0002-passphrase_cb-is-deprecated.patch
Normal file
50
0002-passphrase_cb-is-deprecated.patch
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
From 6648b075fb3d434c599d7e1793bd1f0bbe85dfe3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
|
||||||
|
Date: Mon, 1 Feb 2016 19:25:12 -0500
|
||||||
|
Subject: [PATCH 2/6] passphrase_cb is deprecated
|
||||||
|
|
||||||
|
https://bugs.gnupg.org/gnupg/issue767 indicates that
|
||||||
|
gpgme_set_passphrase_cb is a deprecated corner of the API and that
|
||||||
|
developers using gpgme should really rely on the gpg-agent to handle
|
||||||
|
this stuff. This should actually simplify things for most
|
||||||
|
installations -- just strip out all passphrase handling from your
|
||||||
|
application entirely, relying on gpg to figure out how to find the
|
||||||
|
agent, and relying on the agent figuring out how to prompt the user
|
||||||
|
(if necessary).
|
||||||
|
|
||||||
|
However, if a developer really wants to use the passphrase callback
|
||||||
|
approach, they'll have to use loopback pinentry. This sets up the
|
||||||
|
test suite to be able to make those tests.
|
||||||
|
---
|
||||||
|
tests/util.py | 8 +++++++-
|
||||||
|
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/tests/util.py b/tests/util.py
|
||||||
|
index cd803c2..86892ca 100644
|
||||||
|
--- a/tests/util.py
|
||||||
|
+++ b/tests/util.py
|
||||||
|
@@ -28,7 +28,9 @@ keydir = os.path.join(os.path.dirname(__file__), 'keys')
|
||||||
|
|
||||||
|
class GpgHomeTestCase(unittest.TestCase):
|
||||||
|
|
||||||
|
- gpg_conf_contents = ''
|
||||||
|
+ gpg_conf_contents = 'pinentry-mode loopback'
|
||||||
|
+ gpg_agent_conf_contents = 'allow-loopback-pinentry'
|
||||||
|
+
|
||||||
|
import_keys = []
|
||||||
|
|
||||||
|
def keyfile(self, key):
|
||||||
|
@@ -41,6 +43,10 @@ class GpgHomeTestCase(unittest.TestCase):
|
||||||
|
fp.write(self.gpg_conf_contents.encode('UTF-8'))
|
||||||
|
fp.close()
|
||||||
|
|
||||||
|
+ fp = open(os.path.join(self._gpghome, 'gpg-agent.conf'), 'wb')
|
||||||
|
+ fp.write(self.gpg_agent_conf_contents.encode('UTF-8'))
|
||||||
|
+ fp.close()
|
||||||
|
+
|
||||||
|
# import requested keys into the keyring
|
||||||
|
ctx = gpgme.Context()
|
||||||
|
for key in self.import_keys:
|
||||||
|
--
|
||||||
|
2.7.4
|
||||||
|
|
@ -0,0 +1,28 @@
|
|||||||
|
From 41a0e04d2e81f58c1aff1338a0c89d49ce399d39 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
|
||||||
|
Date: Mon, 1 Feb 2016 19:27:59 -0500
|
||||||
|
Subject: [PATCH 3/6] handle generic error when no passphrase callback present
|
||||||
|
|
||||||
|
apparently gpg 2.1 returns ERR_GENERAL right now if the pinentry was
|
||||||
|
in loopback mode and no passphrase callback was supplied. Earlier
|
||||||
|
versions supplied ERR_BAD_PASSPHRASE.
|
||||||
|
---
|
||||||
|
tests/test_passphrase.py | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/tests/test_passphrase.py b/tests/test_passphrase.py
|
||||||
|
index 0a235e9..35b3c59 100644
|
||||||
|
--- a/tests/test_passphrase.py
|
||||||
|
+++ b/tests/test_passphrase.py
|
||||||
|
@@ -41,7 +41,7 @@ class PassphraseTestCase(GpgHomeTestCase):
|
||||||
|
new_sigs = ctx.sign(plaintext, signature, gpgme.SIG_MODE_CLEAR)
|
||||||
|
except gpgme.GpgmeError as exc:
|
||||||
|
self.assertEqual(exc.args[0], gpgme.ERR_SOURCE_GPGME)
|
||||||
|
- self.assertEqual(exc.args[1], gpgme.ERR_BAD_PASSPHRASE)
|
||||||
|
+ self.assertEqual(exc.args[1], gpgme.ERR_GENERAL)
|
||||||
|
else:
|
||||||
|
self.fail('gpgme.GpgmeError not raised')
|
||||||
|
|
||||||
|
--
|
||||||
|
2.7.4
|
||||||
|
|
109
0004-add-pubkey_algo-and-hash_algo-attributes-to-signatur.patch
Normal file
109
0004-add-pubkey_algo-and-hash_algo-attributes-to-signatur.patch
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
From 2f902e29ef301ba8a23a7d7bfd0943479107206c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Till Maas <opensource@till.name>
|
||||||
|
Date: Wed, 20 Jul 2016 16:17:22 +0200
|
||||||
|
Subject: [PATCH 4/6] add pubkey_algo and hash_algo attributes to signatures
|
||||||
|
|
||||||
|
References: https://bugs.launchpad.net/pygpgme/+bug/1002421
|
||||||
|
Signed-off-by: Igor Gnatenko <ignatenko@redhat.com>
|
||||||
|
---
|
||||||
|
src/pygpgme-signature.c | 6 ++++++
|
||||||
|
src/pygpgme.h | 2 ++
|
||||||
|
tests/test_sign_verify.py | 10 ++++++++++
|
||||||
|
3 files changed, 18 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/pygpgme-signature.c b/src/pygpgme-signature.c
|
||||||
|
index 7f273a1..1d98dfc 100644
|
||||||
|
--- a/src/pygpgme-signature.c
|
||||||
|
+++ b/src/pygpgme-signature.c
|
||||||
|
@@ -101,6 +101,8 @@ pygpgme_sig_dealloc(PyGpgmeSignature *self)
|
||||||
|
Py_XDECREF(self->wrong_key_usage);
|
||||||
|
Py_XDECREF(self->validity);
|
||||||
|
Py_XDECREF(self->validity_reason);
|
||||||
|
+ Py_XDECREF(self->pubkey_algo);
|
||||||
|
+ Py_XDECREF(self->hash_algo);
|
||||||
|
PyObject_Del(self);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -117,6 +119,8 @@ static PyMemberDef pygpgme_sig_members[] = {
|
||||||
|
{ "validity", T_OBJECT, offsetof(PyGpgmeSignature, validity), READONLY},
|
||||||
|
{ "validity_reason", T_OBJECT,
|
||||||
|
offsetof(PyGpgmeSignature, validity_reason), READONLY},
|
||||||
|
+ { "pubkey_algo", T_OBJECT, offsetof(PyGpgmeSignature, pubkey_algo), READONLY},
|
||||||
|
+ { "hash_algo", T_OBJECT, offsetof(PyGpgmeSignature, hash_algo), READONLY},
|
||||||
|
{ NULL, 0, 0, 0}
|
||||||
|
};
|
||||||
|
|
||||||
|
@@ -173,6 +177,8 @@ pygpgme_siglist_new(gpgme_signature_t siglist)
|
||||||
|
item->wrong_key_usage = PyBool_FromLong(sig->wrong_key_usage);
|
||||||
|
item->validity = PyInt_FromLong(sig->validity);
|
||||||
|
item->validity_reason = pygpgme_error_object(sig->validity_reason);
|
||||||
|
+ item->pubkey_algo = PyInt_FromLong(sig->pubkey_algo);
|
||||||
|
+ item->hash_algo = PyInt_FromLong(sig->hash_algo);
|
||||||
|
if (PyErr_Occurred()) {
|
||||||
|
Py_DECREF(item);
|
||||||
|
Py_DECREF(list);
|
||||||
|
diff --git a/src/pygpgme.h b/src/pygpgme.h
|
||||||
|
index 8453616..25b9328 100644
|
||||||
|
--- a/src/pygpgme.h
|
||||||
|
+++ b/src/pygpgme.h
|
||||||
|
@@ -76,6 +76,8 @@ typedef struct {
|
||||||
|
PyObject *wrong_key_usage;
|
||||||
|
PyObject *validity;
|
||||||
|
PyObject *validity_reason;
|
||||||
|
+ PyObject *pubkey_algo;
|
||||||
|
+ PyObject *hash_algo;
|
||||||
|
} PyGpgmeSignature;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
diff --git a/tests/test_sign_verify.py b/tests/test_sign_verify.py
|
||||||
|
index 5a90f8c..fb6a27d 100644
|
||||||
|
--- a/tests/test_sign_verify.py
|
||||||
|
+++ b/tests/test_sign_verify.py
|
||||||
|
@@ -57,6 +57,8 @@ class SignVerifyTestCase(GpgHomeTestCase):
|
||||||
|
self.assertEqual(sigs[0].wrong_key_usage, False)
|
||||||
|
self.assertEqual(sigs[0].validity, gpgme.VALIDITY_UNKNOWN)
|
||||||
|
self.assertEqual(sigs[0].validity_reason, None)
|
||||||
|
+ self.assertEqual(sigs[0].pubkey_algo, gpgme.PK_DSA)
|
||||||
|
+ self.assertEqual(sigs[0].hash_algo, gpgme.MD_SHA1)
|
||||||
|
|
||||||
|
def test_verify_detached(self):
|
||||||
|
signature = BytesIO(dedent('''
|
||||||
|
@@ -83,6 +85,8 @@ class SignVerifyTestCase(GpgHomeTestCase):
|
||||||
|
self.assertEqual(sigs[0].wrong_key_usage, False)
|
||||||
|
self.assertEqual(sigs[0].validity, gpgme.VALIDITY_UNKNOWN)
|
||||||
|
self.assertEqual(sigs[0].validity_reason, None)
|
||||||
|
+ self.assertEqual(sigs[0].pubkey_algo, gpgme.PK_DSA)
|
||||||
|
+ self.assertEqual(sigs[0].hash_algo, gpgme.MD_SHA1)
|
||||||
|
|
||||||
|
def test_verify_clearsign(self):
|
||||||
|
signature = BytesIO(dedent('''
|
||||||
|
@@ -114,6 +118,8 @@ class SignVerifyTestCase(GpgHomeTestCase):
|
||||||
|
self.assertEqual(sigs[0].wrong_key_usage, False)
|
||||||
|
self.assertEqual(sigs[0].validity, gpgme.VALIDITY_UNKNOWN)
|
||||||
|
self.assertEqual(sigs[0].validity_reason, None)
|
||||||
|
+ self.assertEqual(sigs[0].pubkey_algo, gpgme.PK_DSA)
|
||||||
|
+ self.assertEqual(sigs[0].hash_algo, gpgme.MD_SHA1)
|
||||||
|
|
||||||
|
def test_verify_multiple_sigs(self):
|
||||||
|
signature = BytesIO(dedent('''
|
||||||
|
@@ -156,6 +162,8 @@ class SignVerifyTestCase(GpgHomeTestCase):
|
||||||
|
self.assertEqual(sigs[0].wrong_key_usage, False)
|
||||||
|
self.assertEqual(sigs[0].validity, gpgme.VALIDITY_UNKNOWN)
|
||||||
|
self.assertEqual(sigs[0].validity_reason, None)
|
||||||
|
+ self.assertEqual(sigs[0].pubkey_algo, gpgme.PK_DSA)
|
||||||
|
+ self.assertEqual(sigs[0].hash_algo, gpgme.MD_SHA1)
|
||||||
|
|
||||||
|
self.assertEqual(sigs[1].summary, 0)
|
||||||
|
self.assertEqual(sigs[1].fpr,
|
||||||
|
@@ -167,6 +175,8 @@ class SignVerifyTestCase(GpgHomeTestCase):
|
||||||
|
self.assertEqual(sigs[1].wrong_key_usage, False)
|
||||||
|
self.assertEqual(sigs[1].validity, gpgme.VALIDITY_UNKNOWN)
|
||||||
|
self.assertEqual(sigs[1].validity_reason, None)
|
||||||
|
+ self.assertEqual(sigs[1].pubkey_algo, gpgme.PK_RSA)
|
||||||
|
+ self.assertEqual(sigs[1].hash_algo, gpgme.MD_SHA1)
|
||||||
|
|
||||||
|
def test_verify_no_signature(self):
|
||||||
|
signature = BytesIO(dedent('''
|
||||||
|
--
|
||||||
|
2.7.4
|
||||||
|
|
26
0005-add-ENCRYPT_NO_ENCRYPT_TO-constant.patch
Normal file
26
0005-add-ENCRYPT_NO_ENCRYPT_TO-constant.patch
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
From 4cdf2d052bab95eb27de6ca38e52628ba504d639 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Till Maas <opensource@till.name>
|
||||||
|
Date: Wed, 20 Jul 2016 16:18:08 +0200
|
||||||
|
Subject: [PATCH 5/6] add ENCRYPT_NO_ENCRYPT_TO constant
|
||||||
|
|
||||||
|
References: https://bugs.launchpad.net/pygpgme/+bug/1192545
|
||||||
|
Signed-off-by: Igor Gnatenko <ignatenko@redhat.com>
|
||||||
|
---
|
||||||
|
src/pygpgme-constants.c | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/src/pygpgme-constants.c b/src/pygpgme-constants.c
|
||||||
|
index c8a2e9c..a23b2ef 100644
|
||||||
|
--- a/src/pygpgme-constants.c
|
||||||
|
+++ b/src/pygpgme-constants.c
|
||||||
|
@@ -157,6 +157,7 @@ static const struct pygpgme_constant constants[] = {
|
||||||
|
|
||||||
|
/* gpgme_encrypt_flags_t */
|
||||||
|
CONST(ENCRYPT_ALWAYS_TRUST),
|
||||||
|
+ CONST(ENCRYPT_NO_ENCRYPT_TO),
|
||||||
|
|
||||||
|
/* gpgme_sigsum_t */
|
||||||
|
CONST(SIGSUM_VALID),
|
||||||
|
--
|
||||||
|
2.7.4
|
||||||
|
|
66
0006-ignore-STATUS_KEY_CONSIDERED-when-editing.patch
Normal file
66
0006-ignore-STATUS_KEY_CONSIDERED-when-editing.patch
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
From f14699792622715c9cec372400f9dc38f1122f63 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Igor Gnatenko <ignatenko@redhat.com>
|
||||||
|
Date: Mon, 25 Jul 2016 11:40:34 +0200
|
||||||
|
Subject: [PATCH 6/6] ignore STATUS_KEY_CONSIDERED when editing
|
||||||
|
|
||||||
|
KEY_CONSIDERED has 2 meanings:
|
||||||
|
* The key has not been selected
|
||||||
|
* All subkeys of the key are expired or have been revoked
|
||||||
|
|
||||||
|
Both of them are definitely good candidates for ignoring for edit utils.
|
||||||
|
|
||||||
|
https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=commit;h=ff71521d9698c7c5df94831a1398e948213af433
|
||||||
|
https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gpgme.git;a=commit;h=315fb73d4a774e2c699ac1804f5377559b4d0027
|
||||||
|
|
||||||
|
References: https://bugzilla.redhat.com/show_bug.cgi?id=1359521
|
||||||
|
Signed-off-by: Igor Gnatenko <ignatenko@redhat.com>
|
||||||
|
---
|
||||||
|
gpgme/editutil.py | 3 ++-
|
||||||
|
src/pygpgme-constants.c | 1 +
|
||||||
|
tests/test_editkey.py | 4 +++-
|
||||||
|
3 files changed, 6 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/gpgme/editutil.py b/gpgme/editutil.py
|
||||||
|
index 617ddc3..267612f 100644
|
||||||
|
--- a/gpgme/editutil.py
|
||||||
|
+++ b/gpgme/editutil.py
|
||||||
|
@@ -60,7 +60,8 @@ def key_editor(function):
|
||||||
|
gpgme.STATUS_KEYEXPIRED,
|
||||||
|
gpgme.STATUS_PROGRESS,
|
||||||
|
gpgme.STATUS_KEY_CREATED,
|
||||||
|
- gpgme.STATUS_ALREADY_SIGNED):
|
||||||
|
+ gpgme.STATUS_ALREADY_SIGNED,
|
||||||
|
+ gpgme.STATUS_KEY_CONSIDERED):
|
||||||
|
return
|
||||||
|
try:
|
||||||
|
data = gen.send((status, args))
|
||||||
|
diff --git a/src/pygpgme-constants.c b/src/pygpgme-constants.c
|
||||||
|
index a23b2ef..2435346 100644
|
||||||
|
--- a/src/pygpgme-constants.c
|
||||||
|
+++ b/src/pygpgme-constants.c
|
||||||
|
@@ -141,6 +141,7 @@ static const struct pygpgme_constant constants[] = {
|
||||||
|
CONST(STATUS_POLICY_URL),
|
||||||
|
CONST(STATUS_BEGIN_STREAM),
|
||||||
|
CONST(STATUS_END_STREAM),
|
||||||
|
+ CONST(STATUS_KEY_CONSIDERED),
|
||||||
|
CONST(STATUS_KEY_CREATED),
|
||||||
|
CONST(STATUS_USERID_HINT),
|
||||||
|
CONST(STATUS_UNEXPECTED),
|
||||||
|
diff --git a/tests/test_editkey.py b/tests/test_editkey.py
|
||||||
|
index 4bd2730..d6358f4 100644
|
||||||
|
--- a/tests/test_editkey.py
|
||||||
|
+++ b/tests/test_editkey.py
|
||||||
|
@@ -32,7 +32,9 @@ class EditKeyTestCase(GpgHomeTestCase):
|
||||||
|
'signonly.pub', 'signonly.sec']
|
||||||
|
|
||||||
|
def edit_quit_cb(self, status, args, fd):
|
||||||
|
- if status in [gpgme.STATUS_EOF, gpgme.STATUS_GOT_IT]:
|
||||||
|
+ if status in [gpgme.STATUS_EOF,
|
||||||
|
+ gpgme.STATUS_GOT_IT,
|
||||||
|
+ gpgme.STATUS_KEY_CONSIDERED]:
|
||||||
|
return
|
||||||
|
self.status = status
|
||||||
|
self.args = args
|
||||||
|
--
|
||||||
|
2.7.4
|
||||||
|
|
@ -1,13 +0,0 @@
|
|||||||
Based on suggestion found at:
|
|
||||||
http://lists.mandriva.com/bugs/2010-05/msg03921.php
|
|
||||||
|
|
||||||
--- a/pygpgme-0.1/src/pygpgme-context.c
|
|
||||||
+++ b/pygpgme-0.1/src/pygpgme-context.c
|
|
||||||
@@ -83,6 +83,7 @@ static int
|
|
||||||
pygpgme_context_init(PyGpgmeContext *self, PyObject *args, PyObject *kwargs)
|
|
||||||
{
|
|
||||||
static char *kwlist[] = { NULL };
|
|
||||||
+ gpgme_check_version(NULL);
|
|
||||||
|
|
||||||
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "", kwlist))
|
|
||||||
return -1;
|
|
@ -1,14 +0,0 @@
|
|||||||
--- pygpgme-0.1/src/pygpgme.h.py23 2006-10-13 09:21:33.000000000 -0700
|
|
||||||
+++ pygpgme-0.1/src/pygpgme.h 2006-10-13 09:22:41.000000000 -0700
|
|
||||||
@@ -23,6 +23,11 @@
|
|
||||||
#include <Python.h>
|
|
||||||
#include <gpgme.h>
|
|
||||||
|
|
||||||
+/* For python 2.3 compatibility */
|
|
||||||
+#ifndef Py_RETURN_NONE
|
|
||||||
+#define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
#define HIDDEN __attribute__((visibility("hidden")))
|
|
||||||
|
|
||||||
typedef struct {
|
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:0a6a0712afaa589faf5c5e19b8d5ee2369298a3a51d3377927edec89b7f0101f
|
|
||||||
size 45681
|
|
3
pygpgme-0.3.tar.gz
Normal file
3
pygpgme-0.3.tar.gz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:5fd887c407015296a8fd3f4b867fe0fcca3179de97ccde90449853a3dfb802e1
|
||||||
|
size 50100
|
@ -1,3 +1,16 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Jun 6 12:31:55 UTC 2017 - ngompa13@gmail.com
|
||||||
|
|
||||||
|
- Update to 0.3
|
||||||
|
- Add patches from Fedora to fix pygpgme with new gpgme
|
||||||
|
* 0001-reflect-2.1-reporting-for-key-imports.patch
|
||||||
|
* 0002-passphrase_cb-is-deprecated.patch
|
||||||
|
* 0003-handle-generic-error-when-no-passphrase-callback-pre.patch
|
||||||
|
* 0004-add-pubkey_algo-and-hash_algo-attributes-to-signatur.patch
|
||||||
|
* 0005-add-ENCRYPT_NO_ENCRYPT_TO-constant.patch
|
||||||
|
* 0006-ignore-STATUS_KEY_CONSIDERED-when-editing.patch
|
||||||
|
- Convert to singlespec to build for Python 2 and Python 3
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wed Feb 22 13:07:05 UTC 2012 - fcrozat@suse.com
|
Wed Feb 22 13:07:05 UTC 2012 - fcrozat@suse.com
|
||||||
|
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
#
|
#
|
||||||
# spec file for package python-gpgme
|
# spec file for package python-gpgme
|
||||||
#
|
#
|
||||||
# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||||
|
# Copyright (c) 2017 Neal Gompa <ngompa13@gmail.com>.
|
||||||
#
|
#
|
||||||
# All modifications and additions to the file contributed by third parties
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@ -16,19 +17,31 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
|
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
|
||||||
Name: python-gpgme
|
Name: python-gpgme
|
||||||
Version: 0.1
|
Version: 0.3
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: A Python module for working with OpenPGP messages
|
Summary: A Python module for working with OpenPGP messages
|
||||||
License: LGPL-2.1+
|
License: LGPL-2.1+
|
||||||
Group: Development/Libraries/Python
|
Group: Development/Libraries/Python
|
||||||
Url: http://pypi.python.org/pypi/pygpgme
|
Url: http://pypi.python.org/pypi/pygpgme
|
||||||
Source: pygpgme-%{version}.tar.bz2
|
Source: pygpgme-%{version}.tar.gz
|
||||||
Patch: pygpgme-0.1-py23.patch
|
# Upstream is dead, but Fedora maintains a fork
|
||||||
Patch1: pygpgme-0.1-context.patch
|
# All patches tracked at: https://pagure.io/pygpgme
|
||||||
|
# Patches for working with gnupg >= 2.1
|
||||||
|
Patch0001: 0001-reflect-2.1-reporting-for-key-imports.patch
|
||||||
|
Patch0002: 0002-passphrase_cb-is-deprecated.patch
|
||||||
|
Patch0003: 0003-handle-generic-error-when-no-passphrase-callback-pre.patch
|
||||||
|
Patch0004: 0004-add-pubkey_algo-and-hash_algo-attributes-to-signatur.patch
|
||||||
|
Patch0005: 0005-add-ENCRYPT_NO_ENCRYPT_TO-constant.patch
|
||||||
|
Patch0006: 0006-ignore-STATUS_KEY_CONSIDERED-when-editing.patch
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
BuildRequires: gpgme-devel
|
BuildRequires: gpgme-devel
|
||||||
BuildRequires: python-devel
|
BuildRequires: python-devel
|
||||||
|
BuildRequires: python-rpm-macros
|
||||||
|
BuildRequires: python3-devel
|
||||||
|
|
||||||
|
%python_subpackages
|
||||||
|
|
||||||
%description
|
%description
|
||||||
PyGPGME is a Python module that lets you sign, verify, encrypt and
|
PyGPGME is a Python module that lets you sign, verify, encrypt and
|
||||||
@ -44,23 +57,19 @@ Authors:
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n pygpgme-%{version}
|
%setup -q -n pygpgme-%{version}
|
||||||
%patch -p1
|
%if 0%{?suse_version} >= 1330
|
||||||
%patch1 -p2
|
%autopatch -p1
|
||||||
|
%endif
|
||||||
|
|
||||||
%build
|
%build
|
||||||
#CFLAGS="$RPM_OPT_FLAGS" %{__python} setup.py build
|
%python_build
|
||||||
|
|
||||||
%install
|
%install
|
||||||
%{__python} setup.py install --root $RPM_BUILD_ROOT --prefix=%{_prefix}
|
%python_install
|
||||||
# No need to ship the tests
|
|
||||||
rm -rf $RPM_BUILD_ROOT%{py_sitedir}/gpgme/tests/
|
|
||||||
|
|
||||||
%clean
|
%files %{python_files}
|
||||||
rm -rf $RPM_BUILD_ROOT
|
|
||||||
|
|
||||||
%files
|
|
||||||
%defattr(-,root,root,-)
|
%defattr(-,root,root,-)
|
||||||
%doc README PKG-INFO
|
%doc README examples tests
|
||||||
%{py_sitedir}/*
|
%{python_sitearch}/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
Loading…
x
Reference in New Issue
Block a user