Skip to content

Commit 2502db9

Browse files
author
Seppo Takalo
authored
Merge pull request #11 from SeppoTakalo/TLSSocket
Add TLSSocket example
2 parents 75747df + 56e7088 commit 2502db9

File tree

3 files changed

+117
-0
lines changed

3 files changed

+117
-0
lines changed

TLSSocket/main.cpp

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
#include "mbed.h"
2+
#include "mbed_trace.h"
3+
4+
const char cert[] = \
5+
"-----BEGIN CERTIFICATE-----\n"
6+
"MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU\n"
7+
"MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs\n"
8+
"IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290\n"
9+
"MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux\n"
10+
"FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h\n"
11+
"bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v\n"
12+
"dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt\n"
13+
"H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9\n"
14+
"uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX\n"
15+
"mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX\n"
16+
"a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN\n"
17+
"E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0\n"
18+
"WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD\n"
19+
"VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0\n"
20+
"Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU\n"
21+
"cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx\n"
22+
"IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN\n"
23+
"AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH\n"
24+
"YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5\n"
25+
"6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC\n"
26+
"Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX\n"
27+
"c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a\n"
28+
"mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=\n"
29+
"-----END CERTIFICATE-----";
30+
31+
int main(void)
32+
{
33+
char *buffer = new char[256];
34+
nsapi_size_or_error_t result;
35+
nsapi_size_t size;
36+
const char query[] = "GET / HTTP/1.1\r\nHost: api.ipify.org\r\nConnection: close\r\n\r\n";
37+
38+
mbed_trace_init();
39+
40+
printf("TLSSocket Example.\n");
41+
printf("Mbed OS version: %d.%d.%d\n\n", MBED_MAJOR_VERSION, MBED_MINOR_VERSION, MBED_PATCH_VERSION);
42+
43+
NetworkInterface *net = NetworkInterface::get_default_instance();
44+
45+
if (!net) {
46+
printf("Error! No network inteface found.\n");
47+
return 0;
48+
}
49+
50+
printf("Connecting to network\n");
51+
result = net->connect();
52+
if (result != 0) {
53+
printf("Error! net->connect() returned: %d\n", result);
54+
return result;
55+
}
56+
57+
TLSSocket *socket = new TLSSocket;
58+
result = socket->set_root_ca_cert(cert);
59+
if (result != 0) {
60+
printf("Error: socket->set_root_ca_cert() returned %d\n", result);
61+
return result;
62+
}
63+
64+
result = socket->open(net);
65+
if (result != 0) {
66+
printf("Error! socket->open() returned: %d\n", result);
67+
return result;
68+
}
69+
70+
printf("Connecting to api.ipify.org\n");
71+
result = socket->connect("api.ipify.org", 443);
72+
if (result != 0) {
73+
printf("Error! socket->connect() returned: %d\n", result);
74+
goto DISCONNECT;
75+
}
76+
77+
// Send a simple http request
78+
size = strlen(query);
79+
result = socket->send(query+result, size);
80+
if (result != size) {
81+
printf("Error! socket->send() returned: %d\n", result);
82+
goto DISCONNECT;
83+
}
84+
85+
// Receieve an HTTP response and print out the response line
86+
while ((result = socket->recv(buffer, 255)) > 0) {
87+
buffer[result] = 0;
88+
printf("%s", buffer);
89+
}
90+
printf("\n");
91+
92+
if (result < 0) {
93+
printf("Error! socket->recv() returned: %d\n", result);
94+
goto DISCONNECT;
95+
}
96+
97+
98+
DISCONNECT:
99+
delete[] buffer;
100+
// Close the socket to return its memory and bring down the network interface
101+
socket->close();
102+
103+
// Bring down the ethernet interface
104+
net->disconnect();
105+
printf("Done\n");
106+
}

TLSSocket/mbed-os.lib

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
https://github.com/ARMmbed/mbed-os/#bf6f2c3c6434a6de9eb9511feffa5948b3d1f20f

TLSSocket/mbed_app.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"macros": ["MBEDTLS_SHA1_C"],
3+
"target_overrides": {
4+
"*": {
5+
"platform.stdio-convert-newlines": true,
6+
"mbed-trace.enable": 1,
7+
"rtos.main-thread-stack-size": 8192
8+
}
9+
}
10+
}

0 commit comments

Comments
 (0)