def test_basics(self): sha3 = self.new() self.assertEqual(sha3.name, self.name) self.assertEqual(sha3.digest_size, self.digest_size) self.assertEqual(sha3._capacity_bits + sha3._rate_bits, 1600) self.assertEqual(sha3._rate_bits, self.rate_bits) self.assertEqual(sha3._capacity_bits, self.capacity_bits) if HMAC_SUPPORT: if self.block_size is not None: self.assertEqual(sha3.block_size, self.block_size) else: self.assertRaises(TypeError, getattr, sha3, "block_size") else: self.assertEqual(sha3.block_size, NotImplemented) self.assertEqual(len(sha3.digest()), self.digest_size) self.assertEqual(len(sha3.hexdigest()), self.digest_size * 2) self.assertRaises(AttributeError, setattr, sha3, "digest", 3) self.assertRaises(AttributeError, setattr, sha3, "name", "egg") self.new(b"data") self.new(string=b"data") self.assertRaises(TypeError, self.new, None) self.assertRaises(TypeError, sha3.update, None) self.assertRaises(TypeError, self.new, asunicode("text")) self.assertRaises(TypeError, sha3.update, asunicode("text")) sha3type = type(sha3) self.assertEqual(sha3type.__name__, "SHA3") self.assertEqual(sha3type.__module__, "_sha3") self.assertRaises(TypeError, sha3type) self.assertRaises(TypeError, type, sha3type, "subclass", {})
def test_basics(self): sha3 = self.new() self.assertEqual(sha3.name, self.name) self.assertEqual(sha3.digest_size, self.digest_size) self.assertEqual(sha3._capacity_bits + sha3._rate_bits, 1600) self.assertEqual(sha3._rate_bits, self.rate_bits) self.assertEqual(sha3._capacity_bits, self.capacity_bits) if self.block_size is not None: self.assertEqual(sha3.block_size, self.block_size) if self.shake: self.assertEqual(len(sha3.digest(4)), 4) self.assertEqual(len(sha3.hexdigest(4)), 8) self.assertEqual(len(sha3.digest(8)), 8) self.assertEqual(len(sha3.hexdigest(8)), 16) self.assertEqual(len(sha3.digest(97)), 97) self.assertEqual(len(sha3.hexdigest(97)), 194) else: self.assertEqual(len(sha3.digest()), self.digest_size) self.assertEqual(len(sha3.hexdigest()), self.digest_size * 2) # object is read-only(PyPy behavior is different here) if platform.python_implementation() != "PyPy": self.assertRaises(AttributeError, setattr, sha3, "attribute", None) if (platform.python_implementation() == "PyPy" and platform.python_version_tuple()[0] == "2"): self.assertRaises(TypeError, setattr, sha3, "digest_size", 3) self.assertRaises(TypeError, setattr, sha3, "name", "egg") else: self.assertRaises(AttributeError, setattr, sha3, "digest_size", 3) self.assertRaises(AttributeError, setattr, sha3, "name", "egg") self.new(b"data") self.new(string=b"data") self.assertRaises(TypeError, self.new, None) self.assertRaises(TypeError, sha3.update, None) self.assertRaises(TypeError, self.new, asunicode("text")) self.assertRaises(TypeError, sha3.update, asunicode("text")) sha3type = type(sha3) self.assertEqual(sha3type.__name__, self.name) self.assertEqual(sha3type.__module__, "_pysha3") self.assertIsInstance(sha3type(), sha3type) self.assertIs(sha3type, self.new) self.assertRaises(TypeError, type, sha3type, "subclass", {})
def assertHashDigest(self, hexmsg, hexdigest): hexdigest = hexdigest.lower() msg = fromhex(hexmsg) digest = fromhex(hexdigest) self.assertEqual(len(digest), self.digest_size) sha3 = self.new(msg) self.assertEqual(sha3.hexdigest(), hexdigest) self.assertEqual(sha3.digest(), digest) sha3 = self.new() sha3.update(msg) self.assertEqual(sha3.hexdigest(), hexdigest) self.assertEqual(sha3.digest(), digest) sha3 = self.new() for b in msg: sha3.update(tobyte(b)) self.assertEqual(sha3.hexdigest(), hexdigest) self.assertEqual(sha3.digest(), digest)
def test_basics(self): sha3 = self.new() self.assertEqual(sha3.name, self.name) self.assertEqual(sha3.digest_size, self.digest_size) self.assertEqual(sha3._capacity_bits + sha3._rate_bits, 1600) self.assertEqual(sha3._rate_bits, self.rate_bits) self.assertEqual(sha3._capacity_bits, self.capacity_bits) if self.block_size is not None: self.assertEqual(sha3.block_size, self.block_size) if self.shake: self.assertEqual(len(sha3.digest(4)), 4) self.assertEqual(len(sha3.hexdigest(4)), 8) self.assertEqual(len(sha3.digest(8)), 8) self.assertEqual(len(sha3.hexdigest(8)), 16) self.assertEqual(len(sha3.digest(97)), 97) self.assertEqual(len(sha3.hexdigest(97)), 194) else: self.assertEqual(len(sha3.digest()), self.digest_size) self.assertEqual(len(sha3.hexdigest()), self.digest_size * 2) # object is read-only self.assertRaises(AttributeError, setattr, sha3, "attribute", None) self.assertRaises(AttributeError, setattr, sha3, "digest_size", 3) self.assertRaises(AttributeError, setattr, sha3, "name", "egg") self.new(b"data") self.new(string=b"data") self.assertRaises(TypeError, self.new, None) self.assertRaises(TypeError, sha3.update, None) self.assertRaises(TypeError, self.new, asunicode("text")) self.assertRaises(TypeError, sha3.update, asunicode("text")) sha3type = type(sha3) self.assertEqual(sha3type.__name__, self.name) self.assertEqual(sha3type.__module__, "_pysha3") self.assertIsInstance(sha3type(), sha3type) self.assertIs(sha3type, self.new) self.assertRaises(TypeError, type, sha3type, "subclass", {})
def test_vectors_unaligned(self): for hexmsg, hexdigest in self.vectors: hexdigest = hexdigest.lower() msg = fromhex(hexmsg) digest = fromhex(hexdigest) for i in range(1, 15): msg2 = i * b"\x00" + msg unaligned = memoryview(msg2)[i:] self.assertEqual(unaligned, msg) sha3 = self.new(unaligned) self.assertEqual(sha3.hexdigest(), hexdigest) self.assertEqual(sha3.digest(), digest)
def test_kat(self): name = self.name.split("_")[1] katname = os.path.join("kat", "*%s.txt" % name) kats = glob(katname) self.assertEqual(len(kats), 2) for kat in kats: for hexmsg, hexdigest in katparser(kat): hexdigest = hexdigest.lower() msg = fromhex(hexmsg) digest = fromhex(hexdigest) self.assertEqual(len(digest), self.digest_size) sha3 = self.new(msg) self.assertEqual(sha3.hexdigest(), hexdigest) self.assertEqual(sha3.digest(), digest)
def test_basics(self): sha3 = self.new() self.assertEqual(sha3.name, self.name) self.assertEqual(sha3.digest_size, self.digest_size) self.assertEqual(sha3.block_size, self.block_size) self.assertEqual(len(sha3.digest()), self.digest_size) self.assertEqual(len(sha3.hexdigest()), self.digest_size * 2) self.assertRaises(AttributeError, setattr, sha3, "digest", 3) self.assertRaises(AttributeError, setattr, sha3, "name", "egg") self.new(b"data") self.new(string=b"data") self.assertRaises(TypeError, self.new, None) self.assertRaises(TypeError, sha3.update, None) self.assertRaises(TypeError, self.new, asunicode("text")) self.assertRaises(TypeError, sha3.update, asunicode("text")) sha3type = type(sha3) self.assertEqual(sha3type.__name__, "SHA3") self.assertEqual(sha3type.__module__, "_sha3") self.assertRaises(TypeError, sha3type) self.assertRaises(TypeError, type, sha3type, "subclass", {})