Skip to content

Commit 53b304b

Browse files
author
Roland Hedberg
committed
Fixed the factories.
1 parent 43241c8 commit 53b304b

File tree

6 files changed

+43
-32
lines changed

6 files changed

+43
-32
lines changed

setup.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,12 @@ def run_tests(self):
4646
license="Apache 2.0",
4747
packages=["jwkest"],
4848
package_dir={"": "src"},
49-
classifiers=["Development Status :: 4 - Beta",
50-
"License :: OSI Approved :: Apache Software License",
51-
"Topic :: Software Development :: Libraries :: Python "
52-
"Modules"],
49+
classifiers=[
50+
"Development Status :: 4 - Beta",
51+
"License :: OSI Approved :: Apache Software License",
52+
"Topic :: Software Development :: Libraries :: Python Modules",
53+
"Programming Language :: Python :: 2.7",
54+
"Programming Language :: Python :: 3.4"],
5355
install_requires=["pycrypto >= 2.6.1", "requests", "six", "future"],
5456
tests_require=['pytest'],
5557
zip_safe=False,

src/jwkest/__init__.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@
44
import re
55
import struct
66

7-
from builtins import zip
8-
from builtins import hex
9-
from builtins import str
7+
try:
8+
from builtins import zip
9+
from builtins import hex
10+
from builtins import str
11+
except ImportError:
12+
pass
1013

1114
from binascii import unhexlify
1215

src/jwkest/jwe.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
# from future import standard_library
22
# standard_library.install_aliases()
3-
from builtins import object
4-
# JSON Web Encryption
3+
try:
4+
from builtins import object
5+
except ImportError:
6+
pass
57

68
import struct
79
import io
@@ -691,11 +693,9 @@ def decrypt(self, token, keys=None, alg=None):
691693
"No available key that could decrypt the message")
692694

693695

694-
695-
def factory(jwx):
696-
p = jwx.split(".")
697-
_jw = JWE()
698-
if _jw.is_jwe(p[0]):
699-
return _jw
696+
def factory(token):
697+
_jwt = JWEnc().unpack(token)
698+
if _jwt.is_jwe():
699+
return JWE()
700700
else:
701701
return None

src/jwkest/jws.py

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
"""JSON Web Token"""
2-
from builtins import str
3-
from builtins import object
2+
try:
3+
from builtins import str
4+
from builtins import object
5+
except ImportError:
6+
pass
47

58
# Most of the code, ideas herein I have borrowed/stolen from other people
69
# Most notably Jeff Lindsay, Ryan Kelly and Richard Barnes
@@ -586,32 +589,35 @@ def verify_json(self, jws, keys=None, allow_none=False, sigalg=None):
586589

587590
return _claim
588591

589-
def is_jws(self, part):
592+
def is_jws(self, token):
590593
"""
591594
592-
:param part:
595+
:param token:
593596
:return:
594597
"""
595-
self.parse_header(part)
598+
try:
599+
jwt = JWSig().unpack(token)
600+
except Exception:
601+
return False
596602

597603
try:
598-
assert "alg" in self._dict
604+
assert "alg" in jwt.headers
599605
except AssertionError:
600606
return False
601607
else:
602608
try:
603-
assert self._dict["alg"] in SIGNER_ALGS
609+
assert jwt.headers["alg"] in SIGNER_ALGS
604610
except AssertionError:
605-
logger.debug("UnknownSignerAlg: %s" % self._dict["alg"])
611+
logger.debug("UnknownSignerAlg: %s" % jwt.headers["alg"])
606612
return False
607613
else:
614+
self.jwt = jwt
608615
return True
609616

610617

611-
def factory(jwx):
612-
p = jwx.split(".")
618+
def factory(token):
613619
_jw = JWS()
614-
if _jw.is_jws(p[0]):
620+
if _jw.is_jws(token):
615621
return _jw
616622
else:
617623
return None

tests/test_3_jws.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from jwkest.jwk import ECKey
1212
from jwkest.jwk import import_rsa_key_from_file
1313
from jwkest.jwk import RSAKey
14-
from jwkest.jws import SIGNER_ALGS
14+
from jwkest.jws import SIGNER_ALGS, factory
1515
from jwkest.jws import JWSig
1616
from jwkest.jws import JWS
1717

@@ -317,7 +317,7 @@ def test_signer_ps512():
317317
_jws = JWS(payload, alg="PS521")
318318
_jwt = _jws.sign_compact(keys)
319319

320-
_rj = JWS()
320+
_rj = factory(_jwt)
321321
info = _rj.verify_compact(_jwt, keys)
322322
assert info == payload
323323

@@ -338,4 +338,4 @@ def test_no_alg_and_alg_none_same():
338338
assert _jwt0 == _jwt1
339339

340340
if __name__ == "__main__":
341-
test_hmac_from_keyrep()
341+
test_signer_ps512()

tests/test_4_jwe.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from jwkest import intarr2long
1212
from jwkest import long2hexseq
1313
from jwkest.jwk import RSAKey
14-
from jwkest.jwe import JWE_RSA
14+
from jwkest.jwe import JWE_RSA, factory
1515
from jwkest.jwe import JWe
1616
from jwkest.jwe import JWE
1717

@@ -206,11 +206,11 @@ def test_encrypt_decrypt_rsa_cbc():
206206

207207
jwt = _jwe0.encrypt([_key])
208208

209-
_jwe1 = JWE()
209+
_jwe1 = factory(jwt)
210210
msg = _jwe1.decrypt(jwt, [_key])
211211

212212
assert msg == plain
213213

214214

215215
if __name__ == "__main__":
216-
test_jwe_09_a1()
216+
test_encrypt_decrypt_rsa_cbc()

0 commit comments

Comments
 (0)