def test_parse(self): parser = Parser(bytearray(b'\x02\xab\xcd')) ext = RenegotiationInfoExtension() ext.parse(parser) self.assertEqual(bytearray(b'\xab\xcd'), ext.renegotiated_connection)
def test_write(self): ext = RenegotiationInfoExtension() self.assertEqual(ext.write(), bytearray( b'\xff\x01' + # extension type b'\x00\x00' # overall extension length ))
def test_write(self): ext = RenegotiationInfoExtension() self.assertEqual( ext.write(), bytearray(b'\xff\x01' + # extension type b'\x00\x00' # overall extension length ))
def test_write_with_data(self): ext = RenegotiationInfoExtension() ext.create(bytearray(b'\xab\xcd')) self.assertEqual(ext.write(), bytearray( b'\xff\x01' + # extension type b'\x00\x03' + # overall extension length b'\x02' + # payload length b'\xab\xcd' # payload ))
def test_write_with_data(self): ext = RenegotiationInfoExtension() ext.create(bytearray(b'\xab\xcd')) self.assertEqual( ext.write(), bytearray(b'\xff\x01' + # extension type b'\x00\x03' + # overall extension length b'\x02' + # payload length b'\xab\xcd' # payload ))
def test_write_with_data(self): ext = RenegotiationInfoExtension() ext.create(bytearray(b"\xab\xcd")) self.assertEqual( ext.write(), bytearray( b"\xff\x01" + b"\x00\x03" # extension type + b"\x02" # overall extension length + b"\xab\xcd" # payload length # payload ), )
def test_process_with_incorrect_cipher(self): exp = ExpectServerHello(cipher=5) state = ConnectionState() state.msg_sock = mock.MagicMock() ext = RenegotiationInfoExtension().create() msg = ServerHello().create(version=(3, 3), random=bytearray(32), session_id=bytearray(0), cipher_suite=4) self.assertTrue(exp.is_match(msg)) with self.assertRaises(AssertionError): exp.process(state, msg)
def test_process_with_unexpected_extensions(self): exp = ExpectServerHello( extensions={ExtensionType.renegotiation_info: None}) state = ConnectionState() state.msg_sock = mock.MagicMock() exts = [] exts.append(RenegotiationInfoExtension().create()) exts.append(SNIExtension().create()) msg = ServerHello().create(version=(3, 3), random=bytearray(32), session_id=bytearray(0), cipher_suite=4, extensions=exts) self.assertTrue(exp.is_match(msg)) with self.assertRaises(AssertionError): exp.process(state, msg)
def test_generate_extensions_with_renego_info_default_generator(self): state = ConnectionState() state.client_verify_data = bytearray(b'\xab\xcd') chg = ClientHelloGenerator( extensions={constants.ExtensionType.renegotiation_info: None}) return_val = mock.MagicMock() return_val.write = mock.MagicMock(return_value=bytearray(10)) with mock.patch.object(messages.ClientHello, 'create', return_value=return_val) as mock_method: ch = chg.generate(state) self.assertEqual(ch, return_val) ext = RenegotiationInfoExtension().create(bytearray(b'\xab\xcd')) mock_method.assert_called_once_with((3, 3), bytearray(32), bytearray(0), [], extensions=[ext])
def test_process_with_extensions(self): extension_process = mock.MagicMock() exp = ExpectServerHello( extensions={ExtensionType.renegotiation_info: extension_process}) state = ConnectionState() state.msg_sock = mock.MagicMock() ext = RenegotiationInfoExtension().create() msg = ServerHello().create(version=(3, 3), random=bytearray(32), session_id=bytearray(0), cipher_suite=4, extensions=[ext]) self.assertTrue(exp.is_match(msg)) exp.process(state, msg) extension_process.assert_called_once_with(state, ext)
def test___init__(self): ext = RenegotiationInfoExtension() self.assertIsNotNone(ext)