From 866b048c4899d626e08f14a58f8e7aa2b1f4ac9b Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Wed, 22 Jul 2020 17:42:55 +0000 Subject: [PATCH 1/3] Avoid loading ecdsa if its not needed when using the cryptography backend --- jose/backends/cryptography_backend.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/jose/backends/cryptography_backend.py b/jose/backends/cryptography_backend.py index 4e8ff7da..8a63157b 100644 --- a/jose/backends/cryptography_backend.py +++ b/jose/backends/cryptography_backend.py @@ -4,11 +4,6 @@ import six -try: - from ecdsa import SigningKey as EcdsaSigningKey, VerifyingKey as EcdsaVerifyingKey -except ImportError: - EcdsaSigningKey = EcdsaVerifyingKey = None - from jose.backends.base import Key from jose.utils import base64_to_long, long_to_base64 from jose.constants import ALGORITHMS @@ -46,7 +41,7 @@ def __init__(self, key, algorithm, cryptography_backend=default_backend): self.prepared_key = key return - if None not in (EcdsaSigningKey, EcdsaVerifyingKey) and isinstance(key, (EcdsaSigningKey, EcdsaVerifyingKey)): + if hasattr(key, 'to_pem'): # convert to PEM and let cryptography below load it as PEM key = key.to_pem().decode('utf-8') From 07c110f941c01b2b2e9f2916945d9bd309e085b6 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Wed, 29 Jul 2020 17:57:32 +0000 Subject: [PATCH 2/3] pin to an ecdsa version that tests pass --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 04dd5d1b..21ec01b3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ pycryptodome six rsa -ecdsa +ecdsa<0.15 pyasn1 From d0a6268ba5069c949a802f7c8667fcc429cf0e75 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Wed, 29 Jul 2020 21:10:57 +0000 Subject: [PATCH 3/3] fix tox --- setup.py | 2 +- tox.ini | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index c3b94042..eb4f8fda 100644 --- a/setup.py +++ b/setup.py @@ -38,7 +38,7 @@ def _cryptography_version(): 'pycrypto': ['pycrypto >=2.6.0, <2.7.0'] + pyasn1, 'pycryptodome': ['pycryptodome >=3.3.1, <4.0.0'] + pyasn1, } -legacy_backend_requires = ['ecdsa <1.0', 'rsa'] + pyasn1 +legacy_backend_requires = ['ecdsa <0.15', 'rsa'] + pyasn1 install_requires = ['six <2.0'] # TODO: work this into the extras selection instead. diff --git a/tox.ini b/tox.ini index f7095566..81f0ab76 100644 --- a/tox.ini +++ b/tox.ini @@ -21,6 +21,8 @@ deps = pytest pytest-cov pytest-runner + -r{toxinidir}/requirements.txt + commands_pre = # Remove the python-rsa and python-ecdsa backends only: pip uninstall -y ecdsa rsa