Osamu Koizumi / Mbed OS Hello-TLSSocket-old
Committer:
Osamu Koizumi
Date:
Fri Jun 15 00:43:00 2018 +0900
Revision:
13:e82471c0624c
Parent:
12:7d952bcda2c1
Updated TLSSocket library.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
coisme 0:f96053986356 1 #include "mbed.h"
coisme 0:f96053986356 2 #include "easy-connect.h"
coisme 0:f96053986356 3 #include "TLSSocket.h"
coisme 0:f96053986356 4
Osamu Koizumi 3:cf61a5596cf2 5 #include "mbed-trace/mbed_trace.h"
Osamu Koizumi 3:cf61a5596cf2 6
coisme 0:f96053986356 7 const char* HOST_NAME = "os.mbed.com";
coisme 0:f96053986356 8 const int PORT = 443;
coisme 0:f96053986356 9 const char* HTTPS_PATH = "/";
coisme 0:f96053986356 10
coisme 0:f96053986356 11 int main(int argc, char* argv[]) {
Osamu Koizumi 3:cf61a5596cf2 12 mbed_trace_init();
Osamu Koizumi 3:cf61a5596cf2 13
coisme 0:f96053986356 14 printf("HelloTSLSocket, HTTPS example of TLSSocket\r\n");
Osamu Koizumi 1:65339c530def 15 printf("\r\n");
coisme 0:f96053986356 16
Osamu Koizumi 1:65339c530def 17 // Open a network interface
coisme 0:f96053986356 18 NetworkInterface* network = NULL;
coisme 0:f96053986356 19 network = easy_connect(false); // If true, prints out connection details.
coisme 0:f96053986356 20 if (!network) {
coisme 0:f96053986356 21 printf("Unable to open network interface.\r\n");
coisme 0:f96053986356 22 return -1;
coisme 0:f96053986356 23 }
coisme 0:f96053986356 24
Osamu Koizumi 1:65339c530def 25 // Create a TLS socket
Osamu Koizumi 7:fc43e66fb54a 26 TLSSocket socket = TLSSocket();
Osamu Koizumi 7:fc43e66fb54a 27 if(socket.open(network) != 0) {
coisme 0:f96053986356 28 printf("Unable to open TLS socket.\r\n");
coisme 0:f96053986356 29 return -1;
coisme 0:f96053986356 30 }
Osamu Koizumi 1:65339c530def 31
Osamu Koizumi 12:7d952bcda2c1 32 // Set root CA certificate
Osamu Koizumi 12:7d952bcda2c1 33 socket.set_root_ca_cert(MBED_CONF_APP_ROOT_CA_CERT_PEM);
Osamu Koizumi 12:7d952bcda2c1 34
Osamu Koizumi 1:65339c530def 35 // Connect to the server, including TLS handshake
Osamu Koizumi 9:38b485904577 36 if(socket.connect(HOST_NAME, PORT) != 0) {
coisme 0:f96053986356 37 printf("Failed to connect to the server.");
coisme 0:f96053986356 38 return -1;
coisme 0:f96053986356 39 }
coisme 0:f96053986356 40
Osamu Koizumi 6:75b01b028cd4 41 const size_t buf_size = 1024;
coisme 0:f96053986356 42 char *buf = new char[buf_size];
coisme 0:f96053986356 43
Osamu Koizumi 1:65339c530def 44 // Send HTTP request
Osamu Koizumi 1:65339c530def 45 /* "Connection: close" header is specified to detect end of the body
Osamu Koizumi 1:65339c530def 46 * contents by connection close notification. If this is not specified,
Osamu Koizumi 1:65339c530def 47 * connection is kept, and need to detect end of the content in another
Osamu Koizumi 1:65339c530def 48 * way.
Osamu Koizumi 1:65339c530def 49 */
Osamu Koizumi 1:65339c530def 50 int len = snprintf(buf, buf_size,
Osamu Koizumi 1:65339c530def 51 "GET %s HTTP/1.1\n"
Osamu Koizumi 1:65339c530def 52 "Host: %s\n"
Osamu Koizumi 1:65339c530def 53 "Connection: close\n"
Osamu Koizumi 1:65339c530def 54 "\n", HTTPS_PATH, HOST_NAME);
Osamu Koizumi 1:65339c530def 55 printf("\r\n%s", buf);
coisme 0:f96053986356 56 int rc = 0;
Osamu Koizumi 7:fc43e66fb54a 57 rc = socket.send(buf, len);
coisme 0:f96053986356 58 if(rc < 0) {
coisme 0:f96053986356 59 printf("send error.\r\n");
coisme 0:f96053986356 60 return -1;
coisme 0:f96053986356 61 }
Osamu Koizumi 1:65339c530def 62
Osamu Koizumi 6:75b01b028cd4 63 // Receive response from the server
Osamu Koizumi 7:fc43e66fb54a 64 while((rc = socket.recv(buf, buf_size - 1)) > 0) {
coisme 0:f96053986356 65 buf[rc] = '\0';
coisme 0:f96053986356 66 printf("%s", buf);
coisme 0:f96053986356 67 }
coisme 0:f96053986356 68 if(rc < 0) {
coisme 0:f96053986356 69 printf("\r\n! Read failed. err code = %d\r\n", rc);
coisme 0:f96053986356 70 }
Osamu Koizumi 1:65339c530def 71
Osamu Koizumi 1:65339c530def 72 // Done
Osamu Koizumi 1:65339c530def 73 printf("HelloTSLSocket DONE.\r\n");
coisme 0:f96053986356 74 delete[] buf;
coisme 0:f96053986356 75
Osamu Koizumi 7:fc43e66fb54a 76 socket.close();
coisme 0:f96053986356 77 }