Skip to content

Commit 75d9f95

Browse files
committed
fix(typing): use cast for type hints
1 parent 6d24037 commit 75d9f95

3 files changed

Lines changed: 20 additions & 17 deletions

File tree

src/joserfc/_keys.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ def import_key(cls, data: AnyKey, key_type: str | None = None, parameters: KeyPa
6464
"""
6565
if isinstance(data, dict) and key_type is None:
6666
if "kty" in data:
67-
key_type = data["kty"] # type: ignore[assignment]
67+
key_type = t.cast(str, data["kty"])
6868
else:
6969
raise MissingKeyTypeError("Missing key type")
7070

src/joserfc/_rfc8037/okp_key.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ class OKPKey(CurveKey[PrivateOKPKey, PublicOKPKey]):
128128

129129
def exchange_derive_key(self, key: "OKPKey") -> bytes:
130130
# used in ECDH-ES Algorithms
131-
pubkey: t.Union[X25519PublicKey, X448PublicKey] = key.get_op_key("deriveKey") # type: ignore[assignment]
131+
pubkey = t.cast(t.Union[X25519PublicKey, X448PublicKey], key.get_op_key("deriveKey"))
132132

133133
# this if else logic is used for type hints
134134
if isinstance(self.private_key, X25519PrivateKey) and isinstance(pubkey, X25519PublicKey):

src/joserfc/jwe.py

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from __future__ import annotations
2-
from typing import overload
2+
from typing import cast, overload, Union
33
from collections.abc import Collection
44
from ._rfc7516.types import (
55
GeneralJSONSerialization,
@@ -236,12 +236,12 @@ def decrypt_json(
236236

237237
reject_unprotected_crit_header(data.get("unprotected"))
238238
if "recipients" in data:
239-
general_obj = extract_general_json(data, registry) # type: ignore[arg-type]
239+
general_obj = extract_general_json(cast(GeneralJSONSerialization, data), registry)
240240
_attach_recipient_keys(general_obj.recipients, private_key, sender_key)
241241
perform_decrypt(general_obj, registry)
242242
return general_obj
243243
else:
244-
flattened_obj = extract_flattened_json(data, registry) # type: ignore[arg-type]
244+
flattened_obj = extract_flattened_json(cast(FlattenedJSONSerialization, data), registry)
245245
_attach_recipient_keys(flattened_obj.recipients, private_key, sender_key)
246246
perform_decrypt(flattened_obj, registry)
247247
return flattened_obj
@@ -261,15 +261,18 @@ def _attach_recipient_keys(
261261
def _guess_sender_key(
262262
recipient: Recipient[Key], key: ECKey | OKPKey | KeySet, use_random: bool = False
263263
) -> ECKey | OKPKey:
264-
if isinstance(key, KeySet):
265-
headers = recipient.headers()
266-
skid = headers.get("skid")
267-
if skid:
268-
return key.get_by_kid(skid) # type: ignore[return-value]
269-
if use_random:
270-
skey = key.pick_random_key(headers["alg"])
271-
if skey is not None:
272-
recipient.add_header("skid", skey.kid)
273-
return skey # type: ignore[return-value]
274-
raise ValueError("Invalid key")
275-
return key
264+
if not isinstance(key, KeySet):
265+
return key
266+
267+
headers = recipient.headers()
268+
skid = headers.get("skid")
269+
if skid:
270+
skey = cast(Union[ECKey, OKPKey], key.get_by_kid(skid))
271+
return skey
272+
273+
if use_random:
274+
skey = cast(Union[ECKey, OKPKey], key.pick_random_key(headers["alg"]))
275+
if skey is not None:
276+
recipient.add_header("skid", skey.kid)
277+
return skey
278+
raise ValueError("Invalid key")

0 commit comments

Comments
 (0)