35 char*
mod,
int mod_len,
char*
exp,
int exp_len);
51 uint8 master_secret[48];
55 sec_hash_48(master_secret, pre_master_secret, client_random, server_random,
'A');
56 sec_hash_48(key_block, master_secret, server_random, client_random,
'A');
159 uint8 *server_random;
171 memset(null_data, 0,
sizeof(null_data));
175 if (licence_size > 0)
241 error(
"token len %d\n", tokenlen);
310 for (
i = 0;
i < 4;
i++)
349 warning(
"License error alert from server: No license server\n");
353 warning(
"License error alert from server: Invalid client\n");
360 warning(
"License error alert from server: code %u, state transition %u\n",
386 DEBUG((
"Received licensing PDU (message type 0x%02x)\n",
tag));
std::map< E_MODULE, HMODULE > mod
ACPI_SIZE strlen(const char *String)
#define LICENCE_HWID_SIZE
#define LICENCE_SIGNATURE_SIZE
#define LICENCE_TAG_NEW_LICENCE_REQUEST
#define LICENCE_TAG_ERROR_ALERT
#define LICENCE_TAG_UPGRADE_LICENCE
#define LICENCE_TAG_PLATFORM_CHALLANGE_RESPONSE
#define LICENCE_TAG_NEW_LICENCE
#define BB_CLIENT_USER_NAME_BLOB
#define LICENCE_TAG_LICENCE_INFO
#define LICENCE_TAG_REQUEST
#define LICENCE_TAG_PLATFORM_CHALLANGE
#define LICENCE_TOKEN_SIZE
#define BB_CLIENT_MACHINE_NAME_BLOB
void rdssl_rc4_crypt(void *rc4_info, char *in_data, char *out_data, int len)
static RD_BOOL licence_parse_platform_challenge(STREAM s, uint8 **token, uint8 **signature)
void * rdssl_rc4_info_create(void)
void rdssl_rc4_set_key(void *rc4_info, char *key, int len)
static uint8 g_licence_key[16]
void licence_process(STREAM s)
void licence_process_error_alert(STREAM s)
RD_BOOL g_licence_error_result
static void licence_send_platform_challenge_response(uint8 *token, uint8 *crypt_hwid, uint8 *signature)
static void licence_process_platform_challenge(STREAM s)
RDP_VERSION g_rdp_version
static void licence_info(uint8 *client_random, uint8 *rsa_data, uint8 *licence_data, int licence_size, uint8 *hwid, uint8 *signature)
static void licence_send_new_licence_request(uint8 *client_random, uint8 *rsa_data, char *user, char *host)
static void licence_generate_hwid(uint8 *hwid)
static void licence_process_request(STREAM s)
static void licence_generate_keys(uint8 *client_random, uint8 *server_random, uint8 *pre_master_secret)
static void licence_process_new_license(STREAM s)
void rdssl_rc4_info_delete(void *rc4_info)
int rdssl_mod_exp(char *out, int out_len, char *in, int in_len, char *mod, int mod_len, char *exp, int exp_len)
static uint8 g_licence_sign_key[16]
#define out_uint32_le(s, v)
#define in_uint16_le(s, v)
#define in_uint8p(s, v, n)
#define out_uint16_le(s, v)
#define s_check_rem(s, n)
#define out_uint8p(s, v, n)
#define in_uint32_le(s, v)
int load_licence(unsigned char **data)
void sec_hash_48(uint8 *out, uint8 *in, uint8 *salt1, uint8 *salt2, uint8 salt)
void buf_out_uint32(uint8 *buffer, uint32 value)
void sec_send(STREAM s, uint32 flags)
void unimpl(char *format,...)
void save_licence(unsigned char *data, int length)
void sec_hash_16(uint8 *out, uint8 *in, uint8 *salt1, uint8 *salt2)
STREAM sec_init(uint32 flags, int maxlen)
void sec_sign(uint8 *signature, int siglen, uint8 *session_key, int keylen, uint8 *data, int datalen)
enum _RDP_VERSION RDP_VERSION
void user(int argc, const char *argv[])
GLuint GLsizei GLsizei * length
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat token
#define memcpy(s1, s2, n)
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out