1 |
commit: 97c6fd5055ba5c07a0cd633cf7fe84771b8736ba |
2 |
Author: Michał Górny <mgorny <AT> gentoo <DOT> org> |
3 |
AuthorDate: Tue Feb 11 07:04:26 2020 +0000 |
4 |
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org> |
5 |
CommitDate: Tue Feb 11 07:04:26 2020 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=97c6fd50 |
7 |
|
8 |
dev-python/pyjwt: Fix tests, add py3.8 & pypy3 |
9 |
|
10 |
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org> |
11 |
|
12 |
dev-python/pyjwt/files/pyjwt-1.7.1-ecdsa-fix.patch | 27 +++++++++++ |
13 |
dev-python/pyjwt/pyjwt-1.7.1-r1.ebuild | 56 ++++++++++++++++++++++ |
14 |
2 files changed, 83 insertions(+) |
15 |
|
16 |
diff --git a/dev-python/pyjwt/files/pyjwt-1.7.1-ecdsa-fix.patch b/dev-python/pyjwt/files/pyjwt-1.7.1-ecdsa-fix.patch |
17 |
new file mode 100644 |
18 |
index 00000000000..ebd9236c799 |
19 |
--- /dev/null |
20 |
+++ b/dev-python/pyjwt/files/pyjwt-1.7.1-ecdsa-fix.patch |
21 |
@@ -0,0 +1,27 @@ |
22 |
+From 36a3f9bd0cc7029e5150b1931efbd62da975e8b9 Mon Sep 17 00:00:00 2001 |
23 |
+From: StefanBruens <stefan.bruens@×××××××××××.de> |
24 |
+Date: Mon, 21 Oct 2019 02:07:19 +0200 |
25 |
+Subject: [PATCH] Catch BadSignatureError raised by ecdsa 0.13.3 on |
26 |
+ verification errors (#448) |
27 |
+ |
28 |
+The new ecdsa no longer uses AssertionError when the signature is too long. |
29 |
+This happens in the test suite, where "123" is appended to the signature. |
30 |
+ |
31 |
+Fixes #447 |
32 |
+--- |
33 |
+ jwt/contrib/algorithms/py_ecdsa.py | 4 +++- |
34 |
+ 1 file changed, 3 insertions(+), 1 deletion(-) |
35 |
+ |
36 |
+diff --git a/jwt/contrib/algorithms/py_ecdsa.py b/jwt/contrib/algorithms/py_ecdsa.py |
37 |
+index bf0dea5..f1170a6 100644 |
38 |
+--- a/jwt/contrib/algorithms/py_ecdsa.py |
39 |
++++ b/jwt/contrib/algorithms/py_ecdsa.py |
40 |
+@@ -56,5 +56,7 @@ def verify(self, msg, key, sig): |
41 |
+ try: |
42 |
+ return key.verify(sig, msg, hashfunc=self.hash_alg, |
43 |
+ sigdecode=ecdsa.util.sigdecode_string) |
44 |
+- except AssertionError: |
45 |
++ # ecdsa <= 0.13.2 raises AssertionError on too long signatures, |
46 |
++ # ecdsa >= 0.13.3 raises BadSignatureError for verification errors. |
47 |
++ except (AssertionError, ecdsa.BadSignatureError): |
48 |
+ return False |
49 |
|
50 |
diff --git a/dev-python/pyjwt/pyjwt-1.7.1-r1.ebuild b/dev-python/pyjwt/pyjwt-1.7.1-r1.ebuild |
51 |
new file mode 100644 |
52 |
index 00000000000..1cb2f6e1415 |
53 |
--- /dev/null |
54 |
+++ b/dev-python/pyjwt/pyjwt-1.7.1-r1.ebuild |
55 |
@@ -0,0 +1,56 @@ |
56 |
+# Copyright 1999-2020 Gentoo Authors |
57 |
+# Distributed under the terms of the GNU General Public License v2 |
58 |
+ |
59 |
+EAPI=7 |
60 |
+ |
61 |
+DISTUTILS_USE_SETUPTOOLS=rdepend |
62 |
+PYTHON_COMPAT=( python{2_7,3_{6,7,8}} pypy3 ) |
63 |
+ |
64 |
+inherit distutils-r1 eutils |
65 |
+ |
66 |
+MY_PN="PyJWT" |
67 |
+DESCRIPTION="JSON Web Token implementation in Python" |
68 |
+HOMEPAGE="https://github.com/progrium/pyjwt https://pypi.org/project/PyJWT/" |
69 |
+SRC_URI="mirror://pypi/${MY_PN:0:1}/${MY_PN}/${MY_PN}-${PV}.tar.gz" |
70 |
+S="${WORKDIR}"/${MY_PN}-${PV} |
71 |
+ |
72 |
+LICENSE="MIT" |
73 |
+SLOT="0" |
74 |
+KEYWORDS="~amd64 ~arm ~arm64 ~x86 ~amd64-linux ~x86-linux" |
75 |
+ |
76 |
+RDEPEND="" |
77 |
+DEPEND=" |
78 |
+ test? ( |
79 |
+ >=dev-python/cryptography-1.4.0[${PYTHON_USEDEP}] |
80 |
+ )" |
81 |
+ |
82 |
+distutils_enable_tests pytest |
83 |
+ |
84 |
+python_prepare_all() { |
85 |
+ find . -name '__pycache__' -prune -exec rm -rf {} + || die |
86 |
+ find . -name '*.pyc' -delete || die |
87 |
+ |
88 |
+ # enables coverage, we don't need that |
89 |
+ rm setup.cfg || die |
90 |
+ # kill tests using pycrypto that break with pycryptodome |
91 |
+ sed -i -e '/has_pycrypto/s:True:False:' \ |
92 |
+ tests/contrib/test_algorithms.py || die |
93 |
+ |
94 |
+ local PATCHES=( |
95 |
+ "${FILESDIR}"/pyjwt-1.7.1-ecdsa-fix.patch |
96 |
+ ) |
97 |
+ |
98 |
+ distutils-r1_python_prepare_all |
99 |
+} |
100 |
+ |
101 |
+python_test() { |
102 |
+ pytest -vv || die "Tests fail with ${EPYTHON}" |
103 |
+} |
104 |
+ |
105 |
+pkg_postinst() { |
106 |
+ elog "Available optional features:" |
107 |
+ optfeature "cryptography" dev-python/cryptography |
108 |
+ optfeature "flake8" dev-python/flake8{,-import-order} |
109 |
+ |
110 |
+ ewarn "flake8 feature requires 'pep8-naming' which is not packaged yet" |
111 |
+} |