Skip to content

Commit 2665555

Browse files
author
Roland Hedberg
committed
The 'kid' can appear in many different places.
1 parent 9502454 commit 2665555

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

src/jwkest/jws.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,10 @@ def _pick_keys(self, keys, use="", alg=""):
368368
try:
369369
_kid = self["kid"]
370370
except KeyError:
371-
_kid = None
371+
try:
372+
_kid = self.jwt.headers["kid"]
373+
except (AttributeError, KeyError):
374+
_kid = None
372375

373376
logger.debug("Picking key based on alg={0}, kid={1} and use={2}".format(
374377
alg, _kid, use))
@@ -533,6 +536,9 @@ def verify_compact(self, jws, keys=None, allow_none=False, sigalg=None):
533536
if "kid" in self:
534537
raise NoSuitableSigningKeys(
535538
"No key with kid: %s" % (self["kid"]))
539+
elif "kid" in self.jwt.headers:
540+
raise NoSuitableSigningKeys(
541+
"No key with kid: %s" % (self.jwt.headers["kid"]))
536542
else:
537543
raise NoSuitableSigningKeys("No key for algorithm: %s" % _alg)
538544

src/jwkest/jwt.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ def __init__(self, **headers):
4242
if not headers.get("alg"):
4343
headers["alg"] = None
4444
self.headers = headers
45-
self.b64part = [ b64encode_item(headers) ]
46-
self.part = [ b64d(self.b64part[0]) ]
45+
self.b64part = [b64encode_item(headers)]
46+
self.part = [b64d(self.b64part[0])]
4747

4848
def unpack(self, token):
4949
"""
@@ -73,8 +73,8 @@ def pack(self, parts, headers=None):
7373
else:
7474
headers = {'alg': 'none'}
7575

76-
self.part = [ self.part[0] ] + parts
77-
_all = self.b64part = [ self.b64part[0] ]
76+
self.part = [self.part[0]] + parts
77+
_all = self.b64part = [self.b64part[0]]
7878
_all.extend([b64encode_item(p) for p in parts])
7979

8080
return ".".join([a.decode() for a in _all])

0 commit comments

Comments
 (0)