11#!/usr/bin/env python3
22
33from __future__ import print_function
4+
45import base64
56import json
7+ import os .path
68import struct
7- import pytest
8-
99from collections import Counter
1010
11- import requests
11+ import pytest
1212from cryptography .hazmat .backends import default_backend
1313from cryptography .hazmat .primitives .asymmetric import rsa
1414from cryptography .hazmat .primitives .asymmetric .ec import generate_private_key
1515
16- import os .path
17-
18- from cryptojwt .exception import DeSerializationNotPossible , UnsupportedAlgorithm
16+ from cryptojwt .exception import DeSerializationNotPossible
17+ from cryptojwt .exception import UnsupportedAlgorithm
1918from cryptojwt .exception import WrongUsage
20- from cryptojwt .jwk .hmac import new_sym_key
21-
22- from cryptojwt .utils import as_unicode , as_bytes
23- from cryptojwt .utils import b64e
24- from cryptojwt .utils import long2intarr
25- from cryptojwt .utils import base64url_to_long
26- from cryptojwt .utils import base64_to_long
2719from cryptojwt .jwk import JWK
2820from cryptojwt .jwk .ec import ECKey
21+ from cryptojwt .jwk .ec import NIST2SEC
22+ from cryptojwt .jwk .hmac import SYMKey
23+ from cryptojwt .jwk .hmac import new_sym_key
24+ from cryptojwt .jwk .hmac import sha256_digest
25+ from cryptojwt .jwk .jwk import jwk_wrap
26+ from cryptojwt .jwk .jwk import key_from_jwk_dict
27+ from cryptojwt .jwk .rsa import RSAKey
2928from cryptojwt .jwk .rsa import import_private_rsa_key_from_file
3029from cryptojwt .jwk .rsa import import_public_rsa_key_from_file
3130from cryptojwt .jwk .rsa import import_rsa_key_from_cert_file
32- from cryptojwt .jwk .rsa import load_x509_cert
3331from cryptojwt .jwk .rsa import new_rsa_key
34- from cryptojwt .jwk . jwk import jwk_wrap
35- from cryptojwt .jwk . jwk import key_from_jwk_dict
36- from cryptojwt .jwk . ec import NIST2SEC
37- from cryptojwt .jwk . rsa import RSAKey
38- from cryptojwt .jwk . hmac import sha256_digest
39- from cryptojwt .jwk . hmac import SYMKey
32+ from cryptojwt .utils import as_bytes
33+ from cryptojwt .utils import as_unicode
34+ from cryptojwt .utils import b64e
35+ from cryptojwt .utils import base64_to_long
36+ from cryptojwt .utils import base64url_to_long
37+ from cryptojwt .utils import long2intarr
4038
4139__author__ = 'Roland Hedberg'
4240BASEDIR = os .path .abspath (os .path .dirname (__file__ ))
@@ -49,7 +47,8 @@ def full_path(local_file):
4947CERT = full_path ("cert.pem" )
5048KEY = full_path ("server.key" )
5149
52- N = 'wf-wiusGhA-gleZYQAOPQlNUIucPiqXdPVyieDqQbXXOPBe3nuggtVzeq7pVFH1dZz4dY2Q2LA5DaegvP8kRvoSB_87ds3dy3Rfym_GUSc5B0l1TgEobcyaep8jguRoHto6GWHfCfKqoUYZq4N8vh4LLMQwLR6zi6Jtu82nB5k8'
50+ N = 'wf-wiusGhA' \
51+ '-gleZYQAOPQlNUIucPiqXdPVyieDqQbXXOPBe3nuggtVzeq7pVFH1dZz4dY2Q2LA5DaegvP8kRvoSB_87ds3dy3Rfym_GUSc5B0l1TgEobcyaep8jguRoHto6GWHfCfKqoUYZq4N8vh4LLMQwLR6zi6Jtu82nB5k8'
5352E = 'AQAB'
5453
5554JWK_0 = {"keys" : [
@@ -119,7 +118,8 @@ def test_import_rsa_key():
119118
120119 assert _eq (djwk .keys (), ["kty" , "e" , "n" , "p" , "q" , "d" ])
121120 assert djwk [
122- "n" ] == '5zbNbHIYIkGGJ3RGdRKkYmF4gOorv5eDuUKTVtuu3VvxrpOWvwnFV-NY0LgqkQSMMyVzodJE3SUuwQTUHPXXY5784vnkFqzPRx6bHgPxKz7XfwQjEBTafQTMmOeYI8wFIOIHY5i0RWR-gxDbh_D5TXuUqScOOqR47vSpIbUH-nc'
121+ "n" ] == '5zbNbHIYIkGGJ3RGdRKkYmF4gOorv5eDuUKTVtuu3VvxrpOWvwnFV' \
122+ '-NY0LgqkQSMMyVzodJE3SUuwQTUHPXXY5784vnkFqzPRx6bHgPxKz7XfwQjEBTafQTMmOeYI8wFIOIHY5i0RWR-gxDbh_D5TXuUqScOOqR47vSpIbUH-nc'
123123 assert djwk ['e' ] == 'AQAB'
124124
125125
@@ -149,8 +149,10 @@ def test_serialize_rsa_priv_key():
149149
150150ECKEY = {
151151 "crv" : "P-521" ,
152- "x" : u'AekpBQ8ST8a8VcfVOTNl353vSrDCLLJXmPk06wTjxrrjcBpXp5EOnYG_NjFZ6OvLFV1jSfS9tsz4qUxcWceqwQGk' ,
153- "y" : u'ADSmRA43Z1DSNx_RvcLI87cdL07l6jQyyBXMoxVg_l2Th-x3S1WDhjDly79ajL4Kkd0AZMaZmh9ubmf63e3kyMj2' ,
152+ "x" :
153+ u'AekpBQ8ST8a8VcfVOTNl353vSrDCLLJXmPk06wTjxrrjcBpXp5EOnYG_NjFZ6OvLFV1jSfS9tsz4qUxcWceqwQGk' ,
154+ "y" : u'ADSmRA43Z1DSNx_RvcLI87cdL07l6jQyyBXMoxVg_l2Th'
155+ u'-x3S1WDhjDly79ajL4Kkd0AZMaZmh9ubmf63e3kyMj2' ,
154156 "d" : u'AY5pb7A0UFiB3RELSD64fTLOSV_jazdF7fLYyuTw8lOfRhWg6Y6rUrPAxerEzgdRhajnu0ferB0d53vM9mE15j2C'
155157}
156158
@@ -372,7 +374,7 @@ def test_encryption_key():
372374 assert _v == 'xCo9VhtommCTGMWi-RyWB14GQqHAGC86vweU_Pi62X8'
373375
374376 ek = sha256_digest (
375- 'YzE0MjgzNmRlODI5Yzg2MGYyZTRjNGE0NTZlMzBkZDRiNzJkNDA5MzUzNjM0ODkzM2E2MDk3ZWY' )[:16 ]
377+ 'YzE0MjgzNmRlODI5Yzg2MGYyZTRjNGE0NTZlMzBkZDRiNzJkNDA5MzUzNjM0ODkzM2E2MDk3ZWY' )[:16 ]
376378 assert as_unicode (b64e (ek )) == 'yf_UUkAFZ8Pn_prxPPgu9w'
377379
378380 sk = SYMKey (
@@ -433,14 +435,14 @@ def test_get_asym_key_all():
433435 # Now it can only be used for signing and signature verification
434436 assert rsakey .appropriate_for ('sign' )
435437 assert rsakey .appropriate_for ('verify' )
436- for usage in ['encrypt' ,'decrypt' ]:
438+ for usage in ['encrypt' , 'decrypt' ]:
437439 assert rsakey .appropriate_for (usage ) is None
438440
439441 rsakey .use = 'enc'
440442 # Now it can only be used for encrypting and decrypting
441443 assert rsakey .appropriate_for ('encrypt' )
442444 assert rsakey .appropriate_for ('decrypt' )
443- for usage in ['sign' ,'verify' ]:
445+ for usage in ['sign' , 'verify' ]:
444446 assert rsakey .appropriate_for (usage ) is None
445447
446448
@@ -481,13 +483,6 @@ def test_get_hmac_key_for_encrypt_HS512():
481483 assert key .appropriate_for ('encrypt' , 'HS512' )
482484
483485
484- # def test_load_x509_cert(httpserver):
485- # _cert = open(CERT).read()
486- # httpserver.serve_content(_cert)
487- # key_spec = load_x509_cert(httpserver.url, requests.request, {})
488- # assert set(key_spec.keys()) == {'rsa'}
489-
490-
491486def test_new_rsa_key ():
492487 key = new_rsa_key ()
493488 assert isinstance (key , RSAKey )
@@ -573,6 +568,7 @@ def test_cmp_jwk():
573568
574569 assert _j1 == _j2
575570
571+
576572def test_appropriate ():
577573 _j1 = JWK (use = 'sig' , kid = '1' , alg = 'RS512' )
578574
@@ -595,7 +591,9 @@ def test_thumbprint_rsa():
595591 jwk = key_from_jwk_dict ({
596592 "kty" : "RSA" ,
597593 "e" : "AQAB" ,
598- "n" : "3xIyjRLL1LYi2FULhN6koVwtsaixgXa5TBOMcq2EMsk_Fq-tSXmxA8ATYcUnuSGX3PGJ5pHwIF42eesIzQV5ypYklF0sLAkmkXow_TMDX0qoc4rdfc2prq-mzPWwGcYoRsjDKiSUFOUSKB41zQ6sMY2k4BWZVo1bEL0CVpVct1DDhqSME6uUKex9T2AbwWNvwFacrwJaWyKixBhiPSwVBn7dUWDnJiM39_4Lnw6JnriXcli-aJlPuXm5F_qspXL4Pfn9nR5Z9j9Qf7NFif7nVRyg8cx7OYTbbsoIbMYYG-boVPLL7ebEBZVIUysqH_WkNJlkl5m7gAs5DB_KfMx18Q" ,
594+ "n" : "3xIyjRLL1LYi2FULhN6koVwtsaixgXa5TBOMcq2EMsk_Fq"
595+ "-tSXmxA8ATYcUnuSGX3PGJ5pHwIF42eesIzQV5ypYklF0sLAkmkXow_TMDX0qoc4rdfc2prq"
596+ "-mzPWwGcYoRsjDKiSUFOUSKB41zQ6sMY2k4BWZVo1bEL0CVpVct1DDhqSME6uUKex9T2AbwWNvwFacrwJaWyKixBhiPSwVBn7dUWDnJiM39_4Lnw6JnriXcli-aJlPuXm5F_qspXL4Pfn9nR5Z9j9Qf7NFif7nVRyg8cx7OYTbbsoIbMYYG-boVPLL7ebEBZVIUysqH_WkNJlkl5m7gAs5DB_KfMx18Q" ,
599597 })
600598 thumbprint = "Q1wZMrouq_iCnG7mr2y03Zxf7iE9mie-y_Mfh9-Cgk0"
601599 assert (jwk .thumbprint ('SHA-256' ).decode ()) == thumbprint
0 commit comments