X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb-python/blobdiff_plain/10011e42cbf76e0af767f49818bedbef5ee69341..385caa2fd0f72e17e35eb9c28b6233c1a5197e88:/t/t-algorithms.py?ds=sidebyside diff --git a/t/t-algorithms.py b/t/t-algorithms.py index 52decd6..8346fad 100644 --- a/t/t-algorithms.py +++ b/t/t-algorithms.py @@ -95,7 +95,7 @@ class HashBufferTestMixin (U.TestCase): if w <= 3: n = 1 << 8*w h0, _ = makefn(w + n) - me.assertRaises((ValueError, OverflowError, TypeError), + me.assertRaises((ValueError, TypeError), hashfn, h0, C.ByteString.zero(n)) def check_hashbuffer(me, makefn): @@ -106,10 +106,9 @@ class HashBufferTestMixin (U.TestCase): me.check_hashbuffer_hashn(2, True, makefn, lambda h, n: h.hashu16(n)) me.check_hashbuffer_hashn(2, True, makefn, lambda h, n: h.hashu16b(n)) me.check_hashbuffer_hashn(2, False, makefn, lambda h, n: h.hashu16l(n)) - if hasattr(makefn(0)[0], "hashu24"): - me.check_hashbuffer_hashn(3, True, makefn, lambda h, n: h.hashu24(n)) - me.check_hashbuffer_hashn(3, True, makefn, lambda h, n: h.hashu24b(n)) - me.check_hashbuffer_hashn(3, False, makefn, lambda h, n: h.hashu24l(n)) + me.check_hashbuffer_hashn(3, True, makefn, lambda h, n: h.hashu24(n)) + me.check_hashbuffer_hashn(3, True, makefn, lambda h, n: h.hashu24b(n)) + me.check_hashbuffer_hashn(3, False, makefn, lambda h, n: h.hashu24l(n)) me.check_hashbuffer_hashn(4, True, makefn, lambda h, n: h.hashu32(n)) me.check_hashbuffer_hashn(4, True, makefn, lambda h, n: h.hashu32b(n)) me.check_hashbuffer_hashn(4, False, makefn, lambda h, n: h.hashu32l(n)) @@ -123,10 +122,9 @@ class HashBufferTestMixin (U.TestCase): me.check_hashbuffer_bufn(2, True, makefn, lambda h, x: h.hashbuf16(x)) me.check_hashbuffer_bufn(2, True, makefn, lambda h, x: h.hashbuf16b(x)) me.check_hashbuffer_bufn(2, False, makefn, lambda h, x: h.hashbuf16l(x)) - if hasattr(makefn(0)[0], "hashbuf24"): - me.check_hashbuffer_bufn(3, True, makefn, lambda h, x: h.hashbuf24(x)) - me.check_hashbuffer_bufn(3, True, makefn, lambda h, x: h.hashbuf24b(x)) - me.check_hashbuffer_bufn(3, False, makefn, lambda h, x: h.hashbuf24l(x)) + me.check_hashbuffer_bufn(3, True, makefn, lambda h, x: h.hashbuf24(x)) + me.check_hashbuffer_bufn(3, True, makefn, lambda h, x: h.hashbuf24b(x)) + me.check_hashbuffer_bufn(3, False, makefn, lambda h, x: h.hashbuf24l(x)) me.check_hashbuffer_bufn(4, True, makefn, lambda h, x: h.hashbuf32(x)) me.check_hashbuffer_bufn(4, True, makefn, lambda h, x: h.hashbuf32b(x)) me.check_hashbuffer_bufn(4, False, makefn, lambda h, x: h.hashbuf32l(x)) @@ -602,29 +600,28 @@ class BaseTestHash (HashBufferTestMixin): """ Check hash class HCLS. - If NEED_BUFSZ is false, then don't insist that HCLS have working `bufsz', - `name', or `hashsz' attributes. This test is mostly reused for MACs, - which don't have these attributes. + If NEED_BUFSZ is false, then don't insist that HCLS has a working `bufsz' + attribute. This test is mostly reused for MACs, which don't have this + attribute. """ ## Check the class properties. - if need_bufsz: - me.assertEqual(type(hcls.name), str) - me.assertEqual(type(hcls.bufsz), int) - me.assertEqual(type(hcls.hashsz), int) + me.assertEqual(type(hcls.name), str) + if need_bufsz: me.assertEqual(type(hcls.bufsz), int) + me.assertEqual(type(hcls.hashsz), int) ## Set some initial values. m = T.span(131) h = hcls().hash(m).done() ## Check that hash length comes out right. - if need_bufsz: me.assertEqual(len(h), hcls.hashsz) + me.assertEqual(len(h), hcls.hashsz) ## Check that we get the same answer if we split the message up. me.assertEqual(h, hcls().hash(m[0:73]).hash(m[73:131]).done()) ## Check the `check' method. me.assertTrue(hcls().hash(m).check(h)) - me.assertFalse(hcls().hash(m).check(h ^ len(h)*C.bytes("aa"))) + me.assertFalse(hcls().hash(m).check(h ^ hcls.hashsz*C.bytes("aa"))) ## Check the menagerie of random hashing methods. def mkhash(_): @@ -654,6 +651,7 @@ class TestMessageAuthentication (BaseTestHash, T.GenericTestMixin): ## Test hashing. k = T.span(mcls.keysz.default) key = mcls(k) + me.assertEqual(key.hashsz, key.tagsz) me.check_hash(key, need_bufsz = False) ## Check that bad key lengths are rejected. @@ -685,6 +683,9 @@ class TestPoly1305 (HashBufferTestMixin): t = key(u).hash(m).done() ## Check the key properties. + me.assertEqual(key.name, "poly1305") + me.assertEqual(key.tagsz, 16) + me.assertEqual(key.tagsz, 16) me.assertEqual(len(t), 16) ## Check that we get the same answer if we split the message up.