diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1959583..4eff98f 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 + #- id: ruff-format diff --git a/pyproject.toml b/pyproject.toml index 39dfdeb..3e2f5e6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -54,13 +54,16 @@ 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.ruff] +line-length = 100 + [tool.ruff.lint] select = [ # pycodestyle @@ -78,3 +81,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/jwe/jwe.py b/src/cryptojwt/jwe/jwe.py index ad11244..8d93a8a 100644 --- a/src/cryptojwt/jwe/jwe.py +++ b/src/cryptojwt/jwe/jwe.py @@ -171,10 +171,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/jwk/__init__.py b/src/cryptojwt/jwk/__init__.py index 070b56e..1925b63 100644 --- a/src/cryptojwt/jwk/__init__.py +++ b/src/cryptojwt/jwk/__init__.py @@ -236,11 +236,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..f13de6c 100644 --- a/src/cryptojwt/jwk/asym.py +++ b/src/cryptojwt/jwk/asym.py @@ -19,7 +19,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/rsa.py b/src/cryptojwt/jwk/rsa.py index 14f88c7..e118068 100644 --- a/src/cryptojwt/jwk/rsa.py +++ b/src/cryptojwt/jwk/rsa.py @@ -254,7 +254,7 @@ def __init__( dq="", di="", qi="", - **kwargs + **kwargs, ): AsymmetricKey.__init__(self, kty, alg, use, kid, x5c, x5t, x5u, **kwargs) self.n = n @@ -322,10 +322,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/jws/jws.py b/src/cryptojwt/jws/jws.py index 686b5f8..4e10557 100644 --- a/src/cryptojwt/jws/jws.py +++ b/src/cryptojwt/jws/jws.py @@ -60,10 +60,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 +379,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/key_issuer.py b/src/cryptojwt/key_issuer.py index 6312940..f46f740 100755 --- a/src/cryptojwt/key_issuer.py +++ b/src/cryptojwt/key_issuer.py @@ -286,10 +286,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..0ab8f69 100755 --- a/src/cryptojwt/key_jar.py +++ b/src/cryptojwt/key_jar.py @@ -234,10 +234,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/tools/keyconv.py b/src/cryptojwt/tools/keyconv.py index 5a9234d..29f14bc 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 diff --git a/src/cryptojwt/tools/keygen.py b/src/cryptojwt/tools/keygen.py index 718bb62..1432552 100644 --- a/src/cryptojwt/tools/keygen.py +++ b/src/cryptojwt/tools/keygen.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 """JSON Web Key (JWK) Generator""" + import argparse import json import sys 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):