forked from zaclys/searxng
		
	[fix] secret_key can be bytes instead of a string (#1602)
Fix #1600 In settings.yml, the secret_key can be written as string or as base64 encoded data using !!binary notation.
This commit is contained in:
		
							parent
							
								
									8f44014627
								
							
						
					
					
						commit
						ec88fb8a0f
					
				
					 2 changed files with 22 additions and 1 deletions
				
			
		|  | @ -384,10 +384,17 @@ def load_module(filename, module_dir): | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def new_hmac(secret_key, url): | def new_hmac(secret_key, url): | ||||||
|  |     try: | ||||||
|  |         secret_key_bytes = bytes(secret_key, 'utf-8') | ||||||
|  |     except TypeError as err: | ||||||
|  |         if isinstance(secret_key, bytes): | ||||||
|  |             secret_key_bytes = secret_key | ||||||
|  |         else: | ||||||
|  |             raise err | ||||||
|     if sys.version_info[0] == 2: |     if sys.version_info[0] == 2: | ||||||
|         return hmac.new(bytes(secret_key), url, hashlib.sha256).hexdigest() |         return hmac.new(bytes(secret_key), url, hashlib.sha256).hexdigest() | ||||||
|     else: |     else: | ||||||
|         return hmac.new(bytes(secret_key, 'utf-8'), url, hashlib.sha256).hexdigest() |         return hmac.new(secret_key_bytes, url, hashlib.sha256).hexdigest() | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def to_string(obj): | def to_string(obj): | ||||||
|  |  | ||||||
|  | @ -128,3 +128,17 @@ class TestUnicodeWriter(SearxTestCase): | ||||||
|         rows = [1, 2, 3] |         rows = [1, 2, 3] | ||||||
|         self.unicode_writer.writerows(rows) |         self.unicode_writer.writerows(rows) | ||||||
|         self.assertEqual(self.unicode_writer.writerow.call_count, len(rows)) |         self.assertEqual(self.unicode_writer.writerow.call_count, len(rows)) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class TestNewHmac(SearxTestCase): | ||||||
|  | 
 | ||||||
|  |     def test_bytes(self): | ||||||
|  |         for secret_key in ['secret', b'secret', 1]: | ||||||
|  |             if secret_key == 1: | ||||||
|  |                 with self.assertRaises(TypeError): | ||||||
|  |                     utils.new_hmac(secret_key, b'http://example.com') | ||||||
|  |                 continue | ||||||
|  |             res = utils.new_hmac(secret_key, b'http://example.com') | ||||||
|  |             self.assertEqual( | ||||||
|  |                 res, | ||||||
|  |                 '23e2baa2404012a5cc8e4a18b4aabf0dde4cb9b56f679ddc0fd6d7c24339d819') | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 rachmadani haryono
						rachmadani haryono