User "sha1" with "usedforsecurity=False"
That prevents the pep8 pylint error B324 [1]. [1]https://bandit.readthedocs.io/en/latest/plugins/b324_hashlib.html Trivial-Fix Change-Id: Idbec232e95bdc71942f4e3f88684c3de62294d51
This commit is contained in:
parent
cf494c8be1
commit
2ded6ed3ce
@ -286,7 +286,8 @@ def get_interface_name(name, prefix='', max_len=constants.DEVICE_NAME_MAX_LEN):
|
|||||||
"given length for an interface name."))
|
"given length for an interface name."))
|
||||||
|
|
||||||
namelen = max_len - len(prefix) - INTERFACE_HASH_LEN
|
namelen = max_len - len(prefix) - INTERFACE_HASH_LEN
|
||||||
hashed_name = hashlib.sha1(encodeutils.to_utf8(name))
|
hashed_name = hashlib.new('sha1', usedforsecurity=False)
|
||||||
|
hashed_name.update(encodeutils.to_utf8(name))
|
||||||
new_name = ('%(prefix)s%(truncated)s%(hash)s' %
|
new_name = ('%(prefix)s%(truncated)s%(hash)s' %
|
||||||
{'prefix': prefix, 'truncated': name[0:namelen],
|
{'prefix': prefix, 'truncated': name[0:namelen],
|
||||||
'hash': hashed_name.hexdigest()[0:INTERFACE_HASH_LEN]})
|
'hash': hashed_name.hexdigest()[0:INTERFACE_HASH_LEN]})
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
import hashlib
|
import hashlib
|
||||||
from unittest import mock
|
from unittest import mock
|
||||||
|
|
||||||
|
from oslo_utils import encodeutils
|
||||||
from oslo_utils import excutils
|
from oslo_utils import excutils
|
||||||
from oslo_utils import uuidutils
|
from oslo_utils import uuidutils
|
||||||
|
|
||||||
@ -28,12 +29,6 @@ from neutron_lib.tests import _base as base
|
|||||||
LONG_NAME1 = "A_REALLY_LONG_INTERFACE_NAME1"
|
LONG_NAME1 = "A_REALLY_LONG_INTERFACE_NAME1"
|
||||||
LONG_NAME2 = "A_REALLY_LONG_INTERFACE_NAME2"
|
LONG_NAME2 = "A_REALLY_LONG_INTERFACE_NAME2"
|
||||||
SHORT_NAME = "SHORT"
|
SHORT_NAME = "SHORT"
|
||||||
MOCKED_HASH = "mockedhash"
|
|
||||||
|
|
||||||
|
|
||||||
class MockSHA(object):
|
|
||||||
def hexdigest(self):
|
|
||||||
return MOCKED_HASH
|
|
||||||
|
|
||||||
|
|
||||||
class TestUtils(base.BaseTestCase):
|
class TestUtils(base.BaseTestCase):
|
||||||
@ -175,18 +170,21 @@ class TestUtils(base.BaseTestCase):
|
|||||||
core_plugin.update_port.assert_called_once_with(
|
core_plugin.update_port.assert_called_once_with(
|
||||||
'ctx', '1', {'port': '2'})
|
'ctx', '1', {'port': '2'})
|
||||||
|
|
||||||
@mock.patch.object(hashlib, 'sha1', return_value=MockSHA())
|
@staticmethod
|
||||||
def test_get_interface_name(self, mock_sha1):
|
def _hash_prefix(name):
|
||||||
|
# nosec B324
|
||||||
|
hashed_name = hashlib.sha1(encodeutils.to_utf8(name))
|
||||||
|
return hashed_name.hexdigest()[0:utils.INTERFACE_HASH_LEN]
|
||||||
|
|
||||||
|
def test_get_interface_name(self):
|
||||||
prefix = "pre-"
|
prefix = "pre-"
|
||||||
prefix_long = "long_prefix"
|
prefix_long = "long_prefix"
|
||||||
prefix_exceeds_max_dev_len = "much_too_long_prefix"
|
prefix_exceeds_max_dev_len = "much_too_long_prefix"
|
||||||
hash_used = MOCKED_HASH[0:6]
|
self.assertEqual("A_REALLY_" + self._hash_prefix(LONG_NAME1),
|
||||||
|
|
||||||
self.assertEqual("A_REALLY_" + hash_used,
|
|
||||||
utils.get_interface_name(LONG_NAME1))
|
utils.get_interface_name(LONG_NAME1))
|
||||||
self.assertEqual("SHORT",
|
self.assertEqual("SHORT",
|
||||||
utils.get_interface_name(SHORT_NAME))
|
utils.get_interface_name(SHORT_NAME))
|
||||||
self.assertEqual("pre-A_REA" + hash_used,
|
self.assertEqual("pre-A_REA" + self._hash_prefix(LONG_NAME1),
|
||||||
utils.get_interface_name(LONG_NAME1, prefix=prefix))
|
utils.get_interface_name(LONG_NAME1, prefix=prefix))
|
||||||
self.assertEqual("pre-SHORT",
|
self.assertEqual("pre-SHORT",
|
||||||
utils.get_interface_name(SHORT_NAME, prefix=prefix))
|
utils.get_interface_name(SHORT_NAME, prefix=prefix))
|
||||||
@ -203,8 +201,7 @@ class TestUtils(base.BaseTestCase):
|
|||||||
if_prefix2 = utils.get_interface_name(LONG_NAME2, prefix=prefix)
|
if_prefix2 = utils.get_interface_name(LONG_NAME2, prefix=prefix)
|
||||||
self.assertNotEqual(if_prefix1, if_prefix2)
|
self.assertNotEqual(if_prefix1, if_prefix2)
|
||||||
|
|
||||||
@mock.patch.object(hashlib, 'sha1', return_value=MockSHA())
|
def test_get_interface_max_len(self):
|
||||||
def test_get_interface_max_len(self, mock_sha1):
|
|
||||||
self.assertEqual(constants.DEVICE_NAME_MAX_LEN,
|
self.assertEqual(constants.DEVICE_NAME_MAX_LEN,
|
||||||
len(utils.get_interface_name(LONG_NAME1)))
|
len(utils.get_interface_name(LONG_NAME1)))
|
||||||
self.assertEqual(10, len(utils.get_interface_name(LONG_NAME1,
|
self.assertEqual(10, len(utils.get_interface_name(LONG_NAME1,
|
||||||
|
Loading…
Reference in New Issue
Block a user