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@0:e9b7265b84af, 2013-09-18 (annotated)
- Committer:
- feb11
- Date:
- Wed Sep 18 09:21:51 2013 +0000
- Revision:
- 0:e9b7265b84af
initial import
Who changed what in which revision?
User | Revision | Line number | New 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 | } |