summaryrefslogtreecommitdiffstats
path: root/libxrdp
diff options
context:
space:
mode:
authorspeidy <speidy@gmail.com>2014-07-21 07:00:12 +0300
committerspeidy <speidy@gmail.com>2014-07-21 07:00:12 +0300
commit1acdc3085eb260c166db7d575f6dfcb8a9cc2e72 (patch)
treec562c1e234811692bd76fb343073323c876ca02f /libxrdp
parent7ab1d887aecf7883b1254cd97ecfee02de45b74a (diff)
downloadxrdp-proprietary-1acdc3085eb260c166db7d575f6dfcb8a9cc2e72.tar.gz
xrdp-proprietary-1acdc3085eb260c166db7d575f6dfcb8a9cc2e72.zip
libxrdp: work on TLS mode, temporary changes
Diffstat (limited to 'libxrdp')
-rw-r--r--libxrdp/xrdp_mcs.c4
-rw-r--r--libxrdp/xrdp_sec.c27
2 files changed, 16 insertions, 15 deletions
diff --git a/libxrdp/xrdp_mcs.c b/libxrdp/xrdp_mcs.c
index 13d190d2..fd8fe3fb 100644
--- a/libxrdp/xrdp_mcs.c
+++ b/libxrdp/xrdp_mcs.c
@@ -630,7 +630,6 @@ static int APP_CC
xrdp_mcs_ber_out_header(struct xrdp_mcs *self, struct stream *s,
int tag_val, int len)
{
- g_writeln("tag_val > 0xff ? %d", tag_val > 0xff);
if (tag_val > 0xff)
{
out_uint16_be(s, tag_val);
@@ -640,7 +639,6 @@ xrdp_mcs_ber_out_header(struct xrdp_mcs *self, struct stream *s,
out_uint8(s, tag_val);
}
- g_writeln("len >= 0x80 ? %d", len >= 0x80);
if (len >= 0x80)
{
out_uint8(s, 0x82);
@@ -721,6 +719,7 @@ xrdp_mcs_send_connect_response(struct xrdp_mcs *self)
make_stream(s);
init_stream(s, 8192);
data_len = (int) (self->server_mcs_data->end - self->server_mcs_data->data);
+ g_writeln("data len = %d , +36= %d", data_len, data_len+36);
xrdp_iso_init(self->iso_layer, s);
//TODO: 36 - tls , 38 - rdp - we should calculate that
xrdp_mcs_ber_out_header(self, s, MCS_CONNECT_RESPONSE, data_len + 36);
@@ -734,6 +733,7 @@ xrdp_mcs_send_connect_response(struct xrdp_mcs *self)
out_uint8a(s, self->server_mcs_data->data, data_len);
s_mark_end(s);
+ g_hexdump(s->data, 150);
if (xrdp_iso_send(self->iso_layer, s) != 0)
{
free_stream(s);
diff --git a/libxrdp/xrdp_sec.c b/libxrdp/xrdp_sec.c
index ef1b94f9..76fc3ae2 100644
--- a/libxrdp/xrdp_sec.c
+++ b/libxrdp/xrdp_sec.c
@@ -277,8 +277,8 @@ xrdp_sec_create(struct xrdp_rdp *owner, struct trans *trans, int crypt_level,
self->fastpath_layer = xrdp_fastpath_create(self, trans);
self->chan_layer = xrdp_channel_create(self, self->mcs_layer);
//TODO: add cert to config
- self->tls = xrdp_tls_create(trans, "/opt/xrdpdev/etc/xrdp/pkey.pem",
- "/opt/xrdpdev/etc/xrdp/cert.pem");
+ self->tls = xrdp_tls_create(trans, "/opt/xrdpinstall/etc/xrdp/pkey.pem",
+ "/opt/xrdpinstall/etc/xrdp/cert.pem");
DEBUG((" out xrdp_sec_create"));
return self;
}
@@ -329,7 +329,7 @@ xrdp_sec_init(struct xrdp_sec *self, struct stream *s)
}
else
{
- s_push_layer(s, sec_hdr, 4);
+// s_push_layer(s, sec_hdr, 4);
}
return 0;
@@ -1048,6 +1048,7 @@ xrdp_sec_recv(struct xrdp_sec *self, struct stream *s, int *chan)
}
in_uint32_le(s, flags);
DEBUG((" in xrdp_sec_recv flags $%x", flags));
+ g_writeln("userdata shareheaedr flags = %d", flags);
if (flags & SEC_ENCRYPT) /* 0x08 */
{
@@ -1257,7 +1258,7 @@ xrdp_sec_send(struct xrdp_sec *self, struct stream *s, int chan)
}
else
{
- out_uint32_le(s, 0);
+// out_uint32_le(s, 0);
}
if (xrdp_mcs_send(self->mcs_layer, s, chan) != 0)
@@ -1835,11 +1836,11 @@ xrdp_sec_out_mcs_data(struct xrdp_sec *self)
num_channels_even = num_channels + (num_channels & 1);
s = &(self->server_mcs_data);
init_stream(s, 8192);
- out_uint16_be(s, 5);
+ out_uint16_be(s, 5); /* AsnBerObjectIdentifier */
out_uint16_be(s, 0x14);
out_uint8(s, 0x7c);
- out_uint16_be(s, 1);
- out_uint8(s, 0x2a);
+ out_uint16_be(s, 1); /* -- */
+ out_uint8(s, 0x2a); /* ConnectPDULen */
out_uint8(s, 0x14);
out_uint8(s, 0x76);
out_uint8(s, 0x0a);
@@ -1854,7 +1855,7 @@ xrdp_sec_out_mcs_data(struct xrdp_sec *self)
out_uint8(s, 0x6e); /* n */
/* GCC Response Total Length - 2 bytes , set later */
gcc_size_ptr = s->p; /* RDPGCCUserDataResponseLength */
- out_uint8s(s, 2);
+ out_uint8(s, 0);
ud_ptr = s->p; /* User Data */
out_uint16_le(s, SEC_TAG_SRV_INFO);
@@ -1873,7 +1874,7 @@ xrdp_sec_out_mcs_data(struct xrdp_sec *self)
if (self->mcs_layer->iso_layer->rdpNegData)
{
/* ReqeustedProtocol */
- out_uint32_le(s, self->mcs_layer->iso_layer->selectedProtocol);
+ out_uint32_le(s, self->mcs_layer->iso_layer->requestedProtocol);
}
out_uint16_le(s, SEC_TAG_SRV_CHANNELS);
out_uint16_le(s, 8 + (num_channels_even * 2)); /* len */
@@ -1960,7 +1961,7 @@ xrdp_sec_out_mcs_data(struct xrdp_sec *self)
out_uint16_le(s, 12); /* len is 12 */
out_uint32_le(s, self->crypt_method);
out_uint32_le(s, self->crypt_level);
- }
+ }
else
{
LLOGLN(0, ("xrdp_sec_out_mcs_data: error"));
@@ -1968,9 +1969,9 @@ xrdp_sec_out_mcs_data(struct xrdp_sec *self)
/* end certificate */
s_mark_end(s);
- gcc_size = (int)(s->end - ud_ptr) | 0x8000;
- gcc_size_ptr[0] = gcc_size >> 8;
- gcc_size_ptr[1] = gcc_size;
+ gcc_size = (int)(s->end - ud_ptr);// | 0x8000;
+ gcc_size_ptr[0] = gcc_size;// >> 8;
+ //gcc_size_ptr[1] = gcc_size;
return 0;
}