summaryrefslogtreecommitdiff
path: root/release/src/router/cyassl/examples/echoclient/input
diff options
context:
space:
mode:
Diffstat (limited to 'release/src/router/cyassl/examples/echoclient/input')
-rw-r--r--release/src/router/cyassl/examples/echoclient/input87
1 files changed, 87 insertions, 0 deletions
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;
+}
+
+