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.

main.cpp

Committer:
feb11
Date:
2013-09-18
Revision:
0:e9b7265b84af

File content as of revision 0:e9b7265b84af:

/** This example shows how to create 
    a small TLS server using the TLS library.
*/

#include "mbed.h"
#include "EthernetInterface.h"
#include "TLSConnection.h"
#include "TLSServer.h"

const char host[] = "mbed.org";

const char page[] = " \
<html>   \
    <head>\
        <title>MBED</title>\
    </head>\
    <body>\
    Hello World !\
    </body>\
</html>";

int main() 
{
    set_time(1379062044 );
    EthernetInterface eth;
    if(eth.init() || eth.connect())
    {
        printf("Error with EthernetInterface\n\r");
        return -1;
    }
    printf("IP address is %s\n", eth.getIPAddress());
    
    TLSServer srv;
    if(!srv.init())
    {
        printf("Failed to intialize server\n");
        return -1;
    }
    
    TLSConnection con;
    if(srv.accept(con))
    {
        printf("New connection from %s\n", con.get_address());
        char buffer[512];
        
        while(con.is_connected())
        {
            int read = con.receive(buffer, 511);
            if(read == 0)
            {
                break;
            }
            if(read != -1)
            {
                buffer[read] = '\0';
                printf("%s", buffer);
                
                sprintf(buffer, "HTTP/1.0 200 OK\r\nContent-Length: %d", strlen(page));
                strcat(buffer, "\r\n\r\n");
                strcat(buffer, page);
                
                con.send_all(buffer, strlen(buffer));
            }
            else
            {
                printf("error occured\n");
                break;
            }   
        }
        
        con.close();
    }
    eth.disconnect();
    
    return 0;
}