libfreerdp-core: cleanup WIP TSG code
This commit is contained in:
parent
cee2fcc6f0
commit
a51b80e01f
@ -104,7 +104,6 @@ if(WITH_MONOLITHIC_BUILD)
|
|||||||
else()
|
else()
|
||||||
set(FREERDP_CORE_LIBS
|
set(FREERDP_CORE_LIBS
|
||||||
winpr-utils
|
winpr-utils
|
||||||
winpr-rpc
|
|
||||||
winpr-sspi)
|
winpr-sspi)
|
||||||
|
|
||||||
if(NOT WIN32)
|
if(NOT WIN32)
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <winpr/crt.h>
|
||||||
#include <openssl/rand.h>
|
#include <openssl/rand.h>
|
||||||
|
|
||||||
#include "http.h"
|
#include "http.h"
|
||||||
@ -34,7 +35,6 @@
|
|||||||
|
|
||||||
boolean ntlm_client_init(rdpNtlm* ntlm, boolean confidentiality, char* user, char* domain, char* password)
|
boolean ntlm_client_init(rdpNtlm* ntlm, boolean confidentiality, char* user, char* domain, char* password)
|
||||||
{
|
{
|
||||||
size_t size;
|
|
||||||
SECURITY_STATUS status;
|
SECURITY_STATUS status;
|
||||||
|
|
||||||
sspi_GlobalInit();
|
sspi_GlobalInit();
|
||||||
@ -60,24 +60,7 @@ boolean ntlm_client_init(rdpNtlm* ntlm, boolean confidentiality, char* user, cha
|
|||||||
ntlm->table = InitSecurityInterface();
|
ntlm->table = InitSecurityInterface();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ntlm->identity.Flags = SEC_WINNT_AUTH_IDENTITY_UNICODE;
|
sspi_SetAuthIdentity(&(ntlm->identity), user, domain, password);
|
||||||
|
|
||||||
ntlm->identity.User = (uint16*) freerdp_uniconv_out(ntlm->uniconv, user, &size);
|
|
||||||
ntlm->identity.UserLength = (uint32) size;
|
|
||||||
|
|
||||||
if (domain)
|
|
||||||
{
|
|
||||||
ntlm->identity.Domain = (uint16*) freerdp_uniconv_out(ntlm->uniconv, domain, &size);
|
|
||||||
ntlm->identity.DomainLength = (uint32) size;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ntlm->identity.Domain = (uint16*) NULL;
|
|
||||||
ntlm->identity.DomainLength = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
ntlm->identity.Password = (uint16*) freerdp_uniconv_out(ntlm->uniconv, (char*) password, &size);
|
|
||||||
ntlm->identity.PasswordLength = (uint32) size;
|
|
||||||
|
|
||||||
status = ntlm->table->QuerySecurityPackageInfo(NTLMSP_NAME, &ntlm->pPackageInfo);
|
status = ntlm->table->QuerySecurityPackageInfo(NTLMSP_NAME, &ntlm->pPackageInfo);
|
||||||
|
|
||||||
@ -100,9 +83,9 @@ boolean ntlm_client_init(rdpNtlm* ntlm, boolean confidentiality, char* user, cha
|
|||||||
|
|
||||||
ntlm->haveContext = false;
|
ntlm->haveContext = false;
|
||||||
ntlm->haveInputBuffer = false;
|
ntlm->haveInputBuffer = false;
|
||||||
memset(&ntlm->inputBuffer, 0, sizeof(SecBuffer));
|
ZeroMemory(&ntlm->inputBuffer, sizeof(SecBuffer));
|
||||||
memset(&ntlm->outputBuffer, 0, sizeof(SecBuffer));
|
ZeroMemory(&ntlm->outputBuffer, sizeof(SecBuffer));
|
||||||
memset(&ntlm->ContextSizes, 0, sizeof(SecPkgContext_Sizes));
|
ZeroMemory(&ntlm->ContextSizes, sizeof(SecPkgContext_Sizes));
|
||||||
|
|
||||||
ntlm->fContextReq = ISC_REQ_REPLAY_DETECT | ISC_REQ_SEQUENCE_DETECT | ISC_REQ_DELEGATE;
|
ntlm->fContextReq = ISC_REQ_REPLAY_DETECT | ISC_REQ_SEQUENCE_DETECT | ISC_REQ_DELEGATE;
|
||||||
|
|
||||||
@ -512,8 +495,10 @@ int rpc_recv_bind_ack_pdu(rdpRpc* rpc)
|
|||||||
int pdu_length = 0x8FFF;
|
int pdu_length = 0x8FFF;
|
||||||
|
|
||||||
pdu = xmalloc(pdu_length);
|
pdu = xmalloc(pdu_length);
|
||||||
|
|
||||||
if (pdu == NULL)
|
if (pdu == NULL)
|
||||||
return -1 ;
|
return -1;
|
||||||
|
|
||||||
status = rpc_out_read(rpc, pdu, pdu_length);
|
status = rpc_out_read(rpc, pdu, pdu_length);
|
||||||
|
|
||||||
if (status > 0)
|
if (status > 0)
|
||||||
@ -525,11 +510,13 @@ int rpc_recv_bind_ack_pdu(rdpRpc* rpc)
|
|||||||
stream_free(s);
|
stream_free(s);
|
||||||
|
|
||||||
auth_data = xmalloc(header.auth_length);
|
auth_data = xmalloc(header.auth_length);
|
||||||
|
|
||||||
if (auth_data == NULL)
|
if (auth_data == NULL)
|
||||||
{
|
{
|
||||||
xfree(pdu) ;
|
xfree(pdu);
|
||||||
return -1 ;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
p = (pdu + (header.frag_length - header.auth_length));
|
p = (pdu + (header.frag_length - header.auth_length));
|
||||||
memcpy(auth_data, p, header.auth_length);
|
memcpy(auth_data, p, header.auth_length);
|
||||||
|
|
||||||
@ -610,10 +597,11 @@ int rpc_out_read(rdpRpc* rpc, uint8* data, int length)
|
|||||||
rts_send_flow_control_ack_pdu(rpc); /* Send FlowControlAck every time AvailableWindow reaches the half */
|
rts_send_flow_control_ack_pdu(rpc); /* Send FlowControlAck every time AvailableWindow reaches the half */
|
||||||
|
|
||||||
pdu = xmalloc(0xFFFF);
|
pdu = xmalloc(0xFFFF);
|
||||||
|
|
||||||
if (pdu == NULL)
|
if (pdu == NULL)
|
||||||
{
|
{
|
||||||
printf("rpc_out_read error: memory allocation failed") ;
|
printf("rpc_out_read error: memory allocation failed") ;
|
||||||
return -1 ;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
status = tls_read(rpc->tls_out, pdu, 16); /* read first 16 bytes to get RPC PDU Header */
|
status = tls_read(rpc->tls_out, pdu, 16); /* read first 16 bytes to get RPC PDU Header */
|
||||||
@ -808,7 +796,7 @@ int rpc_read(rdpRpc* rpc, uint8* data, int length)
|
|||||||
if (rpc->read_buffer_len > (uint32) length)
|
if (rpc->read_buffer_len > (uint32) length)
|
||||||
{
|
{
|
||||||
printf("rpc_read error: receiving buffer is not large enough\n");
|
printf("rpc_read error: receiving buffer is not large enough\n");
|
||||||
xfree(rpc_data) ;
|
xfree(rpc_data);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -28,6 +28,7 @@ typedef struct rdp_tsg rdpTsg;
|
|||||||
|
|
||||||
#include <winpr/rpc.h>
|
#include <winpr/rpc.h>
|
||||||
#include <winpr/winpr.h>
|
#include <winpr/winpr.h>
|
||||||
|
#include <winpr/wtypes.h>
|
||||||
|
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <freerdp/types.h>
|
#include <freerdp/types.h>
|
||||||
@ -238,28 +239,6 @@ typedef struct _TSG_PACKET
|
|||||||
TSG_PACKET_TYPE_UNION tsgPacket;
|
TSG_PACKET_TYPE_UNION tsgPacket;
|
||||||
} TSG_PACKET, *PTSG_PACKET;
|
} TSG_PACKET, *PTSG_PACKET;
|
||||||
|
|
||||||
void Opnum0NotUsedOnWire(handle_t IDL_handle);
|
|
||||||
|
|
||||||
HRESULT TsProxyCreateTunnel(PTSG_PACKET tsgPacket, PTSG_PACKET* tsgPacketResponse,
|
|
||||||
PTUNNEL_CONTEXT_HANDLE_SERIALIZE* tunnelContext, unsigned long* tunnelId);
|
|
||||||
|
|
||||||
HRESULT TsProxyAuthorizeTunnel(PTUNNEL_CONTEXT_HANDLE_NOSERIALIZE tunnelContext,
|
|
||||||
PTSG_PACKET tsgPacket, PTSG_PACKET* tsgPacketResponse);
|
|
||||||
|
|
||||||
HRESULT TsProxyMakeTunnelCall(PTUNNEL_CONTEXT_HANDLE_NOSERIALIZE tunnelContext,
|
|
||||||
unsigned long procId, PTSG_PACKET tsgPacket, PTSG_PACKET* tsgPacketResponse);
|
|
||||||
|
|
||||||
HRESULT TsProxyCreateChannel(PTUNNEL_CONTEXT_HANDLE_NOSERIALIZE tunnelContext,
|
|
||||||
PTSENDPOINTINFO tsEndPointInfo, PCHANNEL_CONTEXT_HANDLE_SERIALIZE* channelContext, unsigned long* channelId);
|
|
||||||
|
|
||||||
void Opnum5NotUsedOnWire(handle_t IDL_handle);
|
|
||||||
|
|
||||||
HRESULT TsProxyCloseChannel(PCHANNEL_CONTEXT_HANDLE_NOSERIALIZE* context);
|
|
||||||
|
|
||||||
HRESULT TsProxyCloseTunnel(PTUNNEL_CONTEXT_HANDLE_SERIALIZE* context);
|
|
||||||
|
|
||||||
DWORD TsProxySetupReceivePipe(handle_t IDL_handle, byte pRpcMessage[]);
|
|
||||||
|
|
||||||
DWORD TsProxySendToServer(handle_t IDL_handle, byte pRpcMessage[], uint32 count, uint32* lengths);
|
DWORD TsProxySendToServer(handle_t IDL_handle, byte pRpcMessage[], uint32 count, uint32* lengths);
|
||||||
|
|
||||||
boolean tsg_connect(rdpTsg* tsg, const char* hostname, uint16 port);
|
boolean tsg_connect(rdpTsg* tsg, const char* hostname, uint16 port);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user