This repository was archived by the owner on Sep 12, 2018. It is now read-only.
File tree Expand file tree Collapse file tree 1 file changed +13
-3
lines changed Expand file tree Collapse file tree 1 file changed +13
-3
lines changed Original file line number Diff line number Diff line change 33import base64
44import distutils .version
55import functools
6+ import hashlib
67import logging
78import os
89import random
@@ -216,7 +217,8 @@ def check_token(args):
216217
217218
218219def check_signature ():
219- if not cfg .privileged_key :
220+ pkey = cfg .privileged_key
221+ if not pkey :
220222 return False
221223 headers = flask .request .headers
222224 signature = headers .get ('X-Signature' )
@@ -232,9 +234,11 @@ def check_signature():
232234 message = ',' .join ([flask .request .method , flask .request .path ] +
233235 ['{}:{}' .format (k , headers [k ]) for k in header_keys ])
234236 logger .debug ('Signed message: {}' .format (message ))
235- if RSA .verify (cfg .privileged_key , sigdata , message , 'sha1' ) is False :
237+ try :
238+ return pkey .verify (message_digest (message ), sigdata , 'sha1' )
239+ except RSA .RSAError as e :
240+ logger .exception (e )
236241 return False
237- return True
238242
239243
240244def parse_content_signature (s ):
@@ -245,6 +249,12 @@ def parse_content_signature(s):
245249 return ret
246250
247251
252+ def message_digest (s ):
253+ m = hashlib .new ('sha1' )
254+ m .update (s )
255+ return m .digest ()
256+
257+
248258def requires_auth (f ):
249259 @functools .wraps (f )
250260 def wrapper (* args , ** kwargs ):
You can’t perform that action at this time.
0 commit comments