Fix token hashing with python 3
With python 3, hasher.update() must be called with byte encoding. Hashing without encoding first in python 3 results in this error: TypeError: Unicode-objects must be encoded before hashing Using byte encoding also works with python 2.7, so convert tokens to bytes before hashing regardless of python version. Change-Id: I837566c669565ed8c11dacbefc273dae3ff580bb Closes-Bug: #1552443
This commit is contained in:
@@ -29,9 +29,7 @@ from keystoneclient.v2_0 import client as client_v2
|
||||
from keystoneclient.v3 import client as client_v3
|
||||
import mock
|
||||
from mox3 import mox
|
||||
import sys
|
||||
from testscenarios import load_tests_apply_scenarios # noqa
|
||||
import unittest
|
||||
|
||||
from openstack_auth import policy
|
||||
from openstack_auth.tests import data_v2
|
||||
@@ -1165,7 +1163,6 @@ class UserTestCase(test.TestCase):
|
||||
def setUp(self):
|
||||
self.data = data_v3.generate_test_data(pki=True)
|
||||
|
||||
@unittest.skipIf(sys.version_info >= (3, 0), "Bug #1552443")
|
||||
def test_unscoped_token_is_none(self):
|
||||
created_token = user.Token(self.data.domain_scoped_access_info,
|
||||
unscoped_token=None)
|
||||
|
||||
@@ -88,12 +88,12 @@ class Token(object):
|
||||
algorithm = getattr(settings, 'OPENSTACK_TOKEN_HASH_ALGORITHM',
|
||||
'md5')
|
||||
hasher = hashlib.new(algorithm)
|
||||
hasher.update(self.id)
|
||||
hasher.update(self.id.encode('utf-8'))
|
||||
self.id = hasher.hexdigest()
|
||||
# Only hash unscoped token if needed
|
||||
if self._is_pki_token(self.unscoped_token):
|
||||
hasher = hashlib.new(algorithm)
|
||||
hasher.update(self.unscoped_token)
|
||||
hasher.update(self.unscoped_token.encode('utf-8'))
|
||||
self.unscoped_token = hasher.hexdigest()
|
||||
self.expires = auth_ref.expires
|
||||
|
||||
|
||||
Reference in New Issue
Block a user