self.assertRaises(exception.FileNotFound,
utils.read_file_as_root, 'bad')
- def test_strcmp_const_time(self):
- self.assertTrue(utils.strcmp_const_time('abc123', 'abc123'))
- self.assertFalse(utils.strcmp_const_time('a', 'aaaaa'))
- self.assertFalse(utils.strcmp_const_time('ABC123', 'abc123'))
-
def test_temporary_chown(self):
def fake_execute(*args, **kwargs):
if args[0] == 'chown':
LOG.debug(_('Could not remove tmpdir: %s'), str(e))
-def strcmp_const_time(s1, s2):
- """Constant-time string comparison.
-
- :params s1: the first string
- :params s2: the second string
-
- :return: True if the strings are equal.
-
- This function takes two strings and compares them. It is intended to be
- used when doing a comparison for authentication purposes to help guard
- against timing attacks.
- """
- if len(s1) != len(s2):
- return False
- result = 0
- for (a, b) in zip(s1, s2):
- result |= ord(a) ^ ord(b)
- return result == 0
-
-
def walk_class_hierarchy(clazz, encountered=None):
"""Walk class hierarchy, yielding most derived classes first"""
if not encountered: