mcs_send_connect_response()
{
STREAM s;
+ int i;
- s = iso_init(80); // FIXME
+ s = iso_init(92);
ber_out_header(s, MCS_CONNECT_RESPONSE, 80);
ber_out_header(s, BER_TAG_RESULT, 1);
mcs_out_domain_params(s, 34, 2, 0, 0xffff); // dumdidum?
- ber_out_header(s, BER_TAG_OCTET_STRING, 28);
+ ber_out_header(s, BER_TAG_OCTET_STRING, 40);
out_uint8s(s, 21); // ick
out_uint8(s, 0);
- // server info -- we claim to support RDP4
+ // server info -- we claim to support RDP1
out_uint16_le(s, SEC_TAG_SRV_INFO);
out_uint16_le(s, 6); // length
out_uint16_le(s, 1);
- // aiee, no crypto info yet! :-)
+ // crypto info
+ out_uint16_le(s, SEC_TAG_SRV_CRYPT);
+ out_uint16_le(s, 12); // length
+ out_uint32_le(s, 1); // 40-bit
+ out_uint32_le(s, 0); // no encryption
s_mark_end(s);
printf("LEN: %u\n", s->p - s->iso_hdr);
/* rdp.c */
STREAM rdp_recv(uint8 * type);
void rdp_out_unistr(STREAM s, char *string, int len);
-void rdp_send_input(uint32 time, uint16 message_type, uint16 device_flags, uint16 param1,
- uint16 param2);
+void rdp_recv_input(STREAM s, uint32 *time, uint16 *message_type, uint16 *device_flags, uint16 *param1, uint16 *param2);
void process_colour_pointer_pdu(STREAM s);
void process_cached_pointer_pdu(STREAM s);
void process_system_pointer_pdu(STREAM s);
rdp_send_data(s, RDP_DATA_PDU_SYNCHRONISE);
}
-/* Send a single input event */
+/* Receive a single input event */
void
-rdp_send_input(uint32 time, uint16 message_type, uint16 device_flags, uint16 param1, uint16 param2)
+rdp_recv_input(STREAM s, uint32 *time, uint16 *message_type, uint16 *device_flags, uint16 *param1, uint16 *param2)
{
- STREAM s;
-
- s = rdp_init_data(16);
-
- out_uint16_le(s, 1); /* number of events */
- out_uint16(s, 0); /* pad */
-
- out_uint32_le(s, time);
- out_uint16_le(s, message_type);
- out_uint16_le(s, device_flags);
- out_uint16_le(s, param1);
- out_uint16_le(s, param2);
-
- s_mark_end(s);
- rdp_send_data(s, RDP_DATA_PDU_INPUT);
+ in_uint32_le(s, time);
+ in_uint16_le(s, message_type);
+ in_uint16_le(s, device_flags);
+ in_uint16_le(s, param1);
+ in_uint16_le(s, param2);
}
/* Disconnect from the RDP layer */