00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _CRT_SECURE_NO_DEPRECATE
00022 #define _CRT_SECURE_NO_DEPRECATE 1
00023 #endif
00024
00025 #include <string.h>
00026 #include <stdio.h>
00027
00028 #include "xyssl/net.h"
00029 #include "xyssl/ssl.h"
00030 #include "xyssl/havege.h"
00031
00032 #define SERVER_PORT 443
00033
00034
00035
00036
00037 #define SERVER_NAME "xyssl.org"
00038 #define GET_REQUEST \
00039 "GET /hello/ HTTP/1.1\r\n" \
00040 "Host: xyssl.org\r\n\r\n"
00041
00042 #define DEBUG_LEVEL 0
00043
00044 void my_debug( void *ctx, int level, char *str )
00045 {
00046 if( level < DEBUG_LEVEL )
00047 {
00048 fprintf( (FILE *) ctx, "%s", str );
00049 fflush( (FILE *) ctx );
00050 }
00051 }
00052
00053 int main( void )
00054 {
00055 int ret, len, server_fd;
00056 unsigned char buf[1024];
00057 havege_state hs;
00058 ssl_context ssl;
00059 ssl_session ssn;
00060
00061
00062
00063
00064 havege_init( &hs );
00065 memset( &ssn, 0, sizeof( ssl_session ) );
00066
00067
00068
00069
00070 printf( "\n . Connecting to tcp/%s/%4d...", SERVER_NAME,
00071 SERVER_PORT );
00072 fflush( stdout );
00073
00074 if( ( ret = net_connect( &server_fd, SERVER_NAME,
00075 SERVER_PORT ) ) != 0 )
00076 {
00077 printf( " failed\n ! net_connect returned %d\n\n", ret );
00078 goto exit;
00079 }
00080
00081 printf( " ok\n" );
00082
00083
00084
00085
00086 printf( " . Setting up the SSL/TLS structure..." );
00087 fflush( stdout );
00088
00089 if( ( ret = ssl_init( &ssl ) ) != 0 )
00090 {
00091 printf( " failed\n ! ssl_init returned %d\n\n", ret );
00092 goto exit;
00093 }
00094
00095 printf( " ok\n" );
00096
00097 ssl_set_endpoint( &ssl, SSL_IS_CLIENT );
00098 ssl_set_authmode( &ssl, SSL_VERIFY_NONE );
00099
00100 ssl_set_rng( &ssl, havege_rand, &hs );
00101 ssl_set_dbg( &ssl, my_debug, stdout );
00102 ssl_set_bio( &ssl, net_recv, &server_fd,
00103