diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6e75ae7..7314f75 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -47,7 +47,7 @@ jobs: run: poetry install - name: Run pytest run: | - poetry run pytest -vvv -ra --cov=cryptojwt --cov-report=xml --isort --black + poetry run pytest -vvv -ra --cov=cryptojwt --cov-report=xml - name: Upload coverage to Codecov uses: codecov/codecov-action@v4 with: diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1959583..cdaa915 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -9,7 +9,7 @@ repos: - id: check-yaml - id: check-json - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.4.9 + rev: v0.6.8 hooks: - id: ruff - id: ruff-format diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..81002fc --- /dev/null +++ b/Makefile @@ -0,0 +1,8 @@ +all: + +test: + poetry run pytest --ruff --ruff-format --cov + +reformat: + poetry run ruff check --select I --fix src tests + poetry run ruff format src tests diff --git a/pyproject.toml b/pyproject.toml index 39dfdeb..d6789e2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,25 +1,5 @@ # PEP 518: https://www.python.org/dev/peps/pep-0518/ -[tool.black] -line-length = 100 - -[tool.isort] -force_single_line = true -known_first_party = "cryptojwt" -include_trailing_comma = true -force_grid_wrap = 0 -use_parentheses = true -line_length = 100 - -[tool.coverage.run] -branch = true - -[tool.coverage.report] -exclude_lines = [ - "pragma: no cover", - "raise NotImplementedError", -] - [tool.poetry] name = "cryptojwt" version = "1.9.2" @@ -44,23 +24,31 @@ requests = "^2.25.1" [tool.poetry.group.dev.dependencies] alabaster = "^0.7.12" -black = "^24.4.2" -isort = "^5.13.2" pytest = "^8.2.1" -pytest-black = "^0.3.12" -pytest-isort = "^4.0.0" pytest-cov = "^4.0.0" responses = "^0.13.0" sphinx = "^3.5.2" sphinx-autobuild = "^2021.3.14" coverage = "^7" -ruff = "^0.4.6" +ruff = "^0.6.3" pytest-ruff = "^0.3.2" [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" +[tool.coverage.run] +branch = true + +[tool.coverage.report] +exclude_lines = [ + "pragma: no cover", + "raise NotImplementedError", +] + +[tool.ruff] +line-length = 100 + [tool.ruff.lint] select = [ # pycodestyle @@ -78,3 +66,9 @@ select = [ ] ignore = ["E501", "I001", "SIM102"] exclude = ["examples/*"] + +[tool.ruff.lint.isort] +force-sort-within-sections = false +combine-as-imports = true +split-on-trailing-comma = false +known-first-party = ["cryptojwt"] diff --git a/src/cryptojwt/__init__.py b/src/cryptojwt/__init__.py index 5938c11..a53a26c 100644 --- a/src/cryptojwt/__init__.py +++ b/src/cryptojwt/__init__.py @@ -11,10 +11,7 @@ from cryptojwt.key_jar import KeyJar from .exception import BadSyntax -from .utils import as_unicode -from .utils import b64d -from .utils import b64encode_item -from .utils import split_token +from .utils import as_unicode, b64d, b64encode_item, split_token __version__ = version("cryptojwt") diff --git a/src/cryptojwt/jwe/aes.py b/src/cryptojwt/jwe/aes.py index 502902e..7761049 100644 --- a/src/cryptojwt/jwe/aes.py +++ b/src/cryptojwt/jwe/aes.py @@ -2,15 +2,11 @@ from struct import pack from cryptography.hazmat.primitives import hmac -from cryptography.hazmat.primitives.ciphers import Cipher -from cryptography.hazmat.primitives.ciphers import algorithms -from cryptography.hazmat.primitives.ciphers import modes +from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes from cryptography.hazmat.primitives.ciphers.aead import AESGCM from cryptography.hazmat.primitives.padding import PKCS7 -from ..exception import MissingKey -from ..exception import Unsupported -from ..exception import VerificationError +from ..exception import MissingKey, Unsupported, VerificationError from . import Encrypter from .exception import UnsupportedBitLength from .utils import get_keys_seclen_dgst diff --git a/src/cryptojwt/jwe/fernet.py b/src/cryptojwt/jwe/fernet.py index 1bdfd98..4fee8c3 100644 --- a/src/cryptojwt/jwe/fernet.py +++ b/src/cryptojwt/jwe/fernet.py @@ -1,7 +1,6 @@ import base64 import os -from typing import Optional -from typing import Union +from typing import Optional, Union from cryptography.fernet import Fernet from cryptography.hazmat.primitives import hashes diff --git a/src/cryptojwt/jwe/jwe.py b/src/cryptojwt/jwe/jwe.py index ad11244..7bb6abd 100644 --- a/src/cryptojwt/jwe/jwe.py +++ b/src/cryptojwt/jwe/jwe.py @@ -6,11 +6,13 @@ from ..jwk.hmac import SYMKey from ..jwk.jwk import key_from_jwk_dict from ..jwx import JWx -from .exception import DecryptionFailed -from .exception import NoSuitableDecryptionKey -from .exception import NoSuitableEncryptionKey -from .exception import NotSupportedAlgorithm -from .exception import WrongEncryptionAlgorithm +from .exception import ( + DecryptionFailed, + NoSuitableDecryptionKey, + NoSuitableEncryptionKey, + NotSupportedAlgorithm, + WrongEncryptionAlgorithm, +) from .jwe_ec import JWE_EC from .jwe_hmac import JWE_SYM from .jwe_rsa import JWE_RSA @@ -171,10 +173,7 @@ def decrypt(self, token=None, keys=None, alg=None, cek=None): elif _alg.startswith("ECDH-ES"): decrypter = JWE_EC(**self._dict) - if isinstance(keys[0], AsymmetricKey): - _key = keys[0].private_key() - else: - _key = keys[0].key + _key = keys[0].private_key() if isinstance(keys[0], AsymmetricKey) else keys[0].key cek = decrypter.dec_setup(_jwe, key=_key) else: diff --git a/src/cryptojwt/jwe/jwe_ec.py b/src/cryptojwt/jwe/jwe_ec.py index db2d2e1..8c6c616 100644 --- a/src/cryptojwt/jwe/jwe_ec.py +++ b/src/cryptojwt/jwe/jwe_ec.py @@ -2,20 +2,14 @@ import struct from cryptography.hazmat.primitives.asymmetric import ec -from cryptography.hazmat.primitives.keywrap import aes_key_unwrap -from cryptography.hazmat.primitives.keywrap import aes_key_wrap - -from ..jwk.ec import NIST2SEC -from ..jwk.ec import ECKey -from ..utils import as_bytes -from ..utils import as_unicode -from ..utils import b64d -from ..utils import b64e +from cryptography.hazmat.primitives.keywrap import aes_key_unwrap, aes_key_wrap + +from ..jwk.ec import NIST2SEC, ECKey +from ..utils import as_bytes, as_unicode, b64d, b64e from . import KEY_LEN from .jwekey import JWEKey from .jwenc import JWEnc -from .utils import concat_sha256 -from .utils import get_random_bytes +from .utils import concat_sha256, get_random_bytes def ecdh_derive_key(key, epk, apu, apv, alg, dk_len): diff --git a/src/cryptojwt/jwe/jwe_hmac.py b/src/cryptojwt/jwe/jwe_hmac.py index 3a1d1ed..2a30a0c 100644 --- a/src/cryptojwt/jwe/jwe_hmac.py +++ b/src/cryptojwt/jwe/jwe_hmac.py @@ -2,14 +2,11 @@ import logging import zlib -from cryptography.hazmat.primitives.keywrap import aes_key_unwrap -from cryptography.hazmat.primitives.keywrap import aes_key_wrap +from cryptography.hazmat.primitives.keywrap import aes_key_unwrap, aes_key_wrap -from ..exception import MissingKey -from ..exception import WrongNumberOfParts +from ..exception import MissingKey, WrongNumberOfParts from ..jwk.hmac import SYMKey -from ..utils import as_bytes -from ..utils import intarr2str +from ..utils import as_bytes, intarr2str from .jwekey import JWEKey from .jwenc import JWEnc diff --git a/src/cryptojwt/jwe/jwe_rsa.py b/src/cryptojwt/jwe/jwe_rsa.py index 51965d3..0126bea 100644 --- a/src/cryptojwt/jwe/jwe_rsa.py +++ b/src/cryptojwt/jwe/jwe_rsa.py @@ -3,8 +3,7 @@ from ..utils import as_bytes from . import SUPPORTED -from .exception import NotSupportedAlgorithm -from .exception import ParameterError +from .exception import NotSupportedAlgorithm, ParameterError from .jwekey import JWEKey from .jwenc import JWEnc from .rsa import RSAEncrypter diff --git a/src/cryptojwt/jwe/jwekey.py b/src/cryptojwt/jwe/jwekey.py index 719e931..b4036f2 100644 --- a/src/cryptojwt/jwe/jwekey.py +++ b/src/cryptojwt/jwe/jwekey.py @@ -1,12 +1,8 @@ from ..jwx import JWx from . import KEY_LEN_BYTES -from .aes import AES_CBCEncrypter -from .aes import AES_GCMEncrypter -from .exception import DecryptionFailed -from .exception import NotSupportedAlgorithm -from .utils import alg2keytype -from .utils import get_random_bytes -from .utils import split_ctx_and_tag +from .aes import AES_CBCEncrypter, AES_GCMEncrypter +from .exception import DecryptionFailed, NotSupportedAlgorithm +from .utils import alg2keytype, get_random_bytes, split_ctx_and_tag class JWEKey(JWx): diff --git a/src/cryptojwt/jwe/utils.py b/src/cryptojwt/jwe/utils.py index f1c44aa..92985bc 100644 --- a/src/cryptojwt/jwe/utils.py +++ b/src/cryptojwt/jwe/utils.py @@ -3,9 +3,7 @@ from math import ceil from cryptography.hazmat.primitives import hashes -from cryptography.hazmat.primitives.hashes import SHA256 -from cryptography.hazmat.primitives.hashes import SHA384 -from cryptography.hazmat.primitives.hashes import SHA512 +from cryptography.hazmat.primitives.hashes import SHA256, SHA384, SHA512 LENMET = {32: (16, SHA256), 48: (24, SHA384), 64: (32, SHA512)} diff --git a/src/cryptojwt/jwk/__init__.py b/src/cryptojwt/jwk/__init__.py index 070b56e..ad25ba3 100644 --- a/src/cryptojwt/jwk/__init__.py +++ b/src/cryptojwt/jwk/__init__.py @@ -5,10 +5,7 @@ from typing import List from ..exception import UnsupportedAlgorithm -from ..utils import as_bytes -from ..utils import as_unicode -from ..utils import b64e -from ..utils import base64url_to_long +from ..utils import as_bytes, as_unicode, b64e, base64url_to_long from .utils import DIGEST_HASH USE = {"sign": "sig", "decrypt": "enc", "encrypt": "enc", "verify": "sig"} @@ -236,11 +233,7 @@ def __eq__(self, other): if set(self.__dict__.keys()) != set(other.__dict__.keys()): return False - for key in self.public_members: - if getattr(other, key) != getattr(self, key): - return False - - return True + return all(getattr(other, key) == getattr(self, key) for key in self.public_members) def keys(self): return list(self.to_dict().keys()) diff --git a/src/cryptojwt/jwk/asym.py b/src/cryptojwt/jwk/asym.py index 1930248..1a3b08c 100644 --- a/src/cryptojwt/jwk/asym.py +++ b/src/cryptojwt/jwk/asym.py @@ -1,5 +1,4 @@ -from . import JWK -from . import USE +from . import JWK, USE class AsymmetricKey(JWK): @@ -19,7 +18,7 @@ def __init__( k="", pub_key=None, priv_key=None, - **kwargs + **kwargs, ): JWK.__init__(self, kty, alg, use, kid, x5c, x5t, x5u, **kwargs) self.k = k diff --git a/src/cryptojwt/jwk/ec.py b/src/cryptojwt/jwk/ec.py index eedff4a..0b067c0 100644 --- a/src/cryptojwt/jwk/ec.py +++ b/src/cryptojwt/jwk/ec.py @@ -2,16 +2,14 @@ from cryptojwt.exception import KeyNotFound -from ..exception import DeSerializationNotPossible -from ..exception import JWKESTException -from ..exception import UnsupportedECurve -from ..utils import as_unicode -from ..utils import deser -from ..utils import long_to_base64 +from ..exception import DeSerializationNotPossible, JWKESTException, UnsupportedECurve +from ..utils import as_unicode, deser, long_to_base64 from .asym import AsymmetricKey -from .x509 import import_private_key_from_pem_file -from .x509 import import_public_key_from_pem_data -from .x509 import import_public_key_from_pem_file +from .x509 import ( + import_private_key_from_pem_file, + import_public_key_from_pem_data, + import_public_key_from_pem_file, +) # This is used to translate between the curve representation in # Cryptography and the one used by NIST (and in RFC 7518) diff --git a/src/cryptojwt/jwk/hmac.py b/src/cryptojwt/jwk/hmac.py index dc166cb..e4ad9b7 100644 --- a/src/cryptojwt/jwk/hmac.py +++ b/src/cryptojwt/jwk/hmac.py @@ -3,18 +3,10 @@ from cryptojwt.exception import KeyNotFound -from ..exception import JWKException -from ..exception import UnsupportedAlgorithm -from ..exception import WrongUsage -from ..utils import as_bytes -from ..utils import as_unicode -from ..utils import b64d -from ..utils import b64e -from . import JWK -from . import USE -from .utils import sha256_digest -from .utils import sha384_digest -from .utils import sha512_digest +from ..exception import JWKException, UnsupportedAlgorithm, WrongUsage +from ..utils import as_bytes, as_unicode, b64d, b64e +from . import JWK, USE +from .utils import sha256_digest, sha384_digest, sha512_digest logger = logging.getLogger(__name__) diff --git a/src/cryptojwt/jwk/jwk.py b/src/cryptojwt/jwk/jwk.py index 47bba71..b90e23b 100644 --- a/src/cryptojwt/jwk/jwk.py +++ b/src/cryptojwt/jwk/jwk.py @@ -2,21 +2,12 @@ import json import os -from cryptography.hazmat.primitives.asymmetric import ec -from cryptography.hazmat.primitives.asymmetric import ed448 -from cryptography.hazmat.primitives.asymmetric import ed25519 -from cryptography.hazmat.primitives.asymmetric import rsa -from cryptography.hazmat.primitives.asymmetric.rsa import rsa_crt_dmp1 -from cryptography.hazmat.primitives.asymmetric.rsa import rsa_crt_dmq1 -from cryptography.hazmat.primitives.asymmetric.rsa import rsa_crt_iqmp - -from ..exception import MissingValue -from ..exception import UnknownKeyType -from ..exception import UnsupportedAlgorithm -from ..exception import WrongKeyType +from cryptography.hazmat.primitives.asymmetric import ec, ed448, ed25519, rsa +from cryptography.hazmat.primitives.asymmetric.rsa import rsa_crt_dmp1, rsa_crt_dmq1, rsa_crt_iqmp + +from ..exception import MissingValue, UnknownKeyType, UnsupportedAlgorithm, WrongKeyType from ..utils import base64url_to_long -from .ec import NIST2SEC -from .ec import ECKey +from .ec import NIST2SEC, ECKey from .hmac import SYMKey from .okp import OKPKey from .rsa import RSAKey diff --git a/src/cryptojwt/jwk/okp.py b/src/cryptojwt/jwk/okp.py index f58f71a..1425f90 100644 --- a/src/cryptojwt/jwk/okp.py +++ b/src/cryptojwt/jwk/okp.py @@ -1,22 +1,18 @@ from typing import Union from cryptography.hazmat.primitives import serialization -from cryptography.hazmat.primitives.asymmetric import ed448 -from cryptography.hazmat.primitives.asymmetric import ed25519 -from cryptography.hazmat.primitives.asymmetric import x448 -from cryptography.hazmat.primitives.asymmetric import x25519 +from cryptography.hazmat.primitives.asymmetric import ed448, ed25519, x448, x25519 from cryptojwt.exception import KeyNotFound -from ..exception import DeSerializationNotPossible -from ..exception import JWKESTException -from ..exception import UnsupportedOKPCurve -from ..utils import b64d -from ..utils import b64e +from ..exception import DeSerializationNotPossible, JWKESTException, UnsupportedOKPCurve +from ..utils import b64d, b64e from .asym import AsymmetricKey -from .x509 import import_private_key_from_pem_file -from .x509 import import_public_key_from_pem_data -from .x509 import import_public_key_from_pem_file +from .x509 import ( + import_private_key_from_pem_file, + import_public_key_from_pem_data, + import_public_key_from_pem_file, +) OKPPublicKey = Union[ ed25519.Ed25519PublicKey, ed448.Ed448PublicKey, x25519.X25519PublicKey, x448.X448PublicKey diff --git a/src/cryptojwt/jwk/rsa.py b/src/cryptojwt/jwk/rsa.py index 14f88c7..4bd0c03 100644 --- a/src/cryptojwt/jwk/rsa.py +++ b/src/cryptojwt/jwk/rsa.py @@ -6,20 +6,22 @@ from cryptojwt.exception import KeyNotFound -from ..exception import DeSerializationNotPossible -from ..exception import JWKESTException -from ..exception import SerializationNotPossible -from ..exception import UnsupportedKeyType -from ..utils import as_unicode -from ..utils import deser -from ..utils import long_to_base64 +from ..exception import ( + DeSerializationNotPossible, + JWKESTException, + SerializationNotPossible, + UnsupportedKeyType, +) +from ..utils import as_unicode, deser, long_to_base64 from . import JWK from .asym import AsymmetricKey -from .x509 import der_cert -from .x509 import import_private_key_from_pem_file -from .x509 import import_public_key_from_pem_data -from .x509 import import_public_key_from_pem_file -from .x509 import x5t_calculation +from .x509 import ( + der_cert, + import_private_key_from_pem_file, + import_public_key_from_pem_data, + import_public_key_from_pem_file, + x5t_calculation, +) logger = logging.getLogger(__name__) @@ -254,7 +256,7 @@ def __init__( dq="", di="", qi="", - **kwargs + **kwargs, ): AsymmetricKey.__init__(self, kty, alg, use, kid, x5c, x5t, x5u, **kwargs) self.n = n @@ -322,10 +324,7 @@ def deserialize(self): _cert_chain.append(der_cert(base64.b64decode(der_data))) if self.x5t: # verify the cert thumbprint - if isinstance(self.x5t, bytes): - _x5t = self.x5t - else: - _x5t = self.x5t.encode("ascii") + _x5t = self.x5t if isinstance(self.x5t, bytes) else self.x5t.encode("ascii") if _x5t != x5t_calculation(self.x5c[0]): raise DeSerializationNotPossible( "The thumbprint 'x5t' does not match the certificate." diff --git a/src/cryptojwt/jwk/x509.py b/src/cryptojwt/jwk/x509.py index c08bd63..faeda60 100644 --- a/src/cryptojwt/jwk/x509.py +++ b/src/cryptojwt/jwk/x509.py @@ -4,8 +4,7 @@ from cryptography import x509 from cryptography.hazmat.primitives import serialization -from cryptography.hazmat.primitives.asymmetric import ec -from cryptography.hazmat.primitives.asymmetric import rsa +from cryptography.hazmat.primitives.asymmetric import ec, rsa from cryptojwt.utils import b64e diff --git a/src/cryptojwt/jws/dsa.py b/src/cryptojwt/jws/dsa.py index 536d14f..d32f93c 100644 --- a/src/cryptojwt/jws/dsa.py +++ b/src/cryptojwt/jws/dsa.py @@ -1,11 +1,12 @@ from cryptography.exceptions import InvalidSignature from cryptography.hazmat.primitives import hashes from cryptography.hazmat.primitives.asymmetric import ec -from cryptography.hazmat.primitives.asymmetric.utils import decode_dss_signature -from cryptography.hazmat.primitives.asymmetric.utils import encode_dss_signature +from cryptography.hazmat.primitives.asymmetric.utils import ( + decode_dss_signature, + encode_dss_signature, +) -from ..exception import BadSignature -from ..exception import Unsupported +from ..exception import BadSignature, Unsupported from . import Signer diff --git a/src/cryptojwt/jws/eddsa.py b/src/cryptojwt/jws/eddsa.py index cf88ba5..f1dffd7 100644 --- a/src/cryptojwt/jws/eddsa.py +++ b/src/cryptojwt/jws/eddsa.py @@ -1,6 +1,5 @@ from cryptography.exceptions import InvalidSignature -from cryptography.hazmat.primitives.asymmetric import ed448 -from cryptography.hazmat.primitives.asymmetric import ed25519 +from cryptography.hazmat.primitives.asymmetric import ed448, ed25519 from ..exception import BadSignature from . import Signer diff --git a/src/cryptojwt/jws/hmac.py b/src/cryptojwt/jws/hmac.py index 775dbd2..2b34dae 100644 --- a/src/cryptojwt/jws/hmac.py +++ b/src/cryptojwt/jws/hmac.py @@ -1,5 +1,4 @@ -from cryptography.hazmat.primitives import hashes -from cryptography.hazmat.primitives import hmac +from cryptography.hazmat.primitives import hashes, hmac from ..exception import Unsupported from . import Signer diff --git a/src/cryptojwt/jws/jws.py b/src/cryptojwt/jws/jws.py index 686b5f8..8afe818 100644 --- a/src/cryptojwt/jws/jws.py +++ b/src/cryptojwt/jws/jws.py @@ -5,20 +5,14 @@ from cryptojwt.jws.exception import JWSException -from ..exception import BadSignature -from ..exception import UnknownAlgorithm -from ..exception import WrongNumberOfParts +from ..exception import BadSignature, UnknownAlgorithm, WrongNumberOfParts from ..jwk.asym import AsymmetricKey from ..jwx import JWx from ..simple_jwt import SimpleJWT -from ..utils import b64d_enc_dec -from ..utils import b64e_enc_dec -from ..utils import b64encode_item +from ..utils import b64d_enc_dec, b64e_enc_dec, b64encode_item from .dsa import ECDSASigner from .eddsa import EDDSASigner -from .exception import FormatError -from .exception import NoSuitableSigningKeys -from .exception import SignerAlgError +from .exception import FormatError, NoSuitableSigningKeys, SignerAlgError from .hmac import HMACSigner from .pss import PSSSigner from .rsa import RSASigner @@ -60,10 +54,7 @@ def __len__(self): return len(self.part) def valid(self): - if len(self) != 3: - return False - - return True + return len(self) == 3 class JWS(JWx): @@ -382,11 +373,10 @@ def _is_json_serialized_jws(self, json_jws): """ json_ser_keys = {"payload", "signatures"} flattened_json_ser_keys = {"payload", "signature"} - if not json_ser_keys.issubset(json_jws.keys()) and not flattened_json_ser_keys.issubset( - json_jws.keys() - ): - return False - return True + return not ( + not json_ser_keys.issubset(json_jws.keys()) + and not flattened_json_ser_keys.issubset(json_jws.keys()) + ) def _is_compact_jws(self, jws): """ diff --git a/src/cryptojwt/jws/pss.py b/src/cryptojwt/jws/pss.py index 65362a4..f8e5a6d 100644 --- a/src/cryptojwt/jws/pss.py +++ b/src/cryptojwt/jws/pss.py @@ -2,11 +2,9 @@ from cryptography.exceptions import InvalidSignature from cryptography.hazmat.primitives import hashes -from cryptography.hazmat.primitives.asymmetric import padding -from cryptography.hazmat.primitives.asymmetric import utils +from cryptography.hazmat.primitives.asymmetric import padding, utils -from ..exception import BadSignature -from ..exception import Unsupported +from ..exception import BadSignature, Unsupported from . import Signer logger = logging.getLogger(__name__) diff --git a/src/cryptojwt/jws/utils.py b/src/cryptojwt/jws/utils.py index c025282..af602c4 100644 --- a/src/cryptojwt/jws/utils.py +++ b/src/cryptojwt/jws/utils.py @@ -4,11 +4,8 @@ from cryptography.hazmat.primitives.asymmetric import padding from ..exception import UnsupportedAlgorithm -from ..jwk.hmac import sha256_digest -from ..jwk.hmac import sha384_digest -from ..jwk.hmac import sha512_digest -from ..utils import as_unicode -from ..utils import b64e +from ..jwk.hmac import sha256_digest, sha384_digest, sha512_digest +from ..utils import as_unicode, b64e def left_hash(msg, func="HS256"): diff --git a/src/cryptojwt/jwt.py b/src/cryptojwt/jwt.py index 75cc0d9..19e70e7 100755 --- a/src/cryptojwt/jwt.py +++ b/src/cryptojwt/jwt.py @@ -6,19 +6,13 @@ import time import uuid from json import JSONDecodeError -from typing import Dict -from typing import List -from typing import MutableMapping -from typing import Optional - -from .exception import HeaderError -from .exception import VerificationError -from .jwe.jwe import JWE -from .jwe.jwe import factory as jwe_factory +from typing import Dict, List, MutableMapping, Optional + +from .exception import HeaderError, VerificationError +from .jwe.jwe import JWE, factory as jwe_factory from .jwe.utils import alg2keytype as jwe_alg2keytype from .jws.exception import NoSuitableSigningKeys -from .jws.jws import JWS -from .jws.jws import factory as jws_factory +from .jws.jws import JWS, factory as jws_factory from .jws.utils import alg2keytype as jws_alg2keytype from .utils import as_unicode diff --git a/src/cryptojwt/jwx.py b/src/cryptojwt/jwx.py index ac214fb..d63308e 100644 --- a/src/cryptojwt/jwx.py +++ b/src/cryptojwt/jwx.py @@ -12,12 +12,9 @@ from .exception import HeaderError from .jwe import DEPRECATED from .jwk.jwk import key_from_jwk_dict -from .jwk.rsa import RSAKey -from .jwk.rsa import import_rsa_key +from .jwk.rsa import RSAKey, import_rsa_key from .jwk.x509 import load_x509_cert -from .utils import as_bytes -from .utils import as_unicode -from .utils import b64d +from .utils import as_bytes, as_unicode, b64d LOGGER = logging.getLogger(__name__) diff --git a/src/cryptojwt/key_bundle.py b/src/cryptojwt/key_bundle.py index c06e94e..0b286fa 100755 --- a/src/cryptojwt/key_bundle.py +++ b/src/cryptojwt/key_bundle.py @@ -9,8 +9,7 @@ import time from datetime import datetime from functools import cmp_to_key -from typing import List -from typing import Optional +from typing import List, Optional import requests @@ -19,23 +18,19 @@ from cryptojwt.jwk.okp import OKP_CRV2PUBLIC from cryptojwt.jwk.x509 import import_private_key_from_pem_file -from .exception import JWKException -from .exception import UnknownKeyType -from .exception import UnsupportedAlgorithm -from .exception import UnsupportedECurve -from .exception import UpdateFailed -from .jwk.ec import ECKey -from .jwk.ec import new_ec_key +from .exception import ( + JWKException, + UnknownKeyType, + UnsupportedAlgorithm, + UnsupportedECurve, + UpdateFailed, +) +from .jwk.ec import ECKey, new_ec_key from .jwk.hmac import SYMKey -from .jwk.jwk import dump_jwk -from .jwk.jwk import import_jwk -from .jwk.okp import OKPKey -from .jwk.okp import new_okp_key -from .jwk.rsa import RSAKey -from .jwk.rsa import new_rsa_key -from .utils import as_unicode -from .utils import check_content_type -from .utils import httpc_params_loader +from .jwk.jwk import dump_jwk, import_jwk +from .jwk.okp import OKPKey, new_okp_key +from .jwk.rsa import RSAKey, new_rsa_key +from .utils import as_unicode, check_content_type, httpc_params_loader __author__ = "Roland Hedberg" diff --git a/src/cryptojwt/key_issuer.py b/src/cryptojwt/key_issuer.py index 6312940..80b7abd 100755 --- a/src/cryptojwt/key_issuer.py +++ b/src/cryptojwt/key_issuer.py @@ -1,20 +1,14 @@ import json import logging import os -from typing import List -from typing import Optional +from typing import List, Optional from requests import request from .jwe.utils import alg2keytype as jwe_alg2keytype from .jws.utils import alg2keytype as jws_alg2keytype -from .key_bundle import KeyBundle -from .key_bundle import build_key_bundle -from .key_bundle import key_diff -from .key_bundle import update_key_bundle -from .utils import httpc_params_loader -from .utils import importer -from .utils import qualified_name +from .key_bundle import KeyBundle, build_key_bundle, key_diff, update_key_bundle +from .utils import httpc_params_loader, importer, qualified_name __author__ = "Roland Hedberg" @@ -286,10 +280,7 @@ def get(self, key_use, key_type="", kid=None, alg="", **kwargs): if not key_type: if alg: - if use == "sig": - key_type = jws_alg2keytype(alg) - else: - key_type = jwe_alg2keytype(alg) + key_type = jws_alg2keytype(alg) if use == "sig" else jwe_alg2keytype(alg) lst = [] for bundle in self._bundles: diff --git a/src/cryptojwt/key_jar.py b/src/cryptojwt/key_jar.py index 46d52ad..75c42f5 100755 --- a/src/cryptojwt/key_jar.py +++ b/src/cryptojwt/key_jar.py @@ -1,8 +1,7 @@ import contextlib import json import logging -from typing import List -from typing import Optional +from typing import List, Optional from requests import request @@ -12,13 +11,8 @@ from .jwe.jwe import alg2keytype as jwe_alg2keytype from .jws.utils import alg2keytype as jws_alg2keytype from .key_bundle import KeyBundle -from .key_issuer import KeyIssuer -from .key_issuer import build_keyissuer -from .key_issuer import init_key_issuer -from .utils import deprecated_alias -from .utils import httpc_params_loader -from .utils import importer -from .utils import qualified_name +from .key_issuer import KeyIssuer, build_keyissuer, init_key_issuer +from .utils import deprecated_alias, httpc_params_loader, importer, qualified_name __author__ = "Roland Hedberg" @@ -234,10 +228,7 @@ def keys_by_alg_and_usage(self, issuer_id, alg, usage): :param usage: What the key should be used for :return: A possibly empty list of keys """ - if usage in ["sig", "ver"]: - ktype = jws_alg2keytype(alg) - else: - ktype = jwe_alg2keytype(alg) + ktype = jws_alg2keytype(alg) if usage in ["sig", "ver"] else jwe_alg2keytype(alg) return self.get(usage, ktype, issuer_id) diff --git a/src/cryptojwt/simple_jwt.py b/src/cryptojwt/simple_jwt.py index f2c4515..7a618e2 100644 --- a/src/cryptojwt/simple_jwt.py +++ b/src/cryptojwt/simple_jwt.py @@ -4,10 +4,7 @@ from cryptojwt.exception import HeaderError -from .utils import as_unicode -from .utils import b64d -from .utils import b64encode_item -from .utils import split_token +from .utils import as_unicode, b64d, b64encode_item, split_token __author__ = "Roland Hedberg" diff --git a/src/cryptojwt/tools/jwtpeek.py b/src/cryptojwt/tools/jwtpeek.py index 2d56871..7dfaa96 100755 --- a/src/cryptojwt/tools/jwtpeek.py +++ b/src/cryptojwt/tools/jwtpeek.py @@ -13,8 +13,7 @@ from cryptojwt.jwe import jwe from cryptojwt.jwk.hmac import SYMKey from cryptojwt.jwk.jwk import key_from_jwk_dict -from cryptojwt.jwk.rsa import RSAKey -from cryptojwt.jwk.rsa import import_rsa_key +from cryptojwt.jwk.rsa import RSAKey, import_rsa_key from cryptojwt.jws import jws from cryptojwt.key_bundle import KeyBundle from cryptojwt.key_issuer import KeyIssuer diff --git a/src/cryptojwt/tools/keyconv.py b/src/cryptojwt/tools/keyconv.py index 5a9234d..fc1b966 100644 --- a/src/cryptojwt/tools/keyconv.py +++ b/src/cryptojwt/tools/keyconv.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 """Convert JWK from/to PEM and other formats""" + import argparse import json from binascii import hexlify @@ -10,16 +11,18 @@ from cryptography.hazmat.primitives import serialization from cryptojwt.jwk import JWK -from cryptojwt.jwk.ec import ECKey -from cryptojwt.jwk.ec import import_private_ec_key_from_file -from cryptojwt.jwk.ec import import_public_ec_key_from_file +from cryptojwt.jwk.ec import ECKey, import_private_ec_key_from_file, import_public_ec_key_from_file from cryptojwt.jwk.hmac import SYMKey -from cryptojwt.jwk.okp import OKPKey -from cryptojwt.jwk.okp import import_private_okp_key_from_file -from cryptojwt.jwk.okp import import_public_okp_key_from_file -from cryptojwt.jwk.rsa import RSAKey -from cryptojwt.jwk.rsa import import_private_rsa_key_from_file -from cryptojwt.jwk.rsa import import_public_rsa_key_from_file +from cryptojwt.jwk.okp import ( + OKPKey, + import_private_okp_key_from_file, + import_public_okp_key_from_file, +) +from cryptojwt.jwk.rsa import ( + RSAKey, + import_private_rsa_key_from_file, + import_public_rsa_key_from_file, +) from cryptojwt.jwx import key_from_jwk_dict diff --git a/src/cryptojwt/tools/keygen.py b/src/cryptojwt/tools/keygen.py index 718bb62..4ee0f17 100644 --- a/src/cryptojwt/tools/keygen.py +++ b/src/cryptojwt/tools/keygen.py @@ -1,15 +1,14 @@ #!/usr/bin/env python3 """JSON Web Key (JWK) Generator""" + import argparse import json import sys -from cryptojwt.jwk.ec import NIST2SEC -from cryptojwt.jwk.ec import new_ec_key +from cryptojwt.jwk.ec import NIST2SEC, new_ec_key from cryptojwt.jwk.hmac import new_sym_key -from cryptojwt.jwk.okp import OKP_CRV2PUBLIC -from cryptojwt.jwk.okp import new_okp_key +from cryptojwt.jwk.okp import OKP_CRV2PUBLIC, new_okp_key from cryptojwt.jwk.rsa import new_rsa_key DEFAULT_SYM_KEYSIZE = 32 diff --git a/src/cryptojwt/utils.py b/src/cryptojwt/utils.py index 47785e0..535c776 100644 --- a/src/cryptojwt/utils.py +++ b/src/cryptojwt/utils.py @@ -294,10 +294,7 @@ def is_compact_jws(token): except Exception: return False - if "alg" not in _header: - return False - - return True + return "alg" in _header def is_jwe(token): @@ -324,10 +321,7 @@ def is_jwe(token): except Exception: return False - if "alg" not in _header or "enc" not in _header: - return False - - return True + return not ("alg" not in _header or "enc" not in _header) def is_json_jws(token): diff --git a/tests/invalid_ecdh.py b/tests/invalid_ecdh.py index 52e6fcc..fb8b98d 100644 --- a/tests/invalid_ecdh.py +++ b/tests/invalid_ecdh.py @@ -1,7 +1,6 @@ import pytest -from cryptojwt.jwe import JWE_EC -from cryptojwt.jwe import factory +from cryptojwt.jwe import JWE_EC, factory from cryptojwt.jwk import ECKey JWK = { diff --git a/tests/test_02_jwk.py b/tests/test_02_jwk.py index 3eeddd3..60d0a0d 100755 --- a/tests/test_02_jwk.py +++ b/tests/test_02_jwk.py @@ -7,41 +7,30 @@ from collections import Counter import pytest -from cryptography.hazmat.primitives.asymmetric import ec -from cryptography.hazmat.primitives.asymmetric import ed25519 -from cryptography.hazmat.primitives.asymmetric import rsa - -from cryptojwt.exception import DeSerializationNotPossible -from cryptojwt.exception import UnsupportedAlgorithm -from cryptojwt.exception import WrongUsage -from cryptojwt.jwk import JWK -from cryptojwt.jwk import certificate_fingerprint -from cryptojwt.jwk import pem_hash -from cryptojwt.jwk import pems_to_x5c -from cryptojwt.jwk.ec import ECKey -from cryptojwt.jwk.ec import new_ec_key -from cryptojwt.jwk.hmac import SYMKey -from cryptojwt.jwk.hmac import new_sym_key -from cryptojwt.jwk.hmac import sha256_digest -from cryptojwt.jwk.jwk import dump_jwk -from cryptojwt.jwk.jwk import import_jwk -from cryptojwt.jwk.jwk import jwk_wrap -from cryptojwt.jwk.jwk import key_from_jwk_dict -from cryptojwt.jwk.okp import OKPKey -from cryptojwt.jwk.okp import new_okp_key -from cryptojwt.jwk.rsa import RSAKey -from cryptojwt.jwk.rsa import import_private_rsa_key_from_file -from cryptojwt.jwk.rsa import import_public_rsa_key_from_file -from cryptojwt.jwk.rsa import import_rsa_key_from_cert_file -from cryptojwt.jwk.rsa import new_rsa_key -from cryptojwt.jwk.x509 import import_public_key_from_pem_file -from cryptojwt.jwk.x509 import x5t_calculation -from cryptojwt.utils import as_bytes -from cryptojwt.utils import as_unicode -from cryptojwt.utils import b64e -from cryptojwt.utils import base64_to_long -from cryptojwt.utils import base64url_to_long -from cryptojwt.utils import long2intarr +from cryptography.hazmat.primitives.asymmetric import ec, ed25519, rsa + +from cryptojwt.exception import DeSerializationNotPossible, UnsupportedAlgorithm, WrongUsage +from cryptojwt.jwk import JWK, certificate_fingerprint, pem_hash, pems_to_x5c +from cryptojwt.jwk.ec import ECKey, new_ec_key +from cryptojwt.jwk.hmac import SYMKey, new_sym_key, sha256_digest +from cryptojwt.jwk.jwk import dump_jwk, import_jwk, jwk_wrap, key_from_jwk_dict +from cryptojwt.jwk.okp import OKPKey, new_okp_key +from cryptojwt.jwk.rsa import ( + RSAKey, + import_private_rsa_key_from_file, + import_public_rsa_key_from_file, + import_rsa_key_from_cert_file, + new_rsa_key, +) +from cryptojwt.jwk.x509 import import_public_key_from_pem_file, x5t_calculation +from cryptojwt.utils import ( + as_bytes, + as_unicode, + b64e, + base64_to_long, + base64url_to_long, + long2intarr, +) __author__ = "Roland Hedberg" BASEDIR = os.path.abspath(os.path.dirname(__file__)) diff --git a/tests/test_03_key_bundle.py b/tests/test_03_key_bundle.py index cc1704c..c235157 100755 --- a/tests/test_03_key_bundle.py +++ b/tests/test_03_key_bundle.py @@ -12,25 +12,24 @@ from cryptography.hazmat.primitives.asymmetric import rsa from cryptojwt.exception import UnknownKeyType -from cryptojwt.jwk.ec import ECKey -from cryptojwt.jwk.ec import new_ec_key +from cryptojwt.jwk.ec import ECKey, new_ec_key from cryptojwt.jwk.hmac import SYMKey from cryptojwt.jwk.okp import OKPKey -from cryptojwt.jwk.rsa import RSAKey -from cryptojwt.jwk.rsa import import_rsa_key_from_cert_file -from cryptojwt.jwk.rsa import new_rsa_key -from cryptojwt.key_bundle import KeyBundle -from cryptojwt.key_bundle import UpdateFailed -from cryptojwt.key_bundle import build_key_bundle -from cryptojwt.key_bundle import dump_jwks -from cryptojwt.key_bundle import init_key -from cryptojwt.key_bundle import key_diff -from cryptojwt.key_bundle import key_gen -from cryptojwt.key_bundle import key_rollover -from cryptojwt.key_bundle import keybundle_from_local_file -from cryptojwt.key_bundle import rsa_init -from cryptojwt.key_bundle import unique_keys -from cryptojwt.key_bundle import update_key_bundle +from cryptojwt.jwk.rsa import RSAKey, import_rsa_key_from_cert_file, new_rsa_key +from cryptojwt.key_bundle import ( + KeyBundle, + UpdateFailed, + build_key_bundle, + dump_jwks, + init_key, + key_diff, + key_gen, + key_rollover, + keybundle_from_local_file, + rsa_init, + unique_keys, + update_key_bundle, +) __author__ = "Roland Hedberg" diff --git a/tests/test_04_key_issuer.py b/tests/test_04_key_issuer.py index a9d05bf..2d702bc 100755 --- a/tests/test_04_key_issuer.py +++ b/tests/test_04_key_issuer.py @@ -8,11 +8,8 @@ from cryptojwt.exception import JWKESTException from cryptojwt.jwk.hmac import SYMKey -from cryptojwt.key_bundle import KeyBundle -from cryptojwt.key_bundle import keybundle_from_local_file -from cryptojwt.key_issuer import KeyIssuer -from cryptojwt.key_issuer import build_keyissuer -from cryptojwt.key_issuer import init_key_issuer +from cryptojwt.key_bundle import KeyBundle, keybundle_from_local_file +from cryptojwt.key_issuer import KeyIssuer, build_keyissuer, init_key_issuer __author__ = "Roland Hedberg" diff --git a/tests/test_04_key_jar.py b/tests/test_04_key_jar.py index 71fadd2..eecb438 100755 --- a/tests/test_04_key_jar.py +++ b/tests/test_04_key_jar.py @@ -6,18 +6,11 @@ import pytest -from cryptojwt.exception import IssuerNotFound -from cryptojwt.exception import JWKESTException +from cryptojwt.exception import IssuerNotFound, JWKESTException from cryptojwt.jwe.jwenc import JWEnc -from cryptojwt.jws.jws import JWS -from cryptojwt.jws.jws import factory -from cryptojwt.key_bundle import KeyBundle -from cryptojwt.key_bundle import keybundle_from_local_file -from cryptojwt.key_bundle import rsa_init -from cryptojwt.key_jar import KeyJar -from cryptojwt.key_jar import build_keyjar -from cryptojwt.key_jar import init_key_jar -from cryptojwt.key_jar import rotate_keys +from cryptojwt.jws.jws import JWS, factory +from cryptojwt.key_bundle import KeyBundle, keybundle_from_local_file, rsa_init +from cryptojwt.key_jar import KeyJar, build_keyjar, init_key_jar, rotate_keys __author__ = "Roland Hedberg" diff --git a/tests/test_06_jws.py b/tests/test_06_jws.py index 9275156..dff22e6 100644 --- a/tests/test_06_jws.py +++ b/tests/test_06_jws.py @@ -2,36 +2,28 @@ import os.path import pytest -from cryptography.hazmat.primitives.asymmetric import ec -from cryptography.hazmat.primitives.asymmetric import ed25519 +from cryptography.hazmat.primitives.asymmetric import ec, ed25519 from cryptojwt import as_unicode -from cryptojwt.exception import BadSignature -from cryptojwt.exception import UnknownAlgorithm -from cryptojwt.exception import WrongNumberOfParts +from cryptojwt.exception import BadSignature, UnknownAlgorithm, WrongNumberOfParts from cryptojwt.jwk.ec import ECKey from cryptojwt.jwk.hmac import SYMKey from cryptojwt.jwk.okp import OKPKey -from cryptojwt.jwk.rsa import RSAKey -from cryptojwt.jwk.rsa import import_private_rsa_key_from_file -from cryptojwt.jws.exception import FormatError -from cryptojwt.jws.exception import NoSuitableSigningKeys -from cryptojwt.jws.exception import SignerAlgError -from cryptojwt.jws.jws import JWS -from cryptojwt.jws.jws import SIGNER_ALGS -from cryptojwt.jws.jws import JWSig -from cryptojwt.jws.jws import factory +from cryptojwt.jwk.rsa import RSAKey, import_private_rsa_key_from_file +from cryptojwt.jws.exception import FormatError, NoSuitableSigningKeys, SignerAlgError +from cryptojwt.jws.jws import JWS, SIGNER_ALGS, JWSig, factory from cryptojwt.jws.rsa import RSASigner -from cryptojwt.jws.utils import left_hash -from cryptojwt.jws.utils import parse_rsa_algorithm +from cryptojwt.jws.utils import left_hash, parse_rsa_algorithm from cryptojwt.key_bundle import KeyBundle -from cryptojwt.utils import as_bytes -from cryptojwt.utils import b64d -from cryptojwt.utils import b64d_enc_dec -from cryptojwt.utils import b64e -from cryptojwt.utils import intarr2bin -from cryptojwt.utils import is_compact_jws -from cryptojwt.utils import is_json_jws +from cryptojwt.utils import ( + as_bytes, + b64d, + b64d_enc_dec, + b64e, + intarr2bin, + is_compact_jws, + is_json_jws, +) BASEDIR = os.path.abspath(os.path.dirname(__file__)) diff --git a/tests/test_07_jwe.py b/tests/test_07_jwe.py index 9f4f5e8..ac855d0 100644 --- a/tests/test_07_jwe.py +++ b/tests/test_07_jwe.py @@ -9,30 +9,24 @@ import pytest from cryptography.hazmat.primitives.asymmetric import ec -from cryptojwt.exception import BadSyntax -from cryptojwt.exception import HeaderError -from cryptojwt.exception import MissingKey -from cryptojwt.exception import Unsupported -from cryptojwt.exception import VerificationError -from cryptojwt.jwe.aes import AES_CBCEncrypter -from cryptojwt.jwe.aes import AES_GCMEncrypter -from cryptojwt.jwe.exception import NoSuitableDecryptionKey -from cryptojwt.jwe.exception import NoSuitableEncryptionKey -from cryptojwt.jwe.exception import UnsupportedBitLength -from cryptojwt.jwe.exception import WrongEncryptionAlgorithm +from cryptojwt.exception import BadSyntax, HeaderError, MissingKey, Unsupported, VerificationError +from cryptojwt.jwe.aes import AES_CBCEncrypter, AES_GCMEncrypter +from cryptojwt.jwe.exception import ( + NoSuitableDecryptionKey, + NoSuitableEncryptionKey, + UnsupportedBitLength, + WrongEncryptionAlgorithm, +) from cryptojwt.jwe.fernet import FernetEncrypter -from cryptojwt.jwe.jwe import JWE -from cryptojwt.jwe.jwe import factory +from cryptojwt.jwe.jwe import JWE, factory from cryptojwt.jwe.jwe_ec import JWE_EC from cryptojwt.jwe.jwe_hmac import JWE_SYM from cryptojwt.jwe.jwe_rsa import JWE_RSA from cryptojwt.jwe.utils import split_ctx_and_tag from cryptojwt.jwk.ec import ECKey from cryptojwt.jwk.hmac import SYMKey -from cryptojwt.jwk.rsa import RSAKey -from cryptojwt.jwk.rsa import import_private_rsa_key_from_file -from cryptojwt.utils import as_bytes -from cryptojwt.utils import b64e +from cryptojwt.jwk.rsa import RSAKey, import_private_rsa_key_from_file +from cryptojwt.utils import as_bytes, b64e __author__ = "rohe0002" diff --git a/tests/test_09_jwt.py b/tests/test_09_jwt.py index 1fa43db..c309b17 100755 --- a/tests/test_09_jwt.py +++ b/tests/test_09_jwt.py @@ -3,13 +3,9 @@ import pytest from cryptojwt.jws.exception import NoSuitableSigningKeys -from cryptojwt.jwt import JWT -from cryptojwt.jwt import VerificationError -from cryptojwt.jwt import pick_key -from cryptojwt.jwt import utc_time_sans_frac +from cryptojwt.jwt import JWT, VerificationError, pick_key, utc_time_sans_frac from cryptojwt.key_bundle import KeyBundle -from cryptojwt.key_jar import KeyJar -from cryptojwt.key_jar import init_key_jar +from cryptojwt.key_jar import KeyJar, init_key_jar __author__ = "Roland Hedberg" diff --git a/tests/test_10_jwk_wrap.py b/tests/test_10_jwk_wrap.py index 2f7792f..69f21a5 100755 --- a/tests/test_10_jwk_wrap.py +++ b/tests/test_10_jwk_wrap.py @@ -3,8 +3,7 @@ from cryptojwt.jwk.ec import new_ec_key from cryptojwt.jwk.hmac import SYMKey from cryptojwt.jwk.rsa import new_rsa_key -from cryptojwt.jwk.wrap import unwrap_key -from cryptojwt.jwk.wrap import wrap_key +from cryptojwt.jwk.wrap import unwrap_key, wrap_key __author__ = "jschlyter" diff --git a/tests/test_20_jws.py b/tests/test_20_jws.py index cb7a453..151090b 100644 --- a/tests/test_20_jws.py +++ b/tests/test_20_jws.py @@ -10,8 +10,7 @@ from cryptojwt.jws.exception import NoSuitableSigningKeys from cryptojwt.jws.jws import JWS from cryptojwt.key_bundle import KeyBundle -from cryptojwt.utils import as_bytes -from cryptojwt.utils import as_unicode +from cryptojwt.utils import as_bytes, as_unicode sys.path.insert(0, ". ") diff --git a/tests/test_50_argument_alias.py b/tests/test_50_argument_alias.py index 1607010..8783a63 100644 --- a/tests/test_50_argument_alias.py +++ b/tests/test_50_argument_alias.py @@ -2,10 +2,8 @@ import pytest -from cryptojwt.jws.jws import JWS -from cryptojwt.jws.jws import factory -from cryptojwt.key_jar import build_keyjar -from cryptojwt.key_jar import init_key_jar +from cryptojwt.jws.jws import JWS, factory +from cryptojwt.key_jar import build_keyjar, init_key_jar __author__ = "Roland Hedberg"