summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--jwt/algorithms.py18
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")