Skip to content

Commit 73b61c1

Browse files
committed
Removed assert since it's a security issue.
1 parent 40c5d94 commit 73b61c1

File tree

3 files changed

+29
-48
lines changed

3 files changed

+29
-48
lines changed

src/cryptojwt/jwe.py

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -383,18 +383,14 @@ def is_jwe(self):
383383
if "typ" in self.headers and self.headers["typ"].lower() == "jwe":
384384
return True
385385

386-
try:
387-
assert "alg" in self.headers and "enc" in self.headers
388-
except AssertionError:
389-
return False
390-
else:
386+
if "alg" in self.headers and "enc" in self.headers:
391387
for typ in ["alg", "enc"]:
392-
try:
393-
assert self.headers[typ] in SUPPORTED[typ]
394-
except AssertionError:
388+
if self.headers[typ] not in SUPPORTED[typ]:
395389
logger.debug("Not supported %s algorithm: %s" % (
396390
typ, self.headers[typ]))
397391
return False
392+
else:
393+
return False
398394
return True
399395

400396
def __len__(self):
@@ -659,9 +655,7 @@ def decrypt(self, token, key, cek=None):
659655

660656
self["cek"] = cek
661657
enc = jwe.headers["enc"]
662-
try:
663-
assert enc in SUPPORTED["enc"]
664-
except AssertionError:
658+
if enc not in SUPPORTED["enc"]:
665659
raise NotSupportedAlgorithm(enc)
666660

667661
msg = self._decrypt(enc, cek, jwe.ciphertext(),
@@ -946,7 +940,6 @@ def encrypt(self, keys=None, cek="", iv="", **kwargs):
946940
:return: Encrypted message
947941
"""
948942

949-
# encrypted_key = cek = iv = None
950943
_alg = self["alg"]
951944

952945
# Find Usable Keys

src/cryptojwt/jwk.py

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -395,25 +395,22 @@ def verify(self):
395395
return False
396396

397397
if self.kid:
398-
try:
399-
assert isinstance(self.kid, six.string_types)
400-
except AssertionError:
398+
if not isinstance(self.kid, six.string_types):
401399
raise HeaderError("kid of wrong value type")
402400
return True
403401

404402
def __eq__(self, other):
405-
try:
406-
if self.__class__ != other.__class__:
407-
return False
408-
409-
assert set(self.__dict__.keys()) == set(other.__dict__.keys())
403+
if self.__class__ != other.__class__:
404+
return False
410405

411-
for key in self.public_members:
412-
assert getattr(other, key) == getattr(self, key)
413-
except AssertionError:
406+
if set(self.__dict__.keys()) != set(other.__dict__.keys()):
414407
return False
415-
else:
416-
return True
408+
409+
for key in self.public_members:
410+
if getattr(other, key) != getattr(self, key):
411+
return False
412+
413+
return True
417414

418415
def keys(self):
419416
return list(self.to_dict().keys())

src/cryptojwt/jws.py

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -361,9 +361,7 @@ def headers(self, extra=None):
361361
_header["jwk"] = extra["jwk"].serialize()
362362

363363
if "kid" in self:
364-
try:
365-
assert isinstance(self["kid"], six.string_types)
366-
except AssertionError:
364+
if not isinstance(self["kid"], six.string_types):
367365
raise HeaderError("kid of wrong value type")
368366

369367
return _header
@@ -430,11 +428,7 @@ def pick_keys(self, keys, use="", alg=""):
430428
"Picked: kid:{}, use:{}, kty:{}".format(
431429
_key.kid, _key.use, _key.kty))
432430
if _kid:
433-
try:
434-
assert _kid == _key.kid
435-
except (KeyError, AttributeError):
436-
pass
437-
except AssertionError:
431+
if _kid != _key.kid:
438432
continue
439433

440434
if use and _key.use and _key.use != use:
@@ -699,7 +693,8 @@ def verify_json(self, jws, keys=None, allow_none=False, sigalg=None):
699693
if _claim is None:
700694
_claim = _tmp
701695
else:
702-
assert _claim == _tmp
696+
if _claim != _tmp:
697+
raise ValueError()
703698

704699
return _claim
705700

@@ -737,22 +732,18 @@ def _is_compact_jws(self, jws):
737732
except Exception:
738733
return False
739734

740-
try:
741-
assert "alg" in jwt.headers
742-
except AssertionError:
735+
if "alg" not in jwt.headers:
743736
return False
744-
else:
745-
if jwt.headers["alg"] is None:
746-
jwt.headers["alg"] = "none"
747737

748-
try:
749-
assert jwt.headers["alg"] in SIGNER_ALGS
750-
except AssertionError:
751-
logger.debug("UnknownSignerAlg: %s" % jwt.headers["alg"])
752-
return False
753-
else:
754-
self.jwt = jwt
755-
return True
738+
if jwt.headers["alg"] is None:
739+
jwt.headers["alg"] = "none"
740+
741+
if jwt.headers["alg"] not in SIGNER_ALGS:
742+
logger.debug("UnknownSignerAlg: %s" % jwt.headers["alg"])
743+
return False
744+
745+
self.jwt = jwt
746+
return True
756747

757748

758749
def factory(token):

0 commit comments

Comments
 (0)