summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2020-02-11 08:04:26 +0100
committerMichał Górny <mgorny@gentoo.org>2020-02-11 08:04:26 +0100
commit97c6fd5055ba5c07a0cd633cf7fe84771b8736ba (patch)
treebe600c16bac3ae50b919719b448a85ec7668c7e1 /dev-python/pyjwt
parentdev-python/deprecated: Enable py3.8 & pypy3 (diff)
downloadgentoo-97c6fd5055ba5c07a0cd633cf7fe84771b8736ba.tar.gz
gentoo-97c6fd5055ba5c07a0cd633cf7fe84771b8736ba.tar.bz2
gentoo-97c6fd5055ba5c07a0cd633cf7fe84771b8736ba.zip
dev-python/pyjwt: Fix tests, add py3.8 & pypy3
Signed-off-by: Michał Górny <mgorny@gentoo.org>
Diffstat (limited to 'dev-python/pyjwt')
-rw-r--r--dev-python/pyjwt/files/pyjwt-1.7.1-ecdsa-fix.patch27
-rw-r--r--dev-python/pyjwt/pyjwt-1.7.1-r1.ebuild56
2 files changed, 83 insertions, 0 deletions
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
new file mode 100644
index 000000000000..ebd9236c7994
--- /dev/null
+++ b/dev-python/pyjwt/files/pyjwt-1.7.1-ecdsa-fix.patch
@@ -0,0 +1,27 @@
+From 36a3f9bd0cc7029e5150b1931efbd62da975e8b9 Mon Sep 17 00:00:00 2001
+From: StefanBruens <stefan.bruens@rwth-aachen.de>
+Date: Mon, 21 Oct 2019 02:07:19 +0200
+Subject: [PATCH] Catch BadSignatureError raised by ecdsa 0.13.3 on
+ verification errors (#448)
+
+The new ecdsa no longer uses AssertionError when the signature is too long.
+This happens in the test suite, where "123" is appended to the signature.
+
+Fixes #447
+---
+ jwt/contrib/algorithms/py_ecdsa.py | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/jwt/contrib/algorithms/py_ecdsa.py b/jwt/contrib/algorithms/py_ecdsa.py
+index bf0dea5..f1170a6 100644
+--- a/jwt/contrib/algorithms/py_ecdsa.py
++++ b/jwt/contrib/algorithms/py_ecdsa.py
+@@ -56,5 +56,7 @@ def verify(self, msg, key, sig):
+ try:
+ return key.verify(sig, msg, hashfunc=self.hash_alg,
+ sigdecode=ecdsa.util.sigdecode_string)
+- except AssertionError:
++ # ecdsa <= 0.13.2 raises AssertionError on too long signatures,
++ # ecdsa >= 0.13.3 raises BadSignatureError for verification errors.
++ except (AssertionError, ecdsa.BadSignatureError):
+ return False
diff --git a/dev-python/pyjwt/pyjwt-1.7.1-r1.ebuild b/dev-python/pyjwt/pyjwt-1.7.1-r1.ebuild
new file mode 100644
index 000000000000..1cb2f6e14153
--- /dev/null
+++ b/dev-python/pyjwt/pyjwt-1.7.1-r1.ebuild
@@ -0,0 +1,56 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+DISTUTILS_USE_SETUPTOOLS=rdepend
+PYTHON_COMPAT=( python{2_7,3_{6,7,8}} pypy3 )
+
+inherit distutils-r1 eutils
+
+MY_PN="PyJWT"
+DESCRIPTION="JSON Web Token implementation in Python"
+HOMEPAGE="https://github.com/progrium/pyjwt https://pypi.org/project/PyJWT/"
+SRC_URI="mirror://pypi/${MY_PN:0:1}/${MY_PN}/${MY_PN}-${PV}.tar.gz"
+S="${WORKDIR}"/${MY_PN}-${PV}
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND=""
+DEPEND="
+ test? (
+ >=dev-python/cryptography-1.4.0[${PYTHON_USEDEP}]
+ )"
+
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ find . -name '__pycache__' -prune -exec rm -rf {} + || die
+ find . -name '*.pyc' -delete || die
+
+ # enables coverage, we don't need that
+ rm setup.cfg || die
+ # kill tests using pycrypto that break with pycryptodome
+ sed -i -e '/has_pycrypto/s:True:False:' \
+ tests/contrib/test_algorithms.py || die
+
+ local PATCHES=(
+ "${FILESDIR}"/pyjwt-1.7.1-ecdsa-fix.patch
+ )
+
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ pytest -vv || die "Tests fail with ${EPYTHON}"
+}
+
+pkg_postinst() {
+ elog "Available optional features:"
+ optfeature "cryptography" dev-python/cryptography
+ optfeature "flake8" dev-python/flake8{,-import-order}
+
+ ewarn "flake8 feature requires 'pep8-naming' which is not packaged yet"
+}