mirror of
https://github.com/morgan9e/FreeRDP
synced 2026-04-15 00:44:19 +09:00
libfreerdp-core: extend OpenSSL TSG BIO
This commit is contained in:
@@ -104,23 +104,56 @@ BOOL transport_connect_rdp(rdpTransport* transport)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
long transport_bio_tsg_callback(BIO* bio, int mode, const char* argp, int argi, long argl, long ret)
|
||||
{
|
||||
printf("transport_bio_tsg_callback: mode: %d argp: %p argi: %d argl: %d ret: %d\n",
|
||||
mode, argp, argi, argl, ret);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int transport_bio_tsg_write(BIO* bio, const char* buf, int num)
|
||||
{
|
||||
int status;
|
||||
rdpTsg* tsg;
|
||||
|
||||
printf("transport_bio_tsg_write: %d\n", num);
|
||||
|
||||
tsg_write((rdpTsg*) bio->ptr, (BYTE*) buf, num);
|
||||
tsg = (rdpTsg*) bio->ptr;
|
||||
status = tsg_write(tsg, (BYTE*) buf, num);
|
||||
|
||||
printf("tsg_write: %d\n", status);
|
||||
|
||||
BIO_clear_retry_flags(bio);
|
||||
|
||||
if (status <= 0)
|
||||
{
|
||||
BIO_set_retry_write(bio);
|
||||
}
|
||||
|
||||
return num;
|
||||
}
|
||||
|
||||
static int transport_bio_tsg_read(BIO* bio, char* buf, int size)
|
||||
{
|
||||
int status;
|
||||
rdpTsg* tsg;
|
||||
|
||||
printf("transport_bio_tsg_read: %d\n", size);
|
||||
|
||||
tsg = (rdpTsg*) bio->ptr;
|
||||
status = tsg_read(bio->ptr, (BYTE*) buf, size);
|
||||
|
||||
printf("tsg_read: %d\n", status);
|
||||
|
||||
BIO_clear_retry_flags(bio);
|
||||
|
||||
return 1;
|
||||
if (status <= 0)
|
||||
{
|
||||
BIO_set_retry_read(bio);
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
static int transport_bio_tsg_puts(BIO* bio, const char* str)
|
||||
@@ -137,7 +170,7 @@ static int transport_bio_tsg_gets(BIO* bio, char* str, int size)
|
||||
|
||||
static long transport_bio_tsg_ctrl(BIO* bio, int cmd, long arg1, void* arg2)
|
||||
{
|
||||
printf("transport_bio_tsg_puts: cmd: %d arg1: %d arg2: %p\n", cmd, arg1, arg2);
|
||||
printf("transport_bio_tsg_ctrl: cmd: %d arg1: %d arg2: %p\n", cmd, arg1, arg2);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -97,6 +97,16 @@ SecPkgContext_Bindings* tls_get_channel_bindings(X509* cert)
|
||||
return ContextBindings;
|
||||
}
|
||||
|
||||
static void tls_ssl_info_callback(const SSL* ssl, int type, int val)
|
||||
{
|
||||
printf("tls_ssl_info_callback: type: %d val: %d\n");
|
||||
|
||||
if (type & SSL_CB_HANDSHAKE_START)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
BOOL tls_connect(rdpTls* tls)
|
||||
{
|
||||
CryptoCert cert;
|
||||
@@ -166,6 +176,8 @@ BOOL tls_connect(rdpTls* tls)
|
||||
tls->bio->ptr = tls->tsg;
|
||||
|
||||
SSL_set_bio(tls->ssl, tls->bio, tls->bio);
|
||||
|
||||
SSL_CTX_set_info_callback(tls->ctx, tls_ssl_info_callback);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user