X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb-python/blobdiff_plain/8d507e7955099a09257a5b9cdc34500f1bc6ae41..3317491a2bc28732f805c8521777aafa52038793:/t/t-algorithms.py diff --git a/t/t-algorithms.py b/t/t-algorithms.py index cff1ebd..593e6cf 100644 --- a/t/t-algorithms.py +++ b/t/t-algorithms.py @@ -76,8 +76,7 @@ class HashBufferTestMixin (U.TestCase): ## Check overflow detection. h0, _ = makefn(w) - me.assertRaises((OverflowError, ValueError), - hashfn, h0, 1 << 8*w) + me.assertRaises(OverflowError, hashfn, h0, 1 << 8*w) def check_hashbuffer_bufn(me, w, bigendp, makefn, hashfn): """Check `hashbufN'.""" @@ -95,8 +94,7 @@ class HashBufferTestMixin (U.TestCase): if w <= 3: n = 1 << 8*w h0, _ = makefn(w + n) - me.assertRaises((ValueError, OverflowError, TypeError), - hashfn, h0, C.ByteString.zero(n)) + me.assertRaises(ValueError, hashfn, h0, C.ByteString.zero(n)) def check_hashbuffer(me, makefn): """Test the various `hash...' methods.""" @@ -106,10 +104,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 +120,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)) @@ -180,7 +176,7 @@ class TestKeysize (U.TestCase): me.assertEqual(ksz.default, 32) me.assertEqual(ksz.min, 10) me.assertEqual(ksz.max, 32) - me.assertEqual(set(ksz.set), set([10, 16, 32])) + me.assertEqual(ksz.set, set([10, 16, 32])) for x, best, pad in [(9, None, 10), (10, 10, 10), (11, 10, 16), (15, 10, 16), (16, 16, 16), (17, 16, 32), (31, 16, 32), (32, 32, 32), (33, 32, None)]: @@ -194,12 +190,12 @@ class TestKeysize (U.TestCase): ## Check construction. ksz = C.KeySZSet(7) me.assertEqual(ksz.default, 7) - me.assertEqual(set(ksz.set), set([7])) + me.assertEqual(ksz.set, set([7])) me.assertEqual(ksz.min, 7) me.assertEqual(ksz.max, 7) - ksz = C.KeySZSet(7, [3, 6, 9]) + ksz = C.KeySZSet(7, iter([3, 6, 9])) me.assertEqual(ksz.default, 7) - me.assertEqual(set(ksz.set), set([3, 6, 7, 9])) + me.assertEqual(ksz.set, set([3, 6, 7, 9])) me.assertEqual(ksz.min, 3) me.assertEqual(ksz.max, 9) @@ -602,29 +598,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 +649,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. @@ -673,7 +669,7 @@ class TestPoly1305 (HashBufferTestMixin): me.assertEqual(C.poly1305.name, "poly1305") me.assertEqual(type(C.poly1305.keysz), C.KeySZSet) me.assertEqual(C.poly1305.keysz.default, 16) - me.assertEqual(set(C.poly1305.keysz.set), set([16])) + me.assertEqual(C.poly1305.keysz.set, set([16])) me.assertEqual(C.poly1305.tagsz, 16) me.assertEqual(C.poly1305.masksz, 16) @@ -685,6 +681,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.