0001-fix-key-type-in-request-signing-7866.patch
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 |
- |