Skip to content

Commit f48aa2d

Browse files
committed
Remove specific header extensions.
1 parent 6234cc2 commit f48aa2d

File tree

3 files changed

+25
-24
lines changed

3 files changed

+25
-24
lines changed

src/cryptojwt/jws/jws.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ def sign_compact(self, keys=None, protected=None, **kwargs):
118118

119119
key, xargs, _alg = self.alg_keys(keys, "sig", protected)
120120

121-
for param in ['typ', "trust_chain", "jwk", "x5c"]:
121+
for param in ['typ']:
122122
if param in self:
123123
xargs[param] = self[param]
124124

src/cryptojwt/jwt.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ def __init__(
9898
allowed_enc_encs: List[str] = None,
9999
allowed_max_lifetime: int = None,
100100
zip: str = "",
101-
typ2msg_cls: Dict[str, str] = None
101+
typ2msg_cls: Dict = None
102102
):
103103
self.key_jar = key_jar # KeyJar instance
104104
self.iss = iss # My identifier
@@ -272,8 +272,8 @@ def pack(
272272
if jws_headers is None:
273273
jws_headers = {}
274274

275-
_jws = JWS(self.message(signing_key=_key, **_args), alg=self.alg, **jws_headers)
276-
_sjwt = _jws.sign_compact([_key])
275+
_jws = JWS(self.message(signing_key=_key, **_args), alg=self.alg)
276+
_sjwt = _jws.sign_compact([_key], protected=jws_headers)
277277
else:
278278
_sjwt = self.message(signing_key=None, **_args)
279279

tests/test_09_jwt.py

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
11
import os
22

33
import pytest
4-
5-
from cryptojwt.exception import IssuerNotFound
64
from cryptojwt.jws.exception import NoSuitableSigningKeys
75
from cryptojwt.jwt import JWT
8-
from cryptojwt.jwt import VerificationError
96
from cryptojwt.jwt import pick_key
107
from cryptojwt.jwt import utc_time_sans_frac
8+
from cryptojwt.jwt import VerificationError
119
from cryptojwt.key_bundle import KeyBundle
12-
from cryptojwt.key_jar import KeyJar
1310
from cryptojwt.key_jar import init_key_jar
11+
from cryptojwt.key_jar import KeyJar
1412

1513
__author__ = "Roland Hedberg"
1614

@@ -136,19 +134,6 @@ def test_jwt_pack_and_unpack_max_lifetime_exceeded():
136134
_ = bob.unpack(_jwt)
137135

138136

139-
def test_jwt_pack_and_unpack_max_lifetime_exceeded():
140-
lifetime = 3600
141-
alice = JWT(key_jar=ALICE_KEY_JAR, iss=ALICE, sign_alg="RS256", lifetime=lifetime)
142-
payload = {"sub": "sub"}
143-
_jwt = alice.pack(payload=payload)
144-
145-
bob = JWT(
146-
key_jar=BOB_KEY_JAR, iss=BOB, allowed_sign_algs=["RS256"], allowed_max_lifetime=lifetime - 1
147-
)
148-
with pytest.raises(VerificationError):
149-
_ = bob.unpack(_jwt)
150-
151-
152137
def test_jwt_pack_and_unpack_timestamp():
153138
lifetime = 3600
154139
alice = JWT(key_jar=ALICE_KEY_JAR, iss=ALICE, sign_alg="RS256", lifetime=lifetime)
@@ -255,9 +240,11 @@ def test_with_jti():
255240

256241

257242
class DummyMsg(object):
243+
258244
def __init__(self, **kwargs):
259245
for key, val in kwargs.items():
260246
setattr(self, key, val)
247+
self.jws_headers = {}
261248

262249
def verify(self, **kwargs):
263250
return True
@@ -322,12 +309,26 @@ def test_eddsa_jwt():
322309
]
323310
}
324311
JWT_TEST = (
325-
"eyJraWQiOiItMTkwOTU3MjI1NyIsImFsZyI6IkVkRFNBIn0."
326-
+ "eyJqdGkiOiIyMjkxNmYzYy05MDkzLTQ4MTMtODM5Ny1mMTBlNmI3MDRiNjgiLCJkZWxlZ2F0aW9uSWQiOiJiNGFlNDdhNy02MjVhLTQ2MzAtOTcyNy00NTc2NGE3MTJjY2UiLCJleHAiOjE2NTUyNzkxMDksIm5iZiI6MTY1NTI3ODgwOSwic2NvcGUiOiJyZWFkIG9wZW5pZCIsImlzcyI6Imh0dHBzOi8vaWRzdnIuZXhhbXBsZS5jb20iLCJzdWIiOiJ1c2VybmFtZSIsImF1ZCI6ImFwaS5leGFtcGxlLmNvbSIsImlhdCI6MTY1NTI3ODgwOSwicHVycG9zZSI6ImFjY2Vzc190b2tlbiJ9."
327-
+ "rjeE8D_e4RYzgvpu-nOwwx7PWMiZyDZwkwO6RiHR5t8g4JqqVokUKQt-oST1s45wubacfeDSFogOrIhe3UHDAg"
312+
"eyJraWQiOiItMTkwOTU3MjI1NyIsImFsZyI6IkVkRFNBIn0."
313+
+ "eyJqdGkiOiIyMjkxNmYzYy05MDkzLTQ4MTMtODM5Ny1mMTBlNmI3MDRiNjgiLCJkZWxlZ2F0aW9uSWQiOiJiNGFlNDdhNy02MjVhLTQ2MzAtOTcyNy00NTc2NGE3MTJjY2UiLCJleHAiOjE2NTUyNzkxMDksIm5iZiI6MTY1NTI3ODgwOSwic2NvcGUiOiJyZWFkIG9wZW5pZCIsImlzcyI6Imh0dHBzOi8vaWRzdnIuZXhhbXBsZS5jb20iLCJzdWIiOiJ1c2VybmFtZSIsImF1ZCI6ImFwaS5leGFtcGxlLmNvbSIsImlhdCI6MTY1NTI3ODgwOSwicHVycG9zZSI6ImFjY2Vzc190b2tlbiJ9."
314+
+ "rjeE8D_e4RYzgvpu-nOwwx7PWMiZyDZwkwO6RiHR5t8g4JqqVokUKQt-oST1s45wubacfeDSFogOrIhe3UHDAg"
328315
)
329316
ISSUER = "https://idsvr.example.com"
330317
kj = KeyJar()
331318
kj.add_kb(ISSUER, KeyBundle(JWKS_DICT))
332319
jwt = JWT(key_jar=kj)
333320
_ = jwt.unpack(JWT_TEST, timestamp=1655278809)
321+
322+
323+
def test_extra_headers():
324+
_kj = KeyJar()
325+
_kj.add_symmetric(ALICE, "hemligt ordsprak", usage=["sig"])
326+
327+
alice = JWT(key_jar=_kj, iss=ALICE, sign_alg="HS256")
328+
payload = {"sub": "sub2"}
329+
_jwt = alice.pack(payload=payload, jws_headers={"xtra": "header", "typ": "dummy"})
330+
331+
bob = JWT(key_jar=_kj, iss=BOB, sign_alg="HS256", typ2msg_cls={"dummy": DummyMsg})
332+
info = bob.unpack(_jwt)
333+
assert isinstance(info, DummyMsg)
334+
assert set(info.jws_headers.keys()) == {'xtra', 'typ', 'alg', 'kid'}

0 commit comments

Comments
 (0)