nvram defaults now country=SG, txpwr=auto
[tomato.git] / release / src / router / cyassl / testsuite / input
blob06dbbf0764acf0ce58df122ad7f799702d5d2ba5
1 /* echoclient.c  */\r
2 \r
3 #include "openssl/ssl.h"\r
4 #include "../test.h"\r
5 \r
6 \r
7 int main(int argc, char** argv)\r
8 {\r
9     SOCKET_T sockfd = 0;\r
11     FILE* fin  = stdin;\r
12     FILE* fout = stdout;\r
14     int inCreated  = 0;\r
15     int outCreated = 0;\r
17     char send[1024];\r
18     char reply[1024];\r
20     SSL_METHOD* method = 0;\r
21     SSL_CTX*    ctx    = 0;\r
22     SSL*        ssl    = 0;\r
24 #ifdef _WIN32\r
25     WSADATA wsd;\r
26     WSAStartup(0x0002, &wsd);\r
27 #endif\r
29     if (argc >= 2) {\r
30         fin  = fopen(argv[1], "r"); \r
31         inCreated = 1;\r
32     }\r
33     if (argc >= 3) {\r
34         fout = fopen(argv[2], "w");\r
35         outCreated = 1;\r
36     }\r
38     if (!fin)  err_sys("can't open input file");\r
39     if (!fout) err_sys("can't open output file");\r
41     tcp_connect(&sockfd);\r
43     method = SSLv3_client_method();\r
44     ctx    = SSL_CTX_new(method);\r
46     if (SSL_CTX_load_verify_locations(ctx, caCert, 0) != SSL_SUCCESS)\r
47         err_sys("can't load ca file");\r
49     ssl = SSL_new(ctx);\r
51     SSL_set_fd(ssl, sockfd);\r
52     if (SSL_connect(ssl) != SSL_SUCCESS) err_sys("SSL_connect failed");\r
54     while (fgets(send, sizeof(send), fin)) {\r
56         int  sendSz = strlen(send) + 1;\r
58         if (SSL_write(ssl, send, sendSz) != sendSz)\r
59             err_sys("SSL_write failed");\r
61         if (strncmp(send, "quit", 4) == 0) {\r
62             fputs("sending server shutdown command: quit!\n", fout);\r
63             break;\r
64         }\r
66         if (SSL_read(ssl, reply, sizeof(reply)) > 0) \r
67             fputs(reply, fout);\r
68     }\r
70     SSL_shutdown(ssl);\r
71     SSL_free(ssl);\r
72     SSL_CTX_free(ctx);\r
74     fflush(fout);\r
75     if (inCreated)  fclose(fin);\r
76     if (outCreated) fclose(fout);\r
78 #ifdef _WIN32\r
79     closesocket(sockfd);\r
80 #else\r
81     close(sockfd);\r
82 #endif\r
84     return 0;\r
85 }\r