libfreerdp-core: extend OpenSSL TSG BIO

This commit is contained in:
Marc-André Moreau
2013-10-11 15:27:22 -04:00
parent 08eadc2ee3
commit 3fe3cdf876
2 changed files with 48 additions and 3 deletions

View File

@@ -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;
}

View File

@@ -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
{