mirror of
https://github.com/morgan9e/FreeRDP
synced 2026-04-15 00:44:19 +09:00
windows: start fixing windows compilation
This commit is contained in:
10
.gitignore
vendored
10
.gitignore
vendored
@@ -20,6 +20,16 @@ docs/api
|
|||||||
# Mac OS X
|
# Mac OS X
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|
||||||
|
# Windows
|
||||||
|
*.vcxproj
|
||||||
|
*.vcxproj.*
|
||||||
|
*.sdf
|
||||||
|
*.sln
|
||||||
|
*.suo
|
||||||
|
*.opensdf
|
||||||
|
ipch
|
||||||
|
Debug
|
||||||
|
|
||||||
# Binaries
|
# Binaries
|
||||||
*.so
|
*.so
|
||||||
*.so.*
|
*.so.*
|
||||||
|
|||||||
@@ -67,9 +67,12 @@ check_include_files(unistd.h HAVE_UNISTD_H)
|
|||||||
|
|
||||||
# Libraries that we have a hard dependency on
|
# Libraries that we have a hard dependency on
|
||||||
find_package(OpenSSL REQUIRED)
|
find_package(OpenSSL REQUIRED)
|
||||||
find_package(ZLIB REQUIRED)
|
|
||||||
find_package(ALSA)
|
if(!WINDOWS)
|
||||||
find_package(PulseAudio)
|
find_package(ZLIB REQUIRED)
|
||||||
|
find_package(ALSA)
|
||||||
|
find_package(PulseAudio)
|
||||||
|
endif()
|
||||||
|
|
||||||
# Endian
|
# Endian
|
||||||
test_big_endian(BIG_ENDIAN)
|
test_big_endian(BIG_ENDIAN)
|
||||||
|
|||||||
@@ -77,6 +77,7 @@
|
|||||||
#define SC_DEFAULT 0xF160
|
#define SC_DEFAULT 0xF160
|
||||||
|
|
||||||
/* Client Notify Event PDU */
|
/* Client Notify Event PDU */
|
||||||
|
#ifndef _WIN32
|
||||||
#define WM_LBUTTONDOWN 0x00000201
|
#define WM_LBUTTONDOWN 0x00000201
|
||||||
#define WM_LBUTTONUP 0x00000202
|
#define WM_LBUTTONUP 0x00000202
|
||||||
#define WM_RBUTTONDOWN 0x00000204
|
#define WM_RBUTTONDOWN 0x00000204
|
||||||
@@ -91,12 +92,13 @@
|
|||||||
#define NIN_BALLOONHIDE 0x00000403
|
#define NIN_BALLOONHIDE 0x00000403
|
||||||
#define NIN_BALLOONTIMEOUT 0x00000404
|
#define NIN_BALLOONTIMEOUT 0x00000404
|
||||||
#define NIN_BALLOONUSERCLICK 0x00000405
|
#define NIN_BALLOONUSERCLICK 0x00000405
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Client Information PDU */
|
/* Client Information PDU */
|
||||||
#define RAIL_CLIENTSTATUS_ALLOWLOCALMOVESIZE 0x00000001
|
#define RAIL_CLIENTSTATUS_ALLOWLOCALMOVESIZE 0x00000001
|
||||||
#define RAIL_CLIENTSTATUS_AUTORECONNECT 0x00000002
|
#define RAIL_CLIENTSTATUS_AUTORECONNECT 0x00000002
|
||||||
|
|
||||||
/*HIGHCONTRAST flags values */
|
/* HIGHCONTRAST flags values */
|
||||||
#define HCF_AVAILABLE 0x00000002
|
#define HCF_AVAILABLE 0x00000002
|
||||||
#define HCF_CONFIRMHOTKEY 0x00000008
|
#define HCF_CONFIRMHOTKEY 0x00000008
|
||||||
#define HCF_HIGHCONTRASTON 0x00000001
|
#define HCF_HIGHCONTRASTON 0x00000001
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ typedef struct
|
|||||||
} SYSTEM_TIME;
|
} SYSTEM_TIME;
|
||||||
|
|
||||||
/* TIME_ZONE_INFORMATION */
|
/* TIME_ZONE_INFORMATION */
|
||||||
typedef struct
|
struct _TIME_ZONE_INFO
|
||||||
{
|
{
|
||||||
uint32 bias;
|
uint32 bias;
|
||||||
char standardName[32];
|
char standardName[32];
|
||||||
@@ -99,7 +99,8 @@ typedef struct
|
|||||||
char daylightName[32];
|
char daylightName[32];
|
||||||
SYSTEM_TIME daylightDate;
|
SYSTEM_TIME daylightDate;
|
||||||
uint32 daylightBias;
|
uint32 daylightBias;
|
||||||
} TIME_ZONE_INFORMATION;
|
};
|
||||||
|
typedef struct _TIME_ZONE_INFO TIME_ZONE_INFO;
|
||||||
|
|
||||||
/* ARC_CS_PRIVATE_PACKET */
|
/* ARC_CS_PRIVATE_PACKET */
|
||||||
typedef struct
|
typedef struct
|
||||||
@@ -171,8 +172,8 @@ struct rdp_settings
|
|||||||
uint32 encryption_method;
|
uint32 encryption_method;
|
||||||
uint32 encryption_level;
|
uint32 encryption_level;
|
||||||
|
|
||||||
BLOB server_random;
|
rdpBlob server_random;
|
||||||
BLOB server_certificate;
|
rdpBlob server_certificate;
|
||||||
|
|
||||||
boolean console_audio;
|
boolean console_audio;
|
||||||
boolean console_session;
|
boolean console_session;
|
||||||
@@ -205,7 +206,7 @@ struct rdp_settings
|
|||||||
boolean ipv6;
|
boolean ipv6;
|
||||||
char* ip_address;
|
char* ip_address;
|
||||||
char* client_dir;
|
char* client_dir;
|
||||||
TIME_ZONE_INFORMATION client_time_zone;
|
TIME_ZONE_INFO client_time_zone;
|
||||||
|
|
||||||
boolean auto_reconnection;
|
boolean auto_reconnection;
|
||||||
ARC_CS_PRIVATE_PACKET client_auto_reconnect_cookie;
|
ARC_CS_PRIVATE_PACKET client_auto_reconnect_cookie;
|
||||||
|
|||||||
@@ -21,6 +21,10 @@
|
|||||||
#ifndef __RDP_TYPES_H
|
#ifndef __RDP_TYPES_H
|
||||||
#define __RDP_TYPES_H
|
#define __RDP_TYPES_H
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
#include <WinDef.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Base Types */
|
/* Base Types */
|
||||||
|
|
||||||
typedef unsigned char uint8;
|
typedef unsigned char uint8;
|
||||||
@@ -45,7 +49,11 @@ typedef signed long long sint64;
|
|||||||
#define False (0)
|
#define False (0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef _WIN32
|
||||||
typedef int boolean;
|
typedef int boolean;
|
||||||
|
#else
|
||||||
|
#define boolean BOOLEAN
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef MIN
|
#ifndef MIN
|
||||||
#define MIN(x,y) (((x) < (y)) ? (x) : (y))
|
#define MIN(x,y) (((x) < (y)) ? (x) : (y))
|
||||||
@@ -57,74 +65,75 @@ typedef int boolean;
|
|||||||
|
|
||||||
#include <freerdp/settings.h>
|
#include <freerdp/settings.h>
|
||||||
|
|
||||||
typedef void *FRDP_HBITMAP;
|
typedef void* FRDP_HBITMAP;
|
||||||
typedef void *FRDP_HGLYPH;
|
typedef void* FRDP_HGLYPH;
|
||||||
typedef void *FRDP_HPALETTE;
|
typedef void* FRDP_HPALETTE;
|
||||||
typedef void *FRDP_HCURSOR;
|
typedef void* FRDP_HCURSOR;
|
||||||
|
|
||||||
typedef struct _FRDP_POINT
|
struct _FRDP_POINT
|
||||||
{
|
{
|
||||||
sint16 x, y;
|
sint16 x;
|
||||||
}
|
sint16 y;
|
||||||
FRDP_POINT;
|
};
|
||||||
|
typedef struct _FRDP_POINT FRDP_POINT;
|
||||||
|
|
||||||
typedef struct _FRDP_PALETTEENTRY
|
struct _FRDP_PALETTEENTRY
|
||||||
{
|
{
|
||||||
uint8 red;
|
uint8 red;
|
||||||
uint8 green;
|
uint8 green;
|
||||||
uint8 blue;
|
uint8 blue;
|
||||||
}
|
};
|
||||||
FRDP_PALETTEENTRY;
|
typedef struct _FRDP_PALETTEENTRY FRDP_PALETTEENTRY;
|
||||||
|
|
||||||
typedef struct _FRDP_PALETTE
|
struct _FRDP_PALETTE
|
||||||
{
|
{
|
||||||
uint16 count;
|
uint16 count;
|
||||||
FRDP_PALETTEENTRY *entries;
|
FRDP_PALETTEENTRY* entries;
|
||||||
}
|
};
|
||||||
FRDP_PALETTE;
|
typedef struct _FRDP_PALETTE FRDP_PALETTE;
|
||||||
|
|
||||||
typedef struct _FRDP_PEN
|
struct _FRDP_PEN
|
||||||
{
|
{
|
||||||
uint8 style;
|
uint8 style;
|
||||||
uint8 width;
|
uint8 width;
|
||||||
uint32 color;
|
uint32 color;
|
||||||
}
|
};
|
||||||
FRDP_PEN;
|
typedef struct _FRDP_PEN FRDP_PEN;
|
||||||
|
|
||||||
/* this is what is in the brush cache */
|
/* this is what is in the brush cache */
|
||||||
typedef struct _FRDP_BRUSHDATA
|
struct _FRDP_BRUSHDATA
|
||||||
{
|
{
|
||||||
uint32 color_code;
|
uint32 color_code;
|
||||||
uint32 data_size;
|
uint32 data_size;
|
||||||
uint8 *data;
|
uint8 *data;
|
||||||
}
|
};
|
||||||
FRDP_BRUSHDATA;
|
typedef struct _FRDP_BRUSHDATA FRDP_BRUSHDATA;
|
||||||
|
|
||||||
typedef struct _FRDP_BRUSH
|
struct _FRDP_BRUSH
|
||||||
{
|
{
|
||||||
uint8 xorigin;
|
uint8 xorigin;
|
||||||
uint8 yorigin;
|
uint8 yorigin;
|
||||||
uint8 style;
|
uint8 style;
|
||||||
uint8 pattern[8];
|
uint8 pattern[8];
|
||||||
FRDP_BRUSHDATA *bd;
|
FRDP_BRUSHDATA *bd;
|
||||||
}
|
};
|
||||||
FRDP_BRUSH;
|
typedef struct _FRDP_BRUSH FRDP_BRUSH;
|
||||||
|
|
||||||
typedef struct _FRDP_PLUGIN_DATA
|
struct _FRDP_PLUGIN_DATA
|
||||||
{
|
{
|
||||||
uint16 size;
|
uint16 size;
|
||||||
void* data[4];
|
void* data[4];
|
||||||
}
|
};
|
||||||
FRDP_PLUGIN_DATA;
|
typedef struct _FRDP_PLUGIN_DATA FRDP_PLUGIN_DATA;
|
||||||
|
|
||||||
typedef struct _FRDP_RECT
|
struct _FRDP_RECT
|
||||||
{
|
{
|
||||||
sint16 x;
|
sint16 x;
|
||||||
sint16 y;
|
sint16 y;
|
||||||
sint16 width;
|
sint16 width;
|
||||||
sint16 height;
|
sint16 height;
|
||||||
}
|
};
|
||||||
FRDP_RECT;
|
typedef struct _FRDP_RECT FRDP_RECT;
|
||||||
|
|
||||||
/* Plugin events */
|
/* Plugin events */
|
||||||
typedef struct _FRDP_EVENT FRDP_EVENT;
|
typedef struct _FRDP_EVENT FRDP_EVENT;
|
||||||
@@ -147,6 +156,4 @@ enum FRDP_EVENT_CLASS
|
|||||||
FRDP_EVENT_CLASS_RAIL
|
FRDP_EVENT_CLASS_RAIL
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct rdp_inst rdpInst;
|
|
||||||
|
|
||||||
#endif /* __RDP_TYPES_H */
|
#endif /* __RDP_TYPES_H */
|
||||||
|
|||||||
@@ -803,10 +803,12 @@ typedef struct _SURFACE_BITS_COMMAND SURFACE_BITS_COMMAND;
|
|||||||
#define BMF_24BPP 0x5
|
#define BMF_24BPP 0x5
|
||||||
#define BMF_32BPP 0x6
|
#define BMF_32BPP 0x6
|
||||||
|
|
||||||
|
#ifndef _WIN32
|
||||||
#define BS_SOLID 0x00
|
#define BS_SOLID 0x00
|
||||||
#define BS_NULL 0x01
|
#define BS_NULL 0x01
|
||||||
#define BS_HATCHED 0x02
|
#define BS_HATCHED 0x02
|
||||||
#define BS_PATTERN 0x03
|
#define BS_PATTERN 0x03
|
||||||
|
#endif
|
||||||
|
|
||||||
#define HS_HORIZONTAL 0x00
|
#define HS_HORIZONTAL 0x00
|
||||||
#define HS_VERTICAL 0x01
|
#define HS_VERTICAL 0x01
|
||||||
|
|||||||
@@ -25,9 +25,9 @@ struct rdp_blob
|
|||||||
void* data;
|
void* data;
|
||||||
int length;
|
int length;
|
||||||
};
|
};
|
||||||
typedef struct rdp_blob BLOB;
|
typedef struct rdp_blob rdpBlob;
|
||||||
|
|
||||||
void freerdp_blob_alloc(BLOB* blob, int length);
|
void freerdp_blob_alloc(rdpBlob* blob, int length);
|
||||||
void freerdp_blob_free(BLOB* blob);
|
void freerdp_blob_free(rdpBlob* blob);
|
||||||
|
|
||||||
#endif /* __BLOB_UTILS_H */
|
#endif /* __BLOB_UTILS_H */
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ typedef struct
|
|||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
BLOB modulus;
|
rdpBlob modulus;
|
||||||
uint8 exponent[4];
|
uint8 exponent[4];
|
||||||
} CERT_INFO;
|
} CERT_INFO;
|
||||||
|
|
||||||
|
|||||||
@@ -196,11 +196,11 @@ int credssp_authenticate(rdpCredssp* credssp)
|
|||||||
* @param s
|
* @param s
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void credssp_encrypt_public_key(rdpCredssp* credssp, BLOB* d)
|
void credssp_encrypt_public_key(rdpCredssp* credssp, rdpBlob* d)
|
||||||
{
|
{
|
||||||
uint8 *p;
|
uint8 *p;
|
||||||
uint8 signature[16];
|
uint8 signature[16];
|
||||||
BLOB encrypted_public_key;
|
rdpBlob encrypted_public_key;
|
||||||
NTLMSSP *ntlmssp = credssp->ntlmssp;
|
NTLMSSP *ntlmssp = credssp->ntlmssp;
|
||||||
|
|
||||||
freerdp_blob_alloc(d, credssp->public_key.length + 16);
|
freerdp_blob_alloc(d, credssp->public_key.length + 16);
|
||||||
@@ -234,12 +234,12 @@ void credssp_encrypt_public_key(rdpCredssp* credssp, BLOB* d)
|
|||||||
* @return 1 if verification is successful, 0 otherwise
|
* @return 1 if verification is successful, 0 otherwise
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int credssp_verify_public_key(rdpCredssp* credssp, BLOB* d)
|
int credssp_verify_public_key(rdpCredssp* credssp, rdpBlob* d)
|
||||||
{
|
{
|
||||||
uint8 *p1, *p2;
|
uint8 *p1, *p2;
|
||||||
uint8 *signature;
|
uint8 *signature;
|
||||||
BLOB public_key;
|
rdpBlob public_key;
|
||||||
BLOB encrypted_public_key;
|
rdpBlob encrypted_public_key;
|
||||||
|
|
||||||
signature = d->data;
|
signature = d->data;
|
||||||
encrypted_public_key.data = (void*) (signature + 16);
|
encrypted_public_key.data = (void*) (signature + 16);
|
||||||
@@ -269,11 +269,11 @@ int credssp_verify_public_key(rdpCredssp* credssp, BLOB* d)
|
|||||||
* @param s
|
* @param s
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void credssp_encrypt_ts_credentials(rdpCredssp* credssp, BLOB* d)
|
void credssp_encrypt_ts_credentials(rdpCredssp* credssp, rdpBlob* d)
|
||||||
{
|
{
|
||||||
uint8 *p;
|
uint8 *p;
|
||||||
uint8 signature[16];
|
uint8 signature[16];
|
||||||
BLOB encrypted_ts_credentials;
|
rdpBlob encrypted_ts_credentials;
|
||||||
NTLMSSP *ntlmssp = credssp->ntlmssp;
|
NTLMSSP *ntlmssp = credssp->ntlmssp;
|
||||||
|
|
||||||
freerdp_blob_alloc(d, credssp->ts_credentials.length + 16);
|
freerdp_blob_alloc(d, credssp->ts_credentials.length + 16);
|
||||||
@@ -454,7 +454,7 @@ int credssp_skip_ts_request(int length)
|
|||||||
* @param pubKeyAuth
|
* @param pubKeyAuth
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void credssp_send(rdpCredssp* credssp, BLOB* negoToken, BLOB* authInfo, BLOB* pubKeyAuth)
|
void credssp_send(rdpCredssp* credssp, rdpBlob* negoToken, rdpBlob* authInfo, rdpBlob* pubKeyAuth)
|
||||||
{
|
{
|
||||||
STREAM* s;
|
STREAM* s;
|
||||||
int length;
|
int length;
|
||||||
@@ -517,7 +517,7 @@ void credssp_send(rdpCredssp* credssp, BLOB* negoToken, BLOB* authInfo, BLOB* pu
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int credssp_recv(rdpCredssp* credssp, BLOB* negoToken, BLOB* authInfo, BLOB* pubKeyAuth)
|
int credssp_recv(rdpCredssp* credssp, rdpBlob* negoToken, rdpBlob* authInfo, rdpBlob* pubKeyAuth)
|
||||||
{
|
{
|
||||||
STREAM* s;
|
STREAM* s;
|
||||||
int length;
|
int length;
|
||||||
|
|||||||
@@ -36,12 +36,12 @@ typedef struct rdp_credssp rdpCredssp;
|
|||||||
|
|
||||||
struct rdp_credssp
|
struct rdp_credssp
|
||||||
{
|
{
|
||||||
BLOB negoToken;
|
rdpBlob negoToken;
|
||||||
BLOB pubKeyAuth;
|
rdpBlob pubKeyAuth;
|
||||||
BLOB authInfo;
|
rdpBlob authInfo;
|
||||||
int send_seq_num;
|
int send_seq_num;
|
||||||
BLOB public_key;
|
rdpBlob public_key;
|
||||||
BLOB ts_credentials;
|
rdpBlob ts_credentials;
|
||||||
CryptoRc4 rc4_seal_state;
|
CryptoRc4 rc4_seal_state;
|
||||||
struct _NTLMSSP *ntlmssp;
|
struct _NTLMSSP *ntlmssp;
|
||||||
struct rdp_transport* transport;
|
struct rdp_transport* transport;
|
||||||
@@ -49,12 +49,12 @@ struct rdp_credssp
|
|||||||
|
|
||||||
int credssp_authenticate(rdpCredssp* credssp);
|
int credssp_authenticate(rdpCredssp* credssp);
|
||||||
|
|
||||||
void credssp_send(rdpCredssp* credssp, BLOB* negoToken, BLOB* authInfo, BLOB* pubKeyAuth);
|
void credssp_send(rdpCredssp* credssp, BLOB* negoToken, rdpBlob* authInfo, rdpBlob* pubKeyAuth);
|
||||||
int credssp_recv(rdpCredssp* credssp, BLOB* negoToken, BLOB* authInfo, BLOB* pubKeyAuth);
|
int credssp_recv(rdpCredssp* credssp, rdpBlob* negoToken, rdpBlob* authInfo, rdpBlob* pubKeyAuth);
|
||||||
|
|
||||||
void credssp_encrypt_public_key(rdpCredssp* credssp, BLOB* d);
|
void credssp_encrypt_public_key(rdpCredssp* credssp, rdpBlob* d);
|
||||||
void credssp_encrypt_ts_credentials(rdpCredssp* credssp, BLOB* d);
|
void credssp_encrypt_ts_credentials(rdpCredssp* credssp, rdpBlob* d);
|
||||||
int credssp_verify_public_key(rdpCredssp* credssp, BLOB* d);
|
int credssp_verify_public_key(rdpCredssp* credssp, rdpBlob* d);
|
||||||
void credssp_encode_ts_credentials(rdpCredssp* credssp);
|
void credssp_encode_ts_credentials(rdpCredssp* credssp);
|
||||||
|
|
||||||
void credssp_current_time(uint8* timestamp);
|
void credssp_current_time(uint8* timestamp);
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ boolean crypto_cert_verify(CryptoCert server_cert, CryptoCert cacert)
|
|||||||
return True; /* FIXME: do the actual verification */
|
return True; /* FIXME: do the actual verification */
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean crypto_cert_get_public_key(CryptoCert cert, BLOB* public_key)
|
boolean crypto_cert_get_public_key(CryptoCert cert, rdpBlob* public_key)
|
||||||
{
|
{
|
||||||
uint8* p;
|
uint8* p;
|
||||||
int length;
|
int length;
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ typedef struct crypto_cert_struct* CryptoCert;
|
|||||||
CryptoCert crypto_cert_read(uint8* data, uint32 length);
|
CryptoCert crypto_cert_read(uint8* data, uint32 length);
|
||||||
void crypto_cert_free(CryptoCert cert);
|
void crypto_cert_free(CryptoCert cert);
|
||||||
boolean crypto_cert_verify(CryptoCert server_cert, CryptoCert cacert);
|
boolean crypto_cert_verify(CryptoCert server_cert, CryptoCert cacert);
|
||||||
boolean crypto_cert_get_public_key(CryptoCert cert, BLOB* public_key);
|
boolean crypto_cert_get_public_key(CryptoCert cert, rdpBlob* public_key);
|
||||||
|
|
||||||
void crypto_rsa_encrypt(uint8* input, int length, uint32 key_length, uint8* modulus, uint8* exponent, uint8* output);
|
void crypto_rsa_encrypt(uint8* input, int length, uint32 key_length, uint8* modulus, uint8* exponent, uint8* output);
|
||||||
void crypto_reverse(uint8* data, int length);
|
void crypto_reverse(uint8* data, int length);
|
||||||
|
|||||||
@@ -265,7 +265,7 @@ void license_generate_keys(rdpLicense* license)
|
|||||||
freerdp_hexdump(license->master_secret, MASTER_SECRET_LENGTH);
|
freerdp_hexdump(license->master_secret, MASTER_SECRET_LENGTH);
|
||||||
|
|
||||||
printf("SessionKeyBlob:\n");
|
printf("SessionKeyBlob:\n");
|
||||||
freerdp_hexdump(license->session_key_blob, SESSION_KEY_BLOB_LENGTH);
|
freerdp_hexdump(license->session_key_blob, SESSION_KEY_rdpBlob_LENGTH);
|
||||||
|
|
||||||
printf("MacSaltKey:\n");
|
printf("MacSaltKey:\n");
|
||||||
freerdp_hexdump(license->mac_salt_key, MAC_SALT_KEY_LENGTH);
|
freerdp_hexdump(license->mac_salt_key, MAC_SALT_KEY_LENGTH);
|
||||||
|
|||||||
@@ -215,7 +215,7 @@ void ntlmssp_generate_timestamp(NTLMSSP* ntlmssp)
|
|||||||
* @param signing_key Destination signing key
|
* @param signing_key Destination signing key
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void ntlmssp_generate_signing_key(uint8* exported_session_key, BLOB* sign_magic, uint8* signing_key)
|
void ntlmssp_generate_signing_key(uint8* exported_session_key, rdpBlob* sign_magic, uint8* signing_key)
|
||||||
{
|
{
|
||||||
int length;
|
int length;
|
||||||
uint8* value;
|
uint8* value;
|
||||||
@@ -243,7 +243,7 @@ void ntlmssp_generate_signing_key(uint8* exported_session_key, BLOB* sign_magic,
|
|||||||
|
|
||||||
void ntlmssp_generate_client_signing_key(NTLMSSP* ntlmssp)
|
void ntlmssp_generate_client_signing_key(NTLMSSP* ntlmssp)
|
||||||
{
|
{
|
||||||
BLOB sign_magic;
|
rdpBlob sign_magic;
|
||||||
sign_magic.data = (void*) client_sign_magic;
|
sign_magic.data = (void*) client_sign_magic;
|
||||||
sign_magic.length = sizeof(client_sign_magic);
|
sign_magic.length = sizeof(client_sign_magic);
|
||||||
ntlmssp_generate_signing_key(ntlmssp->exported_session_key, &sign_magic, ntlmssp->client_signing_key);
|
ntlmssp_generate_signing_key(ntlmssp->exported_session_key, &sign_magic, ntlmssp->client_signing_key);
|
||||||
@@ -257,7 +257,7 @@ void ntlmssp_generate_client_signing_key(NTLMSSP* ntlmssp)
|
|||||||
|
|
||||||
void ntlmssp_generate_server_signing_key(NTLMSSP* ntlmssp)
|
void ntlmssp_generate_server_signing_key(NTLMSSP* ntlmssp)
|
||||||
{
|
{
|
||||||
BLOB sign_magic;
|
rdpBlob sign_magic;
|
||||||
sign_magic.data = (void*) server_sign_magic;
|
sign_magic.data = (void*) server_sign_magic;
|
||||||
sign_magic.length = sizeof(server_sign_magic);
|
sign_magic.length = sizeof(server_sign_magic);
|
||||||
ntlmssp_generate_signing_key(ntlmssp->exported_session_key, &sign_magic, ntlmssp->server_signing_key);
|
ntlmssp_generate_signing_key(ntlmssp->exported_session_key, &sign_magic, ntlmssp->server_signing_key);
|
||||||
@@ -271,11 +271,11 @@ void ntlmssp_generate_server_signing_key(NTLMSSP* ntlmssp)
|
|||||||
* @param sealing_key Destination sealing key
|
* @param sealing_key Destination sealing key
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void ntlmssp_generate_sealing_key(uint8* exported_session_key, BLOB* seal_magic, uint8* sealing_key)
|
void ntlmssp_generate_sealing_key(uint8* exported_session_key, rdpBlob* seal_magic, uint8* sealing_key)
|
||||||
{
|
{
|
||||||
uint8* p;
|
uint8* p;
|
||||||
CryptoMd5 md5;
|
CryptoMd5 md5;
|
||||||
BLOB blob;
|
rdpBlob blob;
|
||||||
|
|
||||||
freerdp_blob_alloc(&blob, 16 + seal_magic->length);
|
freerdp_blob_alloc(&blob, 16 + seal_magic->length);
|
||||||
p = (uint8*) blob.data;
|
p = (uint8*) blob.data;
|
||||||
@@ -299,7 +299,7 @@ void ntlmssp_generate_sealing_key(uint8* exported_session_key, BLOB* seal_magic,
|
|||||||
|
|
||||||
void ntlmssp_generate_client_sealing_key(NTLMSSP* ntlmssp)
|
void ntlmssp_generate_client_sealing_key(NTLMSSP* ntlmssp)
|
||||||
{
|
{
|
||||||
BLOB seal_magic;
|
rdpBlob seal_magic;
|
||||||
seal_magic.data = (void*) client_seal_magic;
|
seal_magic.data = (void*) client_seal_magic;
|
||||||
seal_magic.length = sizeof(client_seal_magic);
|
seal_magic.length = sizeof(client_seal_magic);
|
||||||
ntlmssp_generate_signing_key(ntlmssp->exported_session_key, &seal_magic, ntlmssp->client_sealing_key);
|
ntlmssp_generate_signing_key(ntlmssp->exported_session_key, &seal_magic, ntlmssp->client_sealing_key);
|
||||||
@@ -313,7 +313,7 @@ void ntlmssp_generate_client_sealing_key(NTLMSSP* ntlmssp)
|
|||||||
|
|
||||||
void ntlmssp_generate_server_sealing_key(NTLMSSP* ntlmssp)
|
void ntlmssp_generate_server_sealing_key(NTLMSSP* ntlmssp)
|
||||||
{
|
{
|
||||||
BLOB seal_magic;
|
rdpBlob seal_magic;
|
||||||
seal_magic.data = (void*) server_seal_magic;
|
seal_magic.data = (void*) server_seal_magic;
|
||||||
seal_magic.length = sizeof(server_seal_magic);
|
seal_magic.length = sizeof(server_seal_magic);
|
||||||
ntlmssp_generate_signing_key(ntlmssp->exported_session_key, &seal_magic, ntlmssp->server_sealing_key);
|
ntlmssp_generate_signing_key(ntlmssp->exported_session_key, &seal_magic, ntlmssp->server_sealing_key);
|
||||||
@@ -420,7 +420,7 @@ void ntlmssp_compute_lm_hash(char* password, char* hash)
|
|||||||
DES_ecb_encrypt((const_DES_cblock*) lm_magic, (DES_cblock*)&hash[8], &ks, DES_ENCRYPT);
|
DES_ecb_encrypt((const_DES_cblock*) lm_magic, (DES_cblock*)&hash[8], &ks, DES_ENCRYPT);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ntlmssp_compute_ntlm_hash(BLOB* password, char* hash)
|
void ntlmssp_compute_ntlm_hash(rdpBlob* password, char* hash)
|
||||||
{
|
{
|
||||||
/* NTLMv1("password") = 8846F7EAEE8FB117AD06BDD830B7586C */
|
/* NTLMv1("password") = 8846F7EAEE8FB117AD06BDD830B7586C */
|
||||||
|
|
||||||
@@ -438,7 +438,7 @@ void ntlmssp_compute_ntlm_hash(BLOB* password, char* hash)
|
|||||||
void ntlmssp_compute_ntlm_v2_hash(NTLMSSP* ntlmssp, char* hash)
|
void ntlmssp_compute_ntlm_v2_hash(NTLMSSP* ntlmssp, char* hash)
|
||||||
{
|
{
|
||||||
char* p;
|
char* p;
|
||||||
BLOB blob;
|
rdpBlob blob;
|
||||||
char ntlm_hash[16];
|
char ntlm_hash[16];
|
||||||
|
|
||||||
freerdp_blob_alloc(&blob, ntlmssp->username.length + ntlmssp->domain.length);
|
freerdp_blob_alloc(&blob, ntlmssp->username.length + ntlmssp->domain.length);
|
||||||
@@ -522,8 +522,8 @@ void ntlmssp_compute_ntlm_v2_response(NTLMSSP* ntlmssp)
|
|||||||
uint8* blob;
|
uint8* blob;
|
||||||
uint8 ntlm_v2_hash[16];
|
uint8 ntlm_v2_hash[16];
|
||||||
uint8 nt_proof_str[16];
|
uint8 nt_proof_str[16];
|
||||||
BLOB ntlm_v2_temp;
|
rdpBlob ntlm_v2_temp;
|
||||||
BLOB ntlm_v2_temp_chal;
|
rdpBlob ntlm_v2_temp_chal;
|
||||||
|
|
||||||
freerdp_blob_alloc(&ntlm_v2_temp, ntlmssp->target_info.length + 28);
|
freerdp_blob_alloc(&ntlm_v2_temp, ntlmssp->target_info.length + 28);
|
||||||
|
|
||||||
@@ -744,7 +744,7 @@ static void ntlmssp_output_restriction_encoding(NTLMSSP* ntlmssp)
|
|||||||
void ntlmssp_populate_av_pairs(NTLMSSP* ntlmssp)
|
void ntlmssp_populate_av_pairs(NTLMSSP* ntlmssp)
|
||||||
{
|
{
|
||||||
STREAM* s;
|
STREAM* s;
|
||||||
BLOB target_info;
|
rdpBlob target_info;
|
||||||
AV_PAIRS *av_pairs = ntlmssp->av_pairs;
|
AV_PAIRS *av_pairs = ntlmssp->av_pairs;
|
||||||
|
|
||||||
/* MsvAvFlags */
|
/* MsvAvFlags */
|
||||||
@@ -1035,7 +1035,7 @@ void ntlmssp_compute_message_integrity_check(NTLMSSP* ntlmssp)
|
|||||||
* @param[out] signature destination signature
|
* @param[out] signature destination signature
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void ntlmssp_encrypt_message(NTLMSSP* ntlmssp, BLOB* msg, BLOB* encrypted_msg, uint8* signature)
|
void ntlmssp_encrypt_message(NTLMSSP* ntlmssp, rdpBlob* msg, rdpBlob* encrypted_msg, uint8* signature)
|
||||||
{
|
{
|
||||||
HMAC_CTX hmac_ctx;
|
HMAC_CTX hmac_ctx;
|
||||||
uint8 digest[16];
|
uint8 digest[16];
|
||||||
@@ -1079,7 +1079,7 @@ void ntlmssp_encrypt_message(NTLMSSP* ntlmssp, BLOB* msg, BLOB* encrypted_msg, u
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int ntlmssp_decrypt_message(NTLMSSP* ntlmssp, BLOB* encrypted_msg, BLOB* msg, uint8* signature)
|
int ntlmssp_decrypt_message(NTLMSSP* ntlmssp, rdpBlob* encrypted_msg, rdpBlob* msg, uint8* signature)
|
||||||
{
|
{
|
||||||
HMAC_CTX hmac_ctx;
|
HMAC_CTX hmac_ctx;
|
||||||
uint8 digest[16];
|
uint8 digest[16];
|
||||||
|
|||||||
@@ -78,13 +78,13 @@ typedef enum _NTLMSSP_STATE NTLMSSP_STATE;
|
|||||||
struct _NTLMSSP
|
struct _NTLMSSP
|
||||||
{
|
{
|
||||||
NTLMSSP_STATE state;
|
NTLMSSP_STATE state;
|
||||||
BLOB password;
|
rdpBlob password;
|
||||||
BLOB username;
|
rdpBlob username;
|
||||||
BLOB domain;
|
rdpBlob domain;
|
||||||
BLOB workstation;
|
rdpBlob workstation;
|
||||||
BLOB target_info;
|
rdpBlob target_info;
|
||||||
BLOB target_name;
|
rdpBlob target_name;
|
||||||
BLOB spn;
|
rdpBlob spn;
|
||||||
UNICONV *uniconv;
|
UNICONV *uniconv;
|
||||||
uint32 negotiate_flags;
|
uint32 negotiate_flags;
|
||||||
uint8 timestamp[8];
|
uint8 timestamp[8];
|
||||||
@@ -100,11 +100,11 @@ struct _NTLMSSP
|
|||||||
uint8 server_signing_key[16];
|
uint8 server_signing_key[16];
|
||||||
uint8 server_sealing_key[16];
|
uint8 server_sealing_key[16];
|
||||||
uint8 message_integrity_check[16];
|
uint8 message_integrity_check[16];
|
||||||
BLOB nt_challenge_response;
|
rdpBlob nt_challenge_response;
|
||||||
BLOB lm_challenge_response;
|
rdpBlob lm_challenge_response;
|
||||||
BLOB negotiate_message;
|
rdpBlob negotiate_message;
|
||||||
BLOB challenge_message;
|
rdpBlob challenge_message;
|
||||||
BLOB authenticate_message;
|
rdpBlob authenticate_message;
|
||||||
CryptoRc4 send_rc4_seal;
|
CryptoRc4 send_rc4_seal;
|
||||||
CryptoRc4 recv_rc4_seal;
|
CryptoRc4 recv_rc4_seal;
|
||||||
AV_PAIRS *av_pairs;
|
AV_PAIRS *av_pairs;
|
||||||
@@ -132,7 +132,7 @@ void ntlmssp_generate_server_sealing_key(NTLMSSP* ntlmssp);
|
|||||||
void ntlmssp_init_rc4_seal_states(NTLMSSP* ntlmssp);
|
void ntlmssp_init_rc4_seal_states(NTLMSSP* ntlmssp);
|
||||||
|
|
||||||
void ntlmssp_compute_lm_hash(char* password, char* hash);
|
void ntlmssp_compute_lm_hash(char* password, char* hash);
|
||||||
void ntlmssp_compute_ntlm_hash(BLOB* password, char* hash);
|
void ntlmssp_compute_ntlm_hash(rdpBlob* password, char* hash);
|
||||||
void ntlmssp_compute_ntlm_v2_hash(NTLMSSP* ntlmssp, char* hash);
|
void ntlmssp_compute_ntlm_v2_hash(NTLMSSP* ntlmssp, char* hash);
|
||||||
|
|
||||||
void ntlmssp_compute_lm_response(char* password, char* challenge, char* response);
|
void ntlmssp_compute_lm_response(char* password, char* challenge, char* response);
|
||||||
@@ -146,8 +146,8 @@ void ntlmssp_free_av_pairs(NTLMSSP* ntlmssp);
|
|||||||
|
|
||||||
void ntlmssp_compute_message_integrity_check(NTLMSSP* ntlmssp);
|
void ntlmssp_compute_message_integrity_check(NTLMSSP* ntlmssp);
|
||||||
|
|
||||||
void ntlmssp_encrypt_message(NTLMSSP* ntlmssp, BLOB* msg, BLOB* encrypted_msg, uint8* signature);
|
void ntlmssp_encrypt_message(NTLMSSP* ntlmssp, rdpBlob* msg, rdpBlob* encrypted_msg, uint8* signature);
|
||||||
int ntlmssp_decrypt_message(NTLMSSP* ntlmssp, BLOB* encrypted_msg, BLOB* msg, uint8* signature);
|
int ntlmssp_decrypt_message(NTLMSSP* ntlmssp, rdpBlob* encrypted_msg, rdpBlob* msg, uint8* signature);
|
||||||
|
|
||||||
int ntlmssp_recv(NTLMSSP* ntlmssp, STREAM* s);
|
int ntlmssp_recv(NTLMSSP* ntlmssp, STREAM* s);
|
||||||
int ntlmssp_send(NTLMSSP* ntlmssp, STREAM* s);
|
int ntlmssp_send(NTLMSSP* ntlmssp, STREAM* s);
|
||||||
|
|||||||
@@ -27,10 +27,13 @@
|
|||||||
|
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <sys/socket.h>
|
|
||||||
#include <netdb.h>
|
#include <netdb.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
|
||||||
|
#ifndef _WIN32
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "tpkt.h"
|
#include "tpkt.h"
|
||||||
#include "fastpath.h"
|
#include "fastpath.h"
|
||||||
#include "credssp.h"
|
#include "credssp.h"
|
||||||
|
|||||||
@@ -20,7 +20,6 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <inttypes.h>
|
|
||||||
#include <freerdp/rfx/rfx.h>
|
#include <freerdp/rfx/rfx.h>
|
||||||
#include <freerdp/utils/memory.h>
|
#include <freerdp/utils/memory.h>
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
#include "rfx_differential.h"
|
#include "rfx_differential.h"
|
||||||
#include "rfx_quantization.h"
|
#include "rfx_quantization.h"
|
||||||
#include "rfx_dwt.h"
|
#include "rfx_dwt.h"
|
||||||
|
#include "rfx_types.h"
|
||||||
|
|
||||||
#include "rfx_decode.h"
|
#include "rfx_decode.h"
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <freerdp/settings.h>
|
||||||
#include <freerdp/utils/memory.h>
|
#include <freerdp/utils/memory.h>
|
||||||
#include <freerdp/utils/args.h>
|
#include <freerdp/utils/args.h>
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
* @param length memory length
|
* @param length memory length
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void freerdp_blob_alloc(BLOB* blob, int length)
|
void freerdp_blob_alloc(rdpBlob* blob, int length)
|
||||||
{
|
{
|
||||||
blob->data = xmalloc(length);
|
blob->data = xmalloc(length);
|
||||||
blob->length = length;
|
blob->length = length;
|
||||||
@@ -38,7 +38,7 @@ void freerdp_blob_alloc(BLOB* blob, int length)
|
|||||||
* @param blob
|
* @param blob
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void freerdp_blob_free(BLOB* blob)
|
void freerdp_blob_free(rdpBlob* blob)
|
||||||
{
|
{
|
||||||
if (blob->data)
|
if (blob->data)
|
||||||
xfree(blob->data);
|
xfree(blob->data);
|
||||||
|
|||||||
@@ -24,6 +24,10 @@
|
|||||||
#include <freerdp/utils/memory.h>
|
#include <freerdp/utils/memory.h>
|
||||||
#include <freerdp/utils/thread.h>
|
#include <freerdp/utils/thread.h>
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
#include <Windows.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
freerdp_thread* freerdp_thread_new(void)
|
freerdp_thread* freerdp_thread_new(void)
|
||||||
{
|
{
|
||||||
freerdp_thread* thread;
|
freerdp_thread* thread;
|
||||||
|
|||||||
@@ -21,10 +21,15 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <sys/time.h>
|
|
||||||
#include <freerdp/utils/memory.h>
|
#include <freerdp/utils/memory.h>
|
||||||
#include <freerdp/utils/wait_obj.h>
|
#include <freerdp/utils/wait_obj.h>
|
||||||
|
|
||||||
|
#ifndef _WIN32
|
||||||
|
#include <sys/time.h>
|
||||||
|
#else
|
||||||
|
#include <windows.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_UNISTD_H
|
#ifdef HAVE_UNISTD_H
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user