Projet

Général

Profil

0001-fix-key-type-in-request-signing-7866.patch

Serghei Mihai, 17 juillet 2015 10:11

Télécharger (1,96 ko)

Voir les différences:

Subject: [PATCH] fix key type in request signing (#7866)

 passerelle/base/signature.py |  2 ++
 passerelle/base/tests.py     | 23 +++++++++++++++++++++++
 2 files changed, 25 insertions(+)
 create mode 100644 passerelle/base/tests.py
passerelle/base/signature.py
33 33

  
34 34
def sign_string(s, key, algo='sha256', timedelta=30):
35 35
    digestmod = getattr(hashlib, algo)
36
    if isinstance(key, unicode):
37
        key = key.encode('utf-8')
36 38
    hash = hmac.HMAC(key, digestmod=digestmod, msg=s)
37 39
    return hash.digest()
38 40

  
passerelle/base/tests.py
1
import base64
2

  
3
from django.test import TestCase
4

  
5
from . import signature
6

  
7
class SignatureTestCase(TestCase):
8
    def setUp(self):
9
        self.key = '12345'
10
        self.message = 'orig=passerelle&NameID=secret'
11
        self.algo = 'sha1'
12

  
13
    def test_sign_string_with_string_key(self):
14
        encoded = base64.b64encode(signature.sign_string(self.message, self.key))
15
        self.assertEqual(encoded, 'JC6K3+PCt3YKxZ9eCtEOoF+JfzQBmMeZvvxJ6VhXUXY=')
16

  
17
    def test_sign_string_with_string_key_sha1(self):
18
        encoded = base64.b64encode(signature.sign_string(self.message, self.key, algo=self.algo))
19
        self.assertEqual(encoded, 'lOt5eyEvLJDTVl11pSqOPDJImgM=')
20

  
21
    def test_sign_string_with_unicode_key(self):
22
        encoded = base64.b64encode(signature.sign_string(self.message, unicode(self.key)))
23
        self.assertEqual(encoded, 'JC6K3+PCt3YKxZ9eCtEOoF+JfzQBmMeZvvxJ6VhXUXY=')
0
-