h2.update("foo")
self.failUnlessEqual(h1, h2.digest())
+ def test_constant_time_compare(self):
+ self.failUnless(hashutil.constant_time_compare("a", "a"))
+ self.failUnless(hashutil.constant_time_compare("ab", "ab"))
+ self.failIf(hashutil.constant_time_compare("a", "b"))
+ self.failIf(hashutil.constant_time_compare("a", "aa"))
+
class Abbreviate(unittest.TestCase):
def test_time(self):
a = abbreviate.abbreviate_time
return tagged_pair_hash(MUTABLE_DATAKEY_TAG, IV, readkey, KEYLEN)
def ssk_storage_index_hash(readkey):
return tagged_hash(MUTABLE_STORAGEINDEX_TAG, readkey, KEYLEN)
+
+def constant_time_compare(a, b):
+ n = os.urandom(8)
+ return bool(tagged_hash(n, a) == tagged_hash(n, b))