Skip to content

Commit 0997327

Browse files
committed
Test item serializing
1 parent 3e6a0e2 commit 0997327

File tree

3 files changed

+59
-1
lines changed

3 files changed

+59
-1
lines changed

aslist_tests/private_jwks.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"keys": [{"kty": "RSA", "use": "sig", "kid": "ZG5wZjlUYW11MkZSVzA5MTRuaTdDYUtnV0xQS0pwWUpPTm1YMTJNeFlQYw", "n": "qlDQeEoGfykMrV3WupWIMHGrs4AHVTld-C00qBcVCBNptef6T2UESVSurMITmgCdJrwEVfHwkd2is1xSev2pIjQy8m9CehBexxq0hlNmUhPzNPixbCMqUyxCzGi1bms9qSxg2zJr0pmDFK_EiOyM47B48eYcypUk-PxzX4d1L-jBT6F8B9fT8YjS4OHzs__Yq6EDzJ4gubaqOLjsYQsLkYj3fKz-b4trb9n4eWJkkbvtgCN6gZVVKgmxPpQHVhDIj7jHXfl9QmTooWxObvO9LK8DFK63V-E-Ce5iKNcYmeB4TeOJmdZfasFa4TPOg22jZaE9UOnnZPyXx7VOCkiHsw", "e": "AQAB", "d": "KsaZVVziPNXGhVRoNfyQc_pYsYCaVuFNpKNV8lG5yol1p2ZYC9DHPtOx-1nTKn60-aGHRT66uSf9UScC4DkNXbXWheVDwPyTkVY3uPUBYeP41XkQtqQuYS1gqY4y40Sz--VVfjgvtHkx3uQ2bF1dFWKhPcAZwxeqbY6aO4f9-sYFtgIIINe_vDKw6W8RPJMK4keK_V-8Hw9-t1A_gja2_34U9cSw0yO9BDBNJiE88mX-Nu4djfAqr-MVOXpHEW2FIA7Ge6laZlGR_pn_kaqVbEnG8DLJqJGp_mJIg1tx08kHTVXw8TmqKIeMVZ8uU3Vrfjy6D6PmTkEwZK1_EgvxoQ", "p": "15-5UXO89cFmYFbzW9IRfHp7g8VQw88Uphf3J5IjgI8GL80QqFT7r7uBx1b8uKvJIWnG6OxygVJm9-cy9HPQzCBQQ1e_R5OKAaNvMM_nTVAHAy5KZlt_qFJw7vb5tfRkj8u_0jDt1qp6BYXKBMPWzpxwwKG-aj9PyPrkZyFDn6c", "q": "yjUq8rrtQgnGS4fBQwgf44sg8F47PHX-D7fCmImg6gjW8e4Ll51yDlKHFBskvLNzAWNfy8_GTzTs3Nr2zuQrWrkhXlk4T7FIJATVBI4n4uiNEvfYr17fViLM6T8d0WUM_9zy6EI8CBBRdeAeI8obW5p3F6Wu6UygkrysgyFV-RU"}, {"kty": "EC", "use": "sig", "kid": "aDFHbmtvZldackkyUjJ5aTluSWNaVmJnUXkwYmd2Zk5sOGxCM3dhQVgwRQ", "crv": "P-256", "x": "s4o9jPfgErHOuPBdeWp8U_XUGUs7uSntAu5M4GjTCjQ", "y": "y0YE3V9E-UzEAekBLPhxYqrPPo6Abm-JRFL2Sia6Q0s", "d": "BNXlINQCl4O5vJkdqV13gOqzZJVt34RxN8njWq7Lvlc"}, {"kty": "EC", "use": "sig", "kid": "S0hSaHVmb0phaE1tbW9NcHZjVGRNS291VDlNOE5vWl9UaTNwQVhlUHhOZw", "crv": "P-384", "x": "Lu2wHapme_MnXlhpzH5M5ntqx83j6xYZ2P8u7ZoVOWdvRnmxYC1GrV2IA7feLOUv", "y": "f8S10urWzTkaq1JARY0LgLhZsXmcoTFj5Hd3tyCd6h4XlUU3iZDSfuXahF_xqJ24", "d": "SoRVsBruJ8gmBraOC0bzWD13IOUef3dGRtpIWzmEWm9uWScXxmt6AzgcTAhYP29l"}]}
1+
{"keys": [{"kty": "RSA", "use": "sig", "kid": "ZVp5MEtSdGQ5MjNjUGozUktMZV9Sd0c4N25PUGlQcUtIOVo5b0l0S3dZMA", "n": "oQfNSj9XSCBg5oBztL2TixZT-R8CVvSE0Y1onK40x1VDPfMTx7ezoFo72tiTASsdpAsChG9nkzT0iD5iFcv4c1LCTkqbaSdOzmZFu79Bjv1LVLboFsoVZNYhjRxCyoq1PooR7pKiaI1t531EKrnm4CrjuHk5egWG1cmp61_M3zMCrWcSODXGaFbJOfYfWSIVhD5cd7J4Hpl7rlA-TgD_gBfzL0kILDqvXln2oig_0yOXc7cpneLw9dSZiatyv_deCID5O0Cwg832vwrXN1az-No-ln37onxE03M9VZXqP54Nl5OPQ_cMg0UAGObxr5iyNGe_i6hTUJea0RuJ6sEnyw", "e": "AQAB", "d": "Sm2DukSKgADPKNrIIArbbhb02xk1CKHd3clBR-HQ7S0Adlqqks3ajUwHjEA7ufeGrLKWCEZBli2MtIg456AuBoeC3ZLoP_L2HrnwkzV0BLYYImCj5xyiRMggG8urJ1hzKyO_5AgMXsy3tp4Uarcf-g540GPfaAGz745VJkBSPfrnGYNPWIJbtbwlGJJz8TPaJRpJnAlolq6VeH5BibfoQhU1T5p0q4kLr_yAehQiKW4Y6sVnkuZjjf4g1P6GKqlnUIWS4swmbf1rjibDkysb9bXB1nV6YypVFWX6Cv_WrDUfSSH1MdR6zjOZIoZ_EHDONfP3VjABsefkv6Matz1qOQ", "p": "zG2BfrmeN11HJP43paO8wJR6FzQotv0RgdmLc6iRmPfcCyENtTWXPJo3EPxwrDX5zPbH7i814Q2tCeDp_gPqtBfbLCEV3Gla5cvuDO3K3MW6YhPLDfujoDnojelV7bcLGK0nDnQUyal9KhX4Wk7LddlQ3W8NsB2ymoKuSVF3Pic", "q": "yaeVP0lm1biaOnETbruxnoXeF4W4c4nPm7mBx9CzzCsSHqCpcWNtPUtOQc3wvVM2MdLoTJPalfNYyIkpWN5u5w-Un-SNNXY1BSwOFCTt4BETiwmjmU9rWzxfnQhsbSw6UrtoKjRQZNHD64-1lyRb1HlLBGfx6mb3gQ7qg-2Fs70"}, {"kty": "EC", "use": "sig", "kid": "bzJuTlhLSms0Wmh1TVkzbDRYVHEtN01CUnItemhiQWo0a0hiYVpWSGp4VQ", "crv": "P-256", "x": "AYZz_krBfwtrsXHJ_q3cgvZPQCY1nHgQWUn9bUNCgvU", "y": "iVmtoxf34F3jVlO3mOaHJDa_x1ehiCiB-fDM5iAq0fM", "d": "gPe7wnZMWJ3iFq2rYIIu7d5rWXHdYql3PJoDuxfFSrY"}, {"kty": "EC", "use": "sig", "kid": "WTNtS1dpVlBxN2Q2Q3hOb0dsTF8xenZWUm9Xa0pNTDRvTUdlQmN0aWhZcw", "crv": "P-384", "x": "aKHmXvAowb7XY8iMT_LtbXFHq99JYEo9anfdMdnQ5wpzRKusUznfA0aTHI6Mul3_", "y": "b_kV4fPElf9mDss6RkU31BZPCs4w9zAIxpbj7Rk74LK8q0BxWAYoyUfMs6d_Ywme", "d": "IHXdLJakx41Rw7FXbYLQHuczwALL2EZWboNEGGF8wP-fuG7NOCrggPam-oQR-QML"}]}

tests/test_03_key_bundle.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -542,6 +542,7 @@ def test_httpc_params_1():
542542
httpc_params=httpc_params)
543543
assert kb.do_remote()
544544

545+
545546
@pytest.mark.network
546547
def test_httpc_params_2():
547548
httpc_params = {'timeout': 0}
@@ -989,6 +990,7 @@ def test_remote():
989990
assert kb2.imp_jwks
990991
assert kb2.last_updated
991992

993+
992994
def test_remote_not_modified():
993995
source = 'https://example.com/keys.json'
994996
headers = {

tests/test_40_serialize.py

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import os
2+
3+
from cryptojwt.jwk.hmac import SYMKey
4+
from cryptojwt.jwk.rsa import RSAKey
5+
from cryptojwt.jwk.rsa import import_rsa_key_from_cert_file
6+
from cryptojwt.key_bundle import keybundle_from_local_file
7+
from cryptojwt.key_bundle import rsa_init
8+
from cryptojwt.key_issuer import KeyIssuer
9+
from cryptojwt.serialize import item
10+
from cryptojwt.serialize.item import JWK
11+
from cryptojwt.serialize.item import KeyBundle
12+
13+
14+
def full_path(local_file):
15+
return os.path.join(BASEDIR, local_file)
16+
17+
18+
BASEDIR = os.path.abspath(os.path.dirname(__file__))
19+
BASE_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__),
20+
"test_keys"))
21+
CERT = full_path("cert.pem")
22+
23+
24+
def test_jwks():
25+
_key = RSAKey()
26+
_key.load_key(import_rsa_key_from_cert_file(CERT))
27+
28+
_item = JWK().serialize(_key)
29+
_nkey = JWK().deserialize(_item)
30+
assert _key == _nkey
31+
32+
33+
def test_key_bundle():
34+
kb = rsa_init({'use': ['enc', 'sig'], 'size': 1024, 'name': 'rsa', 'path': 'keys'})
35+
_sym = SYMKey(**{"kty": "oct", "key": "highestsupersecret", "use": "enc"})
36+
kb.append(_sym)
37+
_item = KeyBundle().serialize(kb)
38+
_nkb = KeyBundle().deserialize(_item)
39+
assert len(kb) == 3
40+
assert len(kb.get('rsa')) == 2
41+
assert len(kb.get('oct')) == 1
42+
43+
44+
def test_key_issuer():
45+
kb = keybundle_from_local_file("file://%s/jwk.json" % BASE_PATH, "jwks", ["sig"])
46+
assert len(kb) == 1
47+
issuer = KeyIssuer()
48+
issuer.add(kb)
49+
50+
_item = item.KeyIssuer().serialize(issuer)
51+
_iss = item.KeyIssuer().deserialize(_item)
52+
53+
assert len(_iss) == 1 # 1 key
54+
assert len(_iss.get('sig', 'rsa')) == 1 # 1 RSA key
55+
_kb = _iss[0]
56+
assert kb.difference(_kb) == [] # no difference

0 commit comments

Comments
 (0)