1+ import binascii
12import base64
23import hashlib
34import os
2425"""
2526
2627T_PUBLIC_RAW = """EJwJZq_GN8jJbo1GGpyU70hmP2hbWAUpQFKDBy\
27- KB81yldJ9GTklBM5xqEwuPM7VuQcyiLDhvovthPIXx-gsQRQ=="""
28+ KB81yldJ9GTklBM5xqEwuPM7VuQcyiLDhvovthPIXx-gsQRQ==""". strip ( '=' )
2829
2930
3031def setUp (self ):
@@ -44,21 +45,21 @@ def tearDown(self):
4445class VapidTestCase (unittest .TestCase ):
4546 def test_init (self ):
4647 v1 = Vapid01 (private_key_file = "/tmp/private" )
47- eq_ (v1 .private_key .to_pem (), T_PRIVATE )
48- eq_ (v1 .public_key .to_pem (), T_PUBLIC )
48+ eq_ (v1 .private_key .to_pem (), T_PRIVATE . encode ( 'utf8' ) )
49+ eq_ (v1 .public_key .to_pem (), T_PUBLIC . encode ( 'utf8' ) )
4950 v2 = Vapid01 (private_key = T_PRIVATE )
50- eq_ (v2 .private_key .to_pem (), T_PRIVATE )
51- eq_ (v2 .public_key .to_pem (), T_PUBLIC )
51+ eq_ (v2 .private_key .to_pem (), T_PRIVATE . encode ( 'utf8' ) )
52+ eq_ (v2 .public_key .to_pem (), T_PUBLIC . encode ( 'utf8' ) )
5253 v3 = Vapid01 (private_key = T_DER )
53- eq_ (v3 .private_key .to_pem (), T_PRIVATE )
54- eq_ (v3 .public_key .to_pem (), T_PUBLIC )
54+ eq_ (v3 .private_key .to_pem (), T_PRIVATE . encode ( 'utf8' ) )
55+ eq_ (v3 .public_key .to_pem (), T_PUBLIC . encode ( 'utf8' ) )
5556 no_exist = '/tmp/not_exist'
5657 Vapid01 (private_key_file = no_exist )
5758 ok_ (os .path .isfile (no_exist ))
5859 os .unlink (no_exist )
5960
6061 def repad (self , data ):
61- return data + b "====" [:len (data ) % 4 ]
62+ return data + "====" [:len (data ) % 4 ]
6263
6364 @patch ("ecdsa.SigningKey.from_pem" , side_effect = Exception )
6465 def test_init_bad_priv (self , mm ):
@@ -94,7 +95,7 @@ def test_save_public_key(self):
9495
9596 def test_validate (self ):
9697 v = Vapid01 ("/tmp/private" )
97- msg = "foobar"
98+ msg = "foobar" . encode ( 'utf8' )
9899 vtoken = v .validate (msg )
99100 ok_ (v .public_key .verify (base64 .urlsafe_b64decode (vtoken ),
100101 msg ,
@@ -112,7 +113,7 @@ def test_sign_01(self):
112113 items = jws .verify (result ['Authorization' ].split (' ' )[1 ],
113114 v .public_key ,
114115 algorithms = ["ES256" ])
115- eq_ (json .loads (items ), claims )
116+ eq_ (json .loads (items . decode ( 'utf8' ) ), claims )
116117 result = v .sign (claims )
117118 eq_ (result ['Crypto-Key' ],
118119 'p256ecdsa=' + T_PUBLIC_RAW )
@@ -131,9 +132,9 @@ def test_sign_02(self):
131132 eq_ (len (parts ), 2 )
132133 t_val = json .loads (base64 .urlsafe_b64decode (
133134 self .repad (parts [0 ][2 :].split ('.' )[1 ])
134- ))
135- k_val = base64 . urlsafe_b64decode (self .repad (parts [1 ][2 :]))
136- eq_ (k_val [ 0 ], " \04 " )
135+ ). decode ( 'utf8' ) )
136+ k_val = binascii . a2b_base64 (self .repad (parts [1 ][2 :]))
137+ eq_ (binascii . hexlify ( k_val )[: 2 ], b'04' )
137138 eq_ (len (k_val ), 65 )
138139 for k in claims :
139140 eq_ (t_val [k ], claims [k ])
0 commit comments