Skip to content

Commit 2831990

Browse files
committed
fix: prevent unprotected header overwriting protected header
authlib/authlib#337
1 parent 56f2333 commit 2831990

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

src/joserfc/_rfc7515/model.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,12 @@ def __init__(self, protected: Header | None = None, header: Header | None = None
2727

2828
def headers(self) -> Header:
2929
rv: Header = {}
30-
if self.protected:
31-
rv.update(self.protected)
3230
if self.header:
3331
rv.update(self.header)
32+
33+
# protected header is preferred
34+
if self.protected:
35+
rv.update(self.protected)
3436
return rv
3537

3638
def set_kid(self, kid: str) -> None:

src/joserfc/_rfc7516/models.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,12 @@ def __init__(
4141

4242
def headers(self) -> Header:
4343
rv: Header = {}
44-
rv.update(self.__parent.protected)
4544
if isinstance(self.__parent, BaseJSONEncryption) and self.__parent.unprotected:
4645
rv.update(self.__parent.unprotected)
4746
if self.header:
4847
rv.update(self.header)
48+
49+
rv.update(self.__parent.protected)
4950
return rv
5051

5152
def add_header(self, k: str, v: t.Any) -> None:

0 commit comments

Comments
 (0)