diff options
author | unknown <msvensson@shellback.(none)> | 2006-04-07 11:35:12 +0200 |
---|---|---|
committer | unknown <msvensson@shellback.(none)> | 2006-04-07 11:35:12 +0200 |
commit | 78697215c1245f5ae4d6771fece4cf7d6c363131 (patch) | |
tree | 9cad353f5a7f89b9f7ee3d3d7e2de065f3dadab7 /extra/yassl/examples | |
parent | 9a1d80e90ef7a176da61d7c19f9b463076e8ad0c (diff) | |
download | mariadb-git-78697215c1245f5ae4d6771fece4cf7d6c363131.tar.gz |
Update yassl to 1.2.2
extra/yassl/examples/client/client.cpp:
Import patch yassl.diff
extra/yassl/README:
Import patch yassl.diff
extra/yassl/examples/client/client.dsp:
Import patch yassl.diff
extra/yassl/examples/echoclient/echoclient.cpp:
Import patch yassl.diff
extra/yassl/examples/echoclient/echoclient.dsp:
Import patch yassl.diff
extra/yassl/examples/echoclient/input:
Import patch yassl.diff
extra/yassl/examples/echoclient/quit:
Import patch yassl.diff
extra/yassl/examples/echoserver/echoserver.cpp:
Import patch yassl.diff
extra/yassl/examples/echoserver/echoserver.dsp:
Import patch yassl.diff
extra/yassl/examples/server/server.cpp:
Import patch yassl.diff
extra/yassl/examples/server/server.dsp:
Import patch yassl.diff
extra/yassl/include/cert_wrapper.hpp:
Import patch yassl.diff
extra/yassl/include/crypto_wrapper.hpp:
Import patch yassl.diff
extra/yassl/include/openssl/ssl.h:
Import patch yassl.diff
extra/yassl/include/socket_wrapper.hpp:
Import patch yassl.diff
extra/yassl/include/yassl.hpp:
Import patch yassl.diff
extra/yassl/include/yassl_error.hpp:
Import patch yassl.diff
extra/yassl/include/yassl_imp.hpp:
Import patch yassl.diff
extra/yassl/include/yassl_int.hpp:
Import patch yassl.diff
extra/yassl/include/yassl_types.hpp:
Import patch yassl.diff
extra/yassl/mySTL/helpers.hpp:
Import patch yassl.diff
extra/yassl/mySTL/list.hpp:
Import patch yassl.diff
extra/yassl/mySTL/vector.hpp:
Import patch yassl.diff
extra/yassl/src/buffer.cpp:
Import patch yassl.diff
extra/yassl/src/cert_wrapper.cpp:
Import patch yassl.diff
extra/yassl/src/crypto_wrapper.cpp:
Import patch yassl.diff
extra/yassl/src/handshake.cpp:
Import patch yassl.diff
extra/yassl/src/make.bat:
Import patch yassl.diff
extra/yassl/src/socket_wrapper.cpp:
Import patch yassl.diff
extra/yassl/src/ssl.cpp:
Import patch yassl.diff
extra/yassl/src/yassl.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/benchmark/benchmark.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/benchmark/benchmark.dsp:
Import patch yassl.diff
extra/yassl/taocrypt/benchmark/make.bat:
Import patch yassl.diff
extra/yassl/taocrypt/include/blowfish.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/kernelc.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/pwdbased.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/twofish.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/bftables.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/blowfish.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/make.bat:
Import patch yassl.diff
extra/yassl/taocrypt/src/tftables.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/twofish.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/test.dsp:
Import patch yassl.diff
extra/yassl/taocrypt/test.dsw:
Import patch yassl.diff
extra/yassl/taocrypt/test/make.bat:
Import patch yassl.diff
extra/yassl/taocrypt/test/memory.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/test/test.cpp:
Import patch yassl.diff
extra/yassl/testsuite/input:
Import patch yassl.diff
extra/yassl/src/timer.cpp:
Import patch yassl.diff
extra/yassl/src/yassl_error.cpp:
Import patch yassl.diff
extra/yassl/src/yassl_imp.cpp:
Import patch yassl.diff
extra/yassl/src/yassl_int.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/aes.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/arc4.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/asn.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/block.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/des.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/dh.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/hash.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/hmac.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/md5.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/misc.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/modes.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/ripemd.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/runtime.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/sha.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/include/types.hpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/aes.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/aestables.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/algebra.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/arc4.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/asn.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/coding.cpp:
Import patch yassl.diff
extra/yassl/testsuite/make.bat:
Import patch yassl.diff
extra/yassl/testsuite/quit:
Import patch yassl.diff
extra/yassl/testsuite/test.hpp:
Import patch yassl.diff
extra/yassl/testsuite/testsuite.cpp:
Import patch yassl.diff
extra/yassl/testsuite/testsuite.dsp:
Import patch yassl.diff
extra/yassl/taocrypt/src/des.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/dh.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/hash.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/integer.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/md5.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/misc.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/random.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/ripemd.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/src/sha.cpp:
Import patch yassl.diff
extra/yassl/taocrypt/taocrypt.dsp:
Import patch yassl.diff
extra/yassl/yassl.dsp:
Import patch yassl.diff
extra/yassl/yassl.dsw:
Import patch yassl.diff
Diffstat (limited to 'extra/yassl/examples')
-rw-r--r-- | extra/yassl/examples/client/client.cpp | 96 | ||||
-rw-r--r-- | extra/yassl/examples/client/client.dsp | 102 | ||||
-rw-r--r-- | extra/yassl/examples/echoclient/echoclient.cpp | 89 | ||||
-rw-r--r-- | extra/yassl/examples/echoclient/echoclient.dsp | 102 | ||||
-rw-r--r-- | extra/yassl/examples/echoclient/input | 93 | ||||
-rw-r--r-- | extra/yassl/examples/echoclient/quit | 2 | ||||
-rw-r--r-- | extra/yassl/examples/echoserver/echoserver.cpp | 126 | ||||
-rw-r--r-- | extra/yassl/examples/echoserver/echoserver.dsp | 102 | ||||
-rw-r--r-- | extra/yassl/examples/server/server.cpp | 73 | ||||
-rw-r--r-- | extra/yassl/examples/server/server.dsp | 109 |
10 files changed, 894 insertions, 0 deletions
diff --git a/extra/yassl/examples/client/client.cpp b/extra/yassl/examples/client/client.cpp new file mode 100644 index 00000000000..704a8e76637 --- /dev/null +++ b/extra/yassl/examples/client/client.cpp @@ -0,0 +1,96 @@ +/* client.cpp */ + +#include "../../testsuite/test.hpp" + +//#define TEST_RESUME + + +void client_test(void* args) +{ +#ifdef _WIN32 + WSADATA wsd; + WSAStartup(0x0002, &wsd); +#endif + + SOCKET_T sockfd = 0; + int argc = 0; + char** argv = 0; + + set_args(argc, argv, *static_cast<func_args*>(args)); + tcp_connect(sockfd); + + SSL_METHOD* method = TLSv1_client_method(); + SSL_CTX* ctx = SSL_CTX_new(method); + + set_certs(ctx); + SSL* ssl = SSL_new(ctx); + + SSL_set_fd(ssl, sockfd); + + if (SSL_connect(ssl) != SSL_SUCCESS) err_sys("SSL_connect failed"); + showPeer(ssl); + + const char* cipher = 0; + int index = 0; + char list[1024]; + strcpy(list, "cipherlist"); + while ( (cipher = SSL_get_cipher_list(ssl, index++)) ) { + strcat(list, ":"); + strcat(list, cipher); + } + printf("%s\n", list); + printf("Using Cipher Suite %s\n", SSL_get_cipher(ssl)); + + char msg[] = "hello yassl!"; + if (SSL_write(ssl, msg, sizeof(msg)) != sizeof(msg)) + err_sys("SSL_write failed"); + + char reply[1024]; + reply[SSL_read(ssl, reply, sizeof(reply))] = 0; + printf("Server response: %s\n", reply); + +#ifdef TEST_RESUME + SSL_SESSION* session = SSL_get_session(ssl); + SSL* sslResume = SSL_new(ctx); +#endif + + SSL_shutdown(ssl); + SSL_free(ssl); + +#ifdef TEST_RESUME + tcp_connect(sockfd); + SSL_set_fd(sslResume, sockfd); + SSL_set_session(sslResume, session); + + if (SSL_connect(sslResume) != SSL_SUCCESS) err_sys("SSL resume failed"); + + if (SSL_write(sslResume, msg, sizeof(msg)) != sizeof(msg)) + err_sys("SSL_write failed"); + + reply[SSL_read(sslResume, reply, sizeof(reply))] = 0; + printf("Server response: %s\n", reply); + + SSL_shutdown(sslResume); + SSL_free(sslResume); +#endif // TEST_RESUME + + SSL_CTX_free(ctx); + ((func_args*)args)->return_code = 0; +} + + +#ifndef NO_MAIN_DRIVER + + int main(int argc, char** argv) + { + func_args args; + + args.argc = argc; + args.argv = argv; + + client_test(&args); + return args.return_code; + } + +#endif // NO_MAIN_DRIVER + diff --git a/extra/yassl/examples/client/client.dsp b/extra/yassl/examples/client/client.dsp new file mode 100644 index 00000000000..1caa585dadb --- /dev/null +++ b/extra/yassl/examples/client/client.dsp @@ -0,0 +1,102 @@ +# Microsoft Developer Studio Project File - Name="client" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=client - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "client.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "client.mak" CFG="client - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "client - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "client - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "client - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /O2 /I "..\..\taocrypt\include" /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Ws2_32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "client - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "..\..\include" /I "..\..\taocrypt\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "client - Win32 Release" +# Name "client - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\client.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/extra/yassl/examples/echoclient/echoclient.cpp b/extra/yassl/examples/echoclient/echoclient.cpp new file mode 100644 index 00000000000..ca557cca8af --- /dev/null +++ b/extra/yassl/examples/echoclient/echoclient.cpp @@ -0,0 +1,89 @@ +/* echoclient.cpp */ + +#include "../../testsuite/test.hpp" + + +void echoclient_test(void* args) +{ +#ifdef _WIN32 + WSADATA wsd; + WSAStartup(0x0002, &wsd); +#endif + + SOCKET_T sockfd = 0; + int argc = 0; + char** argv = 0; + + FILE* fin = stdin; + FILE* fout = stdout; + + bool inCreated = false; + bool outCreated = false; + + set_args(argc, argv, *static_cast<func_args*>(args)); + if (argc >= 2) { + fin = fopen(argv[1], "r"); + inCreated = true; + } + if (argc >= 3) { + fout = fopen(argv[2], "w"); + outCreated = true; + } + + if (!fin) err_sys("can't open input file"); + if (!fout) err_sys("can't open output file"); + + tcp_connect(sockfd); + + SSL_METHOD* method = TLSv1_client_method(); + SSL_CTX* ctx = SSL_CTX_new(method); + set_certs(ctx); + SSL* ssl = SSL_new(ctx); + + SSL_set_fd(ssl, sockfd); + if (SSL_connect(ssl) != SSL_SUCCESS) err_sys("SSL_connect failed"); + + char send[1024]; + char reply[1024]; + + while (fgets(send, sizeof(send), fin)) { + + int sendSz = strlen(send) + 1; + if (SSL_write(ssl, send, sendSz) != sendSz) + err_sys("SSL_write failed"); + + if (strncmp(send, "quit", 4) == 0) { + fputs("sending server shutdown command: quit!\n", fout); + break; + } + + if (SSL_read(ssl, reply, sizeof(reply)) > 0) + fputs(reply, fout); + } + + SSL_CTX_free(ctx); + SSL_free(ssl); + + fflush(fout); + if (inCreated) fclose(fin); + if (outCreated) fclose(fout); + + ((func_args*)args)->return_code = 0; +} + + +#ifndef NO_MAIN_DRIVER + + int main(int argc, char** argv) + { + func_args args; + + args.argc = argc; + args.argv = argv; + + echoclient_test(&args); + + return args.return_code; + } + +#endif // NO_MAIN_DRIVER diff --git a/extra/yassl/examples/echoclient/echoclient.dsp b/extra/yassl/examples/echoclient/echoclient.dsp new file mode 100644 index 00000000000..52052c6dc44 --- /dev/null +++ b/extra/yassl/examples/echoclient/echoclient.dsp @@ -0,0 +1,102 @@ +# Microsoft Developer Studio Project File - Name="echoclient" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=echoclient - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "echoclient.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "echoclient.mak" CFG="echoclient - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "echoclient - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "echoclient - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "echoclient - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /O2 /I "..\..\include" /I "..\..\taocrypt\include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Ws2_32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "echoclient - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "..\..\include" /I "..\..\taocrypt\include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "echoclient - Win32 Release" +# Name "echoclient - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\echoclient.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/extra/yassl/examples/echoclient/input b/extra/yassl/examples/echoclient/input new file mode 100644 index 00000000000..438a592852c --- /dev/null +++ b/extra/yassl/examples/echoclient/input @@ -0,0 +1,93 @@ +/* echoclient.cpp */ + +#include "openssl/ssl.h" /* openssl compatibility test */ +#include <stdio.h> +#include <stdlib.h> + + +#ifdef WIN32 + #include <winsock2.h> +#else + #include <string.h> + #include <unistd.h> + #include <netinet/in.h> + #include <arpa/inet.h> + #include <sys/ioctl.h> + #include <sys/time.h> + #include <sys/types.h> + #include <sys/socket.h> +#endif /* WIN32 */ + + +void err_sys(const char* msg) +{ + fputs("yassl client error: ", stderr); + fputs(msg, stderr); + exit(EXIT_FAILURE); +} + +const char* loopback = "127.0.0.1"; +const short yasslPort = 11111; + +using namespace yaSSL; + + +int main(int argc, char** argv) +{ +#ifdef WIN32 + WSADATA wsd; + WSAStartup(0x0002, &wsd); + int sockfd; +#else + unsigned int sockfd; +#endif /* WIN32 */ + + FILE* fin = stdin; + FILE* fout = stdout; + + if (argc >= 2) fin = fopen(argv[1], "r"); + if (argc >= 3) fout = fopen(argv[2], "w"); + + if (!fin) err_sys("can't open input file"); + if (!fout) err_sys("can't open output file"); + + sockfd = socket(AF_INET, SOCK_STREAM, 0); + sockaddr_in servaddr; + memset(&servaddr, 0, sizeof(servaddr)); + servaddr.sin_family = AF_INET; + + servaddr.sin_port = htons(yasslPort); + servaddr.sin_addr.s_addr = inet_addr(loopback); + if (connect(sockfd, (const sockaddr*)&servaddr, sizeof(servaddr)) != 0) + err_sys("tcp connect failed"); + + SSL_METHOD* method = TLSv1_client_method(); + SSL_CTX* ctx = SSL_CTX_new(method); + SSL* ssl = SSL_new(ctx); + + SSL_set_fd(ssl, sockfd); + if (SSL_connect(ssl) != SSL_SUCCESS) err_sys("SSL_connect failed"); + + char send[1024]; + char reply[1024]; + + while (fgets(send, sizeof(send), fin)) { + + int sendSz = strlen(send) + 1; + if (SSL_write(ssl, send, sendSz) != sendSz) + err_sys("SSL_write failed"); + + if (strncmp(send, "quit", 4) == 0) { + fputs("sending server shutdown command: quit!", fout); + break; + } + + if (SSL_read(ssl, reply, sizeof(reply)) > 0) + fputs(reply, fout); + } + + SSL_CTX_free(ctx); + SSL_free(ssl); + + return 0; +} diff --git a/extra/yassl/examples/echoclient/quit b/extra/yassl/examples/echoclient/quit new file mode 100644 index 00000000000..3db49b3ad12 --- /dev/null +++ b/extra/yassl/examples/echoclient/quit @@ -0,0 +1,2 @@ +quit + diff --git a/extra/yassl/examples/echoserver/echoserver.cpp b/extra/yassl/examples/echoserver/echoserver.cpp new file mode 100644 index 00000000000..14a37a7e175 --- /dev/null +++ b/extra/yassl/examples/echoserver/echoserver.cpp @@ -0,0 +1,126 @@ +/* echoserver.cpp */ + +#include "../../testsuite/test.hpp" + + +#ifndef NO_MAIN_DRIVER + #define ECHO_OUT + + THREAD_RETURN YASSL_API echoserver_test(void*); + int main(int argc, char** argv) + { + func_args args; + + args.argc = argc; + args.argv = argv; + + echoserver_test(&args); + return args.return_code; + } + +#endif // NO_MAIN_DRIVER + + +THREAD_RETURN YASSL_API echoserver_test(void* args) +{ +#ifdef _WIN32 + WSADATA wsd; + WSAStartup(0x0002, &wsd); +#endif + + SOCKET_T sockfd = 0; + int argc = 0; + char** argv = 0; + + set_args(argc, argv, *static_cast<func_args*>(args)); + +#ifdef ECHO_OUT + FILE* fout = stdout; + if (argc >= 2) fout = fopen(argv[1], "w"); + if (!fout) err_sys("can't open output file"); +#endif + + tcp_listen(sockfd); + + SSL_METHOD* method = TLSv1_server_method(); + SSL_CTX* ctx = SSL_CTX_new(method); + + set_serverCerts(ctx); + DH* dh = set_tmpDH(ctx); + + bool shutdown(false); + +#if defined(_POSIX_THREADS) && defined(NO_MAIN_DRIVER) + // signal ready to tcp_accept + func_args& server_args = *((func_args*)args); + tcp_ready& ready = *server_args.signal_; + pthread_mutex_lock(&ready.mutex_); + ready.ready_ = true; + pthread_cond_signal(&ready.cond_); + pthread_mutex_unlock(&ready.mutex_); +#endif + + while (!shutdown) { + sockaddr_in client; + socklen_t client_len = sizeof(client); + int clientfd = accept(sockfd, (sockaddr*)&client, &client_len); + if (clientfd == -1) err_sys("tcp accept failed"); + + SSL* ssl = SSL_new(ctx); + SSL_set_fd(ssl, clientfd); + if (SSL_accept(ssl) != SSL_SUCCESS) err_sys("SSL_accept failed"); + + char command[1024]; + int echoSz(0); + while ( (echoSz = SSL_read(ssl, command, sizeof(command))) > 0) { + + if ( strncmp(command, "quit", 4) == 0) { + printf("client sent quit command: shutting down!\n"); + shutdown = true; + break; + } + else if ( strncmp(command, "GET", 3) == 0) { + char type[] = "HTTP/1.0 200 ok\r\nContent-type:" + " text/html\r\n\r\n"; + char header[] = "<html><body BGCOLOR=\"#ffffff\">\n<pre>\n"; + char body[] = "greetings from yaSSL\n"; + char footer[] = "</body></html>\r\n\r\n"; + + strncpy(command, type, sizeof(type)); + echoSz = sizeof(type) - 1; + + strncpy(&command[echoSz], header, sizeof(header)); + echoSz += sizeof(header) - 1; + strncpy(&command[echoSz], body, sizeof(body)); + echoSz += sizeof(body) - 1; + strncpy(&command[echoSz], footer, sizeof(footer)); + echoSz += sizeof(footer); + + if (SSL_write(ssl, command, echoSz) != echoSz) + err_sys("SSL_write failed"); + break; + } + command[echoSz] = 0; + + #ifdef ECHO_OUT + fputs(command, fout); + #endif + + if (SSL_write(ssl, command, echoSz) != echoSz) + err_sys("SSL_write failed"); + } + SSL_free(ssl); + } + +#ifdef _WIN32 + closesocket(sockfd); +#else + close(sockfd); +#endif + + DH_free(dh); + SSL_CTX_free(ctx); + + ((func_args*)args)->return_code = 0; + return 0; +} diff --git a/extra/yassl/examples/echoserver/echoserver.dsp b/extra/yassl/examples/echoserver/echoserver.dsp new file mode 100644 index 00000000000..21a965b013c --- /dev/null +++ b/extra/yassl/examples/echoserver/echoserver.dsp @@ -0,0 +1,102 @@ +# Microsoft Developer Studio Project File - Name="echoserver" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=echoserver - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "echoserver.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "echoserver.mak" CFG="echoserver - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "echoserver - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "echoserver - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "echoserver - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /G6 /MT /W3 /O2 /I "..\..\include" /I "..\..\taocrypt\include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Ws2_32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "echoserver - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "..\..\include" /I "..\..\taocrypt\include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "echoserver - Win32 Release" +# Name "echoserver - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\echoserver.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/extra/yassl/examples/server/server.cpp b/extra/yassl/examples/server/server.cpp new file mode 100644 index 00000000000..4d3f121cf2c --- /dev/null +++ b/extra/yassl/examples/server/server.cpp @@ -0,0 +1,73 @@ +/* server.cpp */ + + +#include "../../testsuite/test.hpp" + + +THREAD_RETURN YASSL_API server_test(void* args) +{ +#ifdef _WIN32 + WSADATA wsd; + WSAStartup(0x0002, &wsd); +#endif + + SOCKET_T sockfd = 0; + int clientfd = 0; + int argc = 0; + char** argv = 0; + + set_args(argc, argv, *static_cast<func_args*>(args)); + tcp_accept(sockfd, clientfd, *static_cast<func_args*>(args)); + +#ifdef _WIN32 + closesocket(sockfd); +#else + close(sockfd); +#endif + + SSL_METHOD* method = TLSv1_server_method(); + SSL_CTX* ctx = SSL_CTX_new(method); + + //SSL_CTX_set_cipher_list(ctx, "RC4-SHA"); + SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, 0); + set_serverCerts(ctx); + DH* dh = set_tmpDH(ctx); + + SSL* ssl = SSL_new(ctx); + SSL_set_fd(ssl, clientfd); + + if (SSL_accept(ssl) != SSL_SUCCESS) err_sys("SSL_accept failed"); + showPeer(ssl); + printf("Using Cipher Suite %s\n", SSL_get_cipher(ssl)); + + char command[1024]; + command[SSL_read(ssl, command, sizeof(command))] = 0; + printf("First client command: %s\n", command); + + char msg[] = "I hear you, fa shizzle!"; + if (SSL_write(ssl, msg, sizeof(msg)) != sizeof(msg)) + err_sys("SSL_write failed"); + + DH_free(dh); + SSL_CTX_free(ctx); + SSL_free(ssl); + + ((func_args*)args)->return_code = 0; + return 0; +} + + +#ifndef NO_MAIN_DRIVER + + int main(int argc, char** argv) + { + func_args args; + + args.argc = argc; + args.argv = argv; + + server_test(&args); + return args.return_code; + } + +#endif // NO_MAIN_DRIVER diff --git a/extra/yassl/examples/server/server.dsp b/extra/yassl/examples/server/server.dsp new file mode 100644 index 00000000000..9c797c54dfe --- /dev/null +++ b/extra/yassl/examples/server/server.dsp @@ -0,0 +1,109 @@ +# Microsoft Developer Studio Project File - Name="server" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Application" 0x0101 + +CFG=server - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "server.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "server.mak" CFG="server - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "server - Win32 Release" (based on "Win32 (x86) Application") +!MESSAGE "server - Win32 Debug" (based on "Win32 (x86) Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "server - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /O2 /I "..\..\include" /I "..\..\taocrypt\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Ws2_32.lib /nologo /subsystem:console /machine:I386 +# SUBTRACT LINK32 /pdb:none + +!ELSEIF "$(CFG)" == "server - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "..\..\include" /I "..\..\taocrypt\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /FR /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# SUBTRACT LINK32 /pdb:none /nodefaultlib + +!ENDIF + +# Begin Target + +# Name "server - Win32 Release" +# Name "server - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\server.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project |