def test_with_too_little_data(self): key = compatHMAC(bytearray(20)) seqnum_bytes = bytearray(16) content_type = 0x14 version = (3, 1) mac = hashlib.sha1 data = bytearray(mac().digest_size) h = hmac.new(key, digestmod=mac) h.block_size = mac().block_size # python2 workaround self.assertFalse(ct_check_cbc_mac_and_pad(data, h, seqnum_bytes, content_type, version))
def test_with_SHA384(self): key = compatHMAC(bytearray(20)) seqnum_bytes = bytearray(16) content_type = 0x14 version = (3, 3) application_data = bytearray(b'\x01'*10) mac = hashlib.sha384 data = self.data_prepare(application_data, seqnum_bytes, content_type, version, mac, key) padding = bytearray(b'\x0a'*11) data += padding h = hmac.new(key, digestmod=mac) h.block_size = mac().block_size # python2 workaround self.assertTrue(ct_check_cbc_mac_and_pad(data, h, seqnum_bytes, content_type, version))
def test_with_pad_longer_than_data_in_SSLv3(self): key = compatHMAC(bytearray(20)) seqnum_bytes = bytearray(16) content_type = 0x14 version = (3, 0) application_data = bytearray(b'\x01') mac = hashlib.sha1 data = self.data_prepare(application_data, seqnum_bytes, content_type, version, mac, key) padding = bytearray([len(application_data) + mac().digest_size + 1]) data += padding h = hmac.new(key, digestmod=mac) h.block_size = mac().block_size # python2 workaround self.assertFalse(ct_check_cbc_mac_and_pad(data, h, seqnum_bytes, content_type, version))
def test_with_invalid_random_hash(self, i): key = compatHMAC(getRandomBytes(20)) seqnum_bytes = bytearray(16) content_type = 0x15 version = (3, 3) application_data = getRandomBytes(63) mac = hashlib.sha1 data = self.data_prepare(application_data, seqnum_bytes, content_type, version, mac, key) data[-i] ^= 0xff padding = bytearray(b'\x00') data += padding h = hmac.new(key, digestmod=mac) h.block_size = mac().block_size self.assertFalse(ct_check_cbc_mac_and_pad(data, h, seqnum_bytes, content_type, version))
def test_with_invalid_hash(self): key = compatHMAC(bytearray(20)) seqnum_bytes = bytearray(16) content_type = 0x14 version = (3, 1) application_data = bytearray(b'\x01'*1024) mac = hashlib.sha1 data = self.data_prepare(application_data, seqnum_bytes, content_type, version, mac, key) data[-1] ^= 0xff padding = bytearray(b'\xff'*256) data += padding h = hmac.new(key, digestmod=mac) h.block_size = mac().block_size # python2 workaround self.assertFalse(ct_check_cbc_mac_and_pad(data, h, seqnum_bytes, content_type, version))