From 5ac03256db0fe4ca7e3ad1117d096c3a76368b76 Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Fri, 9 Jan 2015 09:46:07 +0100 Subject: backported CyaSSL/OpenSSL support for internal webserver instead of MatrixSSL --- .../src/router/cyassl/examples/echoclient/input | 87 ++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 release/src/router/cyassl/examples/echoclient/input (limited to 'release/src/router/cyassl/examples/echoclient/input') diff --git a/release/src/router/cyassl/examples/echoclient/input b/release/src/router/cyassl/examples/echoclient/input new file mode 100644 index 00000000..06dbbf07 --- /dev/null +++ b/release/src/router/cyassl/examples/echoclient/input @@ -0,0 +1,87 @@ +/* echoclient.c */ + +#include "openssl/ssl.h" +#include "../test.h" + + +int main(int argc, char** argv) +{ + SOCKET_T sockfd = 0; + + FILE* fin = stdin; + FILE* fout = stdout; + + int inCreated = 0; + int outCreated = 0; + + char send[1024]; + char reply[1024]; + + SSL_METHOD* method = 0; + SSL_CTX* ctx = 0; + SSL* ssl = 0; + +#ifdef _WIN32 + WSADATA wsd; + WSAStartup(0x0002, &wsd); +#endif + + if (argc >= 2) { + fin = fopen(argv[1], "r"); + inCreated = 1; + } + if (argc >= 3) { + fout = fopen(argv[2], "w"); + outCreated = 1; + } + + if (!fin) err_sys("can't open input file"); + if (!fout) err_sys("can't open output file"); + + tcp_connect(&sockfd); + + method = SSLv3_client_method(); + ctx = SSL_CTX_new(method); + + if (SSL_CTX_load_verify_locations(ctx, caCert, 0) != SSL_SUCCESS) + err_sys("can't load ca file"); + + ssl = SSL_new(ctx); + + SSL_set_fd(ssl, sockfd); + if (SSL_connect(ssl) != SSL_SUCCESS) err_sys("SSL_connect failed"); + + 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_shutdown(ssl); + SSL_free(ssl); + SSL_CTX_free(ctx); + + fflush(fout); + if (inCreated) fclose(fin); + if (outCreated) fclose(fout); + +#ifdef _WIN32 + closesocket(sockfd); +#else + close(sockfd); +#endif + + return 0; +} + + -- cgit v1.2.3-54-g00ecf