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):
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))
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))
"""
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(_):
## 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.
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.