This example show how to create a small TLS server using the TLS_cyassl library.

Dependencies:   EthernetInterface8 TLS_cyassl mbed-rtos mbed

Once you launched this program on the mbed, create a small python script :

TLS client

import httplib

conn = httplib.HTTPSConnection("10.2.200.35", 443)
conn.request("GET", "/")
r1 = conn.getresponse()
print r1.status, r1.reason
data = r1.read()
print data

In the terminal, your mbed prints its own IP address. Replace 10.2.200.35 with the IP address of your mbed.

Committer:
feb11
Date:
Wed Sep 18 09:21:51 2013 +0000
Revision:
0:e9b7265b84af
initial import

Who changed what in which revision?

UserRevisionLine numberNew contents of line
feb11 0:e9b7265b84af 1 /** This example shows how to create
feb11 0:e9b7265b84af 2 a small TLS server using the TLS library.
feb11 0:e9b7265b84af 3 */
feb11 0:e9b7265b84af 4
feb11 0:e9b7265b84af 5 #include "mbed.h"
feb11 0:e9b7265b84af 6 #include "EthernetInterface.h"
feb11 0:e9b7265b84af 7 #include "TLSConnection.h"
feb11 0:e9b7265b84af 8 #include "TLSServer.h"
feb11 0:e9b7265b84af 9
feb11 0:e9b7265b84af 10 const char host[] = "mbed.org";
feb11 0:e9b7265b84af 11
feb11 0:e9b7265b84af 12 const char page[] = " \
feb11 0:e9b7265b84af 13 <html> \
feb11 0:e9b7265b84af 14 <head>\
feb11 0:e9b7265b84af 15 <title>MBED</title>\
feb11 0:e9b7265b84af 16 </head>\
feb11 0:e9b7265b84af 17 <body>\
feb11 0:e9b7265b84af 18 Hello World !\
feb11 0:e9b7265b84af 19 </body>\
feb11 0:e9b7265b84af 20 </html>";
feb11 0:e9b7265b84af 21
feb11 0:e9b7265b84af 22 int main()
feb11 0:e9b7265b84af 23 {
feb11 0:e9b7265b84af 24 set_time(1379062044 );
feb11 0:e9b7265b84af 25 EthernetInterface eth;
feb11 0:e9b7265b84af 26 if(eth.init() || eth.connect())
feb11 0:e9b7265b84af 27 {
feb11 0:e9b7265b84af 28 printf("Error with EthernetInterface\n\r");
feb11 0:e9b7265b84af 29 return -1;
feb11 0:e9b7265b84af 30 }
feb11 0:e9b7265b84af 31 printf("IP address is %s\n", eth.getIPAddress());
feb11 0:e9b7265b84af 32
feb11 0:e9b7265b84af 33 TLSServer srv;
feb11 0:e9b7265b84af 34 if(!srv.init())
feb11 0:e9b7265b84af 35 {
feb11 0:e9b7265b84af 36 printf("Failed to intialize server\n");
feb11 0:e9b7265b84af 37 return -1;
feb11 0:e9b7265b84af 38 }
feb11 0:e9b7265b84af 39
feb11 0:e9b7265b84af 40 TLSConnection con;
feb11 0:e9b7265b84af 41 if(srv.accept(con))
feb11 0:e9b7265b84af 42 {
feb11 0:e9b7265b84af 43 printf("New connection from %s\n", con.get_address());
feb11 0:e9b7265b84af 44 char buffer[512];
feb11 0:e9b7265b84af 45
feb11 0:e9b7265b84af 46 while(con.is_connected())
feb11 0:e9b7265b84af 47 {
feb11 0:e9b7265b84af 48 int read = con.receive(buffer, 511);
feb11 0:e9b7265b84af 49 if(read == 0)
feb11 0:e9b7265b84af 50 {
feb11 0:e9b7265b84af 51 break;
feb11 0:e9b7265b84af 52 }
feb11 0:e9b7265b84af 53 if(read != -1)
feb11 0:e9b7265b84af 54 {
feb11 0:e9b7265b84af 55 buffer[read] = '\0';
feb11 0:e9b7265b84af 56 printf("%s", buffer);
feb11 0:e9b7265b84af 57
feb11 0:e9b7265b84af 58 sprintf(buffer, "HTTP/1.0 200 OK\r\nContent-Length: %d", strlen(page));
feb11 0:e9b7265b84af 59 strcat(buffer, "\r\n\r\n");
feb11 0:e9b7265b84af 60 strcat(buffer, page);
feb11 0:e9b7265b84af 61
feb11 0:e9b7265b84af 62 con.send_all(buffer, strlen(buffer));
feb11 0:e9b7265b84af 63 }
feb11 0:e9b7265b84af 64 else
feb11 0:e9b7265b84af 65 {
feb11 0:e9b7265b84af 66 printf("error occured\n");
feb11 0:e9b7265b84af 67 break;
feb11 0:e9b7265b84af 68 }
feb11 0:e9b7265b84af 69 }
feb11 0:e9b7265b84af 70
feb11 0:e9b7265b84af 71 con.close();
feb11 0:e9b7265b84af 72 }
feb11 0:e9b7265b84af 73 eth.disconnect();
feb11 0:e9b7265b84af 74
feb11 0:e9b7265b84af 75 return 0;
feb11 0:e9b7265b84af 76 }