Example TLS client with wolfSSL
Dependencies: EthernetInterface-FRDM-k64F mbed-rtos mbed wolfSSL-TLS13-Beta Example-client-tls
Dependents: Example-client-tls
Diff: client-tls.cpp
- Revision:
- 10:37e38ee43b8f
- Parent:
- 9:0b93e8d9a31c
- Parent:
- 6:12068e6dc456
--- a/client-tls.cpp Tue Aug 22 10:59:36 2017 +0000 +++ b/client-tls.cpp Tue Aug 22 11:02:42 2017 +0000 @@ -43,7 +43,7 @@ static int getline(char *prompt, char *buff, int size) { int sz ; - + printf("%s", prompt) ; for(sz = 0 ; (sz < size) && ((*buff = getchar()) != '\r'); sz++, buff++) { putchar(*buff) ; @@ -84,7 +84,7 @@ /* * clients initial contact with server. Socket to connect to: sock */ - int ClientGreet(TCPSocketConnection *socket, WOLFSSL *ssl) +int ClientGreet(TCPSocketConnection *socket, WOLFSSL *ssl) { /* data to send to the server, data recieved from the server */ char sendBuff[MAXDATASIZE], rcvBuff[MAXDATASIZE] = {0}; @@ -98,21 +98,16 @@ printf("Write error[%d]\n", ret, wc_GetErrorString(ret)); return EXIT_FAILURE; } - printf("Recieved:\n"); - while(1) { - if ((ret = wolfSSL_read(ssl, rcvBuff, sizeof(rcvBuff)-1)) < 0) { - if(ret == 0)break ; - /* the server failed to send data, or error trying */ - ret = wolfSSL_get_error(ssl, 0); - printf("Read error[%d], %s\n", ret, wc_GetErrorString(ret)); - return EXIT_FAILURE; - } - rcvBuff[ret] = '\0' ; - printf("%s", rcvBuff); - if((rcvBuff[ret-3] == '\n')&& - (rcvBuff[ret-2] == '\n')&& - (rcvBuff[ret-1] == '\n'))break ; + + if ((ret = wolfSSL_read(ssl, rcvBuff, sizeof(rcvBuff)-1)) < 0) { + /* the server failed to send data, or error trying */ + ret = wolfSSL_get_error(ssl, 0); + printf("Read error[%d], %s\n", ret, wc_GetErrorString(ret)); + return EXIT_FAILURE; } + rcvBuff[ret] = '\0' ; + printf("Recieved: %s\n", rcvBuff); + return ret; } @@ -154,7 +149,7 @@ } else { ret = wolfSSL_get_error(ssl, 0); printf("TLS Connect error[%d], %s\n", ret, wc_GetErrorString(ret)); - return EXIT_FAILURE; + return EXIT_FAILURE; } /* frees all data before client termination */ wolfSSL_free(ssl); @@ -171,7 +166,7 @@ { char server_addr[40] ; char server_port[10] ; - + printf("Starting TLS Client,...\n") ; wolfSSL_Init(); /* initialize wolfSSL */ /* wolfSSL_Debugging_ON(); */ @@ -187,7 +182,7 @@ getline("Server Addr: ", server_addr, sizeof(server_addr)) ; getline("Server Port: ", server_port, sizeof(server_port)) ; - + while (socket.connect(server_addr, atoi(server_port)) < 0) { printf("Unable to connect to (%s) on port (%s)\n", server_addr, server_port); wait(1.0);