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 3
3
import base64
4
4
import distutils .version
5
5
import functools
6
+ import hashlib
6
7
import logging
7
8
import os
8
9
import random
@@ -216,7 +217,8 @@ def check_token(args):
216
217
217
218
218
219
def check_signature ():
219
- if not cfg .privileged_key :
220
+ pkey = cfg .privileged_key
221
+ if not pkey :
220
222
return False
221
223
headers = flask .request .headers
222
224
signature = headers .get ('X-Signature' )
@@ -232,9 +234,11 @@ def check_signature():
232
234
message = ',' .join ([flask .request .method , flask .request .path ] +
233
235
['{}:{}' .format (k , headers [k ]) for k in header_keys ])
234
236
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 )
236
241
return False
237
- return True
238
242
239
243
240
244
def parse_content_signature (s ):
@@ -245,6 +249,12 @@ def parse_content_signature(s):
245
249
return ret
246
250
247
251
252
+ def message_digest (s ):
253
+ m = hashlib .new ('sha1' )
254
+ m .update (s )
255
+ return m .digest ()
256
+
257
+
248
258
def requires_auth (f ):
249
259
@functools .wraps (f )
250
260
def wrapper (* args , ** kwargs ):
You can’t perform that action at this time.
0 commit comments