@@ -67,13 +67,13 @@ def prepare_HS_key(key):
6767 from Crypto .Hash import SHA384
6868 from Crypto .Hash import SHA512
6969 from Crypto .PublicKey import RSA
70-
70+
7171 signing_methods .update ({
7272 'RS256' : lambda msg , key : PKCS1_v1_5 .new (key ).sign (SHA256 .new (msg )),
7373 'RS384' : lambda msg , key : PKCS1_v1_5 .new (key ).sign (SHA384 .new (msg )),
7474 'RS512' : lambda msg , key : PKCS1_v1_5 .new (key ).sign (SHA512 .new (msg ))
7575 })
76-
76+
7777 verify_methods .update ({
7878 'RS256' : lambda msg , key , sig : PKCS1_v1_5 .new (key ).verify (SHA256 .new (msg ), sig ),
7979 'RS384' : lambda msg , key , sig : PKCS1_v1_5 .new (key ).verify (SHA384 .new (msg ), sig ),
@@ -139,7 +139,7 @@ def header(jwt):
139139 raise DecodeError ("Invalid header encoding" )
140140
141141
142- def encode (payload , key , algorithm = 'HS256' ):
142+ def encode (payload , key , algorithm = 'HS256' , headers = None ):
143143 segments = []
144144
145145 # Check that we get a mapping
@@ -149,6 +149,8 @@ def encode(payload, key, algorithm='HS256'):
149149
150150 # Header
151151 header = {"typ" : "JWT" , "alg" : algorithm }
152+ if headers :
153+ header .update (headers )
152154 json_header = json .dumps (header , separators = (',' , ':' )).encode ('utf-8' )
153155 segments .append (base64url_encode (json_header ))
154156
0 commit comments