Skip to content

Commit b93bbb8

Browse files
author
Roland Hedberg
committed
Bumped version
1 parent 5e513cf commit b93bbb8

File tree

2 files changed

+31
-12
lines changed

2 files changed

+31
-12
lines changed

src/jwkest/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
from binascii import unhexlify
1616

17-
__version__ = "1.0.8"
17+
__version__ = "1.0.9"
1818

1919
logger = logging.getLogger(__name__)
2020

tests/test_3_jws.py

+30-11
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from __future__ import print_function
2+
from Crypto.PublicKey import RSA
23
from jwkest.ecc import P256
34
from jwkest.ecc import P384
45
from jwkest.ecc import P521
@@ -15,10 +16,10 @@
1516
from jwkest.jws import JWSig
1617
from jwkest.jws import JWS
1718

18-
import codecs
1919
import json
2020
import io
2121
import os.path
22+
from hashlib import md5
2223

2324
BASEDIR = os.path.abspath(os.path.dirname(__file__))
2425

@@ -47,14 +48,16 @@ def full_path(local_file):
4748

4849
JWKS = {"keys": [
4950
{
50-
"n": b"zkpUgEgXICI54blf6iWiD2RbMDCOO1jV0VSff1MFFnujM4othfMsad7H1kRo50YM5S_X9TdvrpdOfpz5aBaKFhT6Ziv0nhtcekq1eRl8mjBlvGKCE5XGk-0LFSDwvqgkJoFYInq7bu0a4JEzKs5AyJY75YlGh879k1Uu2Sv3ZZOunfV1O1Orta-NvS-aG_jN5cstVbCGWE20H0vFVrJKNx0Zf-u-aA-syM4uX7wdWgQ-owoEMHge0GmGgzso2lwOYf_4znanLwEuO3p5aabEaFoKNR4K6GjQcjBcYmDEE4CtfRU9AEmhcD1kleiTB9TjPWkgDmT9MXsGxBHf3AKT5w",
51+
"n":
52+
b"zkpUgEgXICI54blf6iWiD2RbMDCOO1jV0VSff1MFFnujM4othfMsad7H1kRo50YM5S_X9TdvrpdOfpz5aBaKFhT6Ziv0nhtcekq1eRl8mjBlvGKCE5XGk-0LFSDwvqgkJoFYInq7bu0a4JEzKs5AyJY75YlGh879k1Uu2Sv3ZZOunfV1O1Orta-NvS-aG_jN5cstVbCGWE20H0vFVrJKNx0Zf-u-aA-syM4uX7wdWgQ-owoEMHge0GmGgzso2lwOYf_4znanLwEuO3p5aabEaFoKNR4K6GjQcjBcYmDEE4CtfRU9AEmhcD1kleiTB9TjPWkgDmT9MXsGxBHf3AKT5w",
5153
"e": b"AQAB",
5254
"kty": "RSA",
5355
"kid": "5-VBFv40P8D4I-7SFz7hMugTbPs",
5456
"use": "sig"
5557
},
5658
{
57-
"k": b"YTEyZjBlMDgxMGI4YWU4Y2JjZDFiYTFlZTBjYzljNDU3YWM0ZWNiNzhmNmFlYTNkNTY0NzMzYjE",
59+
"k":
60+
b"YTEyZjBlMDgxMGI4YWU4Y2JjZDFiYTFlZTBjYzljNDU3YWM0ZWNiNzhmNmFlYTNkNTY0NzMzYjE",
5861
"kty": "oct",
5962
"use": "sig"
6063
},
@@ -247,17 +250,20 @@ def test_a_1_1a():
247250

248251

249252
def test_a_1_1b():
250-
payload = b'{"iss":"joe",\r\n "exp":1300819380,\r\n "http://example.com/is_root":true}'
253+
payload = b'{"iss":"joe",\r\n "exp":1300819380,' \
254+
b'\r\n "http://example.com/is_root":true}'
251255
val = b64e(payload)
252-
assert val == (b'eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9'
253-
b'leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ')
256+
assert val == (
257+
b'eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9'
258+
b'leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ')
254259

255260

256261
def test_a_1_1c():
257262
hmac = jwkest.intarr2bin(HMAC_KEY)
258263
signer = SIGNER_ALGS["HS256"]
259264
header = b'{"typ":"JWT",\r\n "alg":"HS256"}'
260-
payload = b'{"iss":"joe",\r\n "exp":1300819380,\r\n "http://example.com/is_root":true}'
265+
payload = b'{"iss":"joe",\r\n "exp":1300819380,' \
266+
b'\r\n "http://example.com/is_root":true}'
261267
sign_input = b64e(header) + b'.' + b64e(payload)
262268
sig = signer.sign(sign_input, hmac)
263269
assert b64e(sig) == b'dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk'
@@ -406,11 +412,13 @@ def test_sign_2():
406412
keyset = {"keys": [
407413
{"alg": "RS512",
408414
"kty": "RSA",
409-
"d": "ckLyXxkbjC4szg8q8G0ERBZV-9CszeOxpRtx1KM9BLl0Do3li_Km2vvFvfXJ7MxQpiZ18pBoCcyYQEU262ym8wI22JWMPrZe24HCNxLxqzr_JEuBhpKFxQF6EFTSvJEJD1FkoTuCTvN0zD7YHGaJQG6JzVEuFUY3ewxjH0FYNa_ppTnPP3LC-T9u_GX9Yqyuw1KOYoHSzhWSWQOeAgs4dH9-iAxN1wdZ6eH1jFWAs43svk_rhwdgyJMlihFtV9MAInBlfi_Zu8wRVhVl5urkJrLf0tGFnMbnzb6dYSlUXxEYClpY12W7kXW9aePDqkCwI4oZyxmOmgq4hunKGR1dAQ",
415+
"d": "ckLyXxkbjC4szg8q8G0ERBZV"
416+
"-9CszeOxpRtx1KM9BLl0Do3li_Km2vvFvfXJ7MxQpiZ18pBoCcyYQEU262ym8wI22JWMPrZe24HCNxLxqzr_JEuBhpKFxQF6EFTSvJEJD1FkoTuCTvN0zD7YHGaJQG6JzVEuFUY3ewxjH0FYNa_ppTnPP3LC-T9u_GX9Yqyuw1KOYoHSzhWSWQOeAgs4dH9-iAxN1wdZ6eH1jFWAs43svk_rhwdgyJMlihFtV9MAInBlfi_Zu8wRVhVl5urkJrLf0tGFnMbnzb6dYSlUXxEYClpY12W7kXW9aePDqkCwI4oZyxmOmgq4hunKGR1dAQ",
410417
"e": "AQAB",
411418
"use": "sig",
412419
"kid": "af22448d-4c7b-464d-b63a-f5bd90f6d7d1",
413-
"n": "o9g8DpUwBW6B1qmcm-TfEh4rNX7n1t38jdo4Gkl_cI3q--7n0Blg0kN88LHZvyZjUB2NhBdFYNxMP8ucy0dOXvWGWzaPmGnq3DM__lN8P4WjD1cCTAVEYKawNBAmGKqrFj1SgpPNsSqiqK-ALM1w6mZ-QGimjOgwCyJy3l9lzZh5D8tKnS2t1pZgE0X5P7lZQWHYpHPqp4jKhETzrCpPGfv0Rl6nmmjp7NlRYBkWKf_HEKE333J6M039m2FbKgxrBg3zmYYpmHuMzVgxxb8LSiv5aqyeyJjxM-YDUAgNQBfKNhONqXyu9DqtSprNkw6sqmuxK0QUVrNYl3b03PgS5Q"
420+
"n": "o9g8DpUwBW6B1qmcm-TfEh4rNX7n1t38jdo4Gkl_cI3q"
421+
"--7n0Blg0kN88LHZvyZjUB2NhBdFYNxMP8ucy0dOXvWGWzaPmGnq3DM__lN8P4WjD1cCTAVEYKawNBAmGKqrFj1SgpPNsSqiqK-ALM1w6mZ-QGimjOgwCyJy3l9lzZh5D8tKnS2t1pZgE0X5P7lZQWHYpHPqp4jKhETzrCpPGfv0Rl6nmmjp7NlRYBkWKf_HEKE333J6M039m2FbKgxrBg3zmYYpmHuMzVgxxb8LSiv5aqyeyJjxM-YDUAgNQBfKNhONqXyu9DqtSprNkw6sqmuxK0QUVrNYl3b03PgS5Q"
414422
}]}
415423

416424
keys = KEYS()
@@ -431,7 +439,8 @@ def test_signer_protected_headers():
431439
exp_protected = protected.copy()
432440
exp_protected['alg'] = 'ES256'
433441
enc_header, enc_payload, sig = _jwt.split('.')
434-
assert json.loads(b64d(enc_header.encode("utf-8")).decode("utf-8")) == exp_protected
442+
assert json.loads(
443+
b64d(enc_header.encode("utf-8")).decode("utf-8")) == exp_protected
435444
assert b64d(enc_payload.encode("utf-8")).decode("utf-8") == payload
436445

437446
_rj = JWS()
@@ -468,5 +477,15 @@ def test_pick():
468477
assert len(_keys) == 1
469478

470479

480+
def test_dj_usage():
481+
key_string = open(full_path("./size2048.key"), 'r').read()
482+
key = RSA.importKey(key_string)
483+
payload = "Please take a moment to register today"
484+
keys = [RSAKey(key=key, kid=md5(key_string.encode('utf-8')).hexdigest())]
485+
_jws = JWS(payload, alg='RS256')
486+
sjwt = _jws.sign_compact(keys)
487+
_jwt = factory(sjwt)
488+
assert _jwt.jwt.headers['alg'] == 'RS256'
489+
471490
if __name__ == "__main__":
472-
test_signer_ps512()
491+
test_dj_usage()

0 commit comments

Comments
 (0)