diff options
Diffstat (limited to 'jwt/algorithms.py')
-rw-r--r-- | jwt/algorithms.py | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/jwt/algorithms.py b/jwt/algorithms.py index 9f16701..0d54382 100644 --- a/jwt/algorithms.py +++ b/jwt/algorithms.py @@ -199,7 +199,15 @@ class HMACAlgorithm(Algorithm): @staticmethod def from_jwk(jwk): - obj = json.loads(jwk) + try: + if isinstance(jwk, str): + obj = json.loads(jwk) + elif isinstance(jwk, dict): + obj = jwk + else: + raise ValueError + except ValueError: + raise InvalidKeyError("Key is not valid JSON") if obj.get("kty") != "oct": raise InvalidKeyError("Not an HMAC key") @@ -424,9 +432,13 @@ if has_crypto: @staticmethod def from_jwk(jwk): - try: - obj = json.loads(jwk) + if isinstance(jwk, str): + obj = json.loads(jwk) + elif isinstance(jwk, dict): + obj = jwk + else: + raise ValueError except ValueError: raise InvalidKeyError("Key is not valid JSON") |