Skip to content

Commit 2c9b100

Browse files
committed
libraries/WiFi: Add WiFiWebClientTLS example.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
1 parent 5902b13 commit 2c9b100

File tree

2 files changed

+135
-0
lines changed

2 files changed

+135
-0
lines changed
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
/*
2+
Web client with single CA certificate test
3+
4+
This sketch demonstrates how to load your own TLS CA certificates
5+
and use them to establish a secure connection to a remote server,
6+
such as www.howsmyssl.com.
7+
*/
8+
9+
#include <WiFi.h>
10+
#include <ZephyrSSLClient.h>
11+
#include <zephyr/net/tls_credentials.h>
12+
#include "arduino_secrets.h"
13+
14+
char ssid[] = SECRET_SSID;
15+
char pass[] = SECRET_PASS;
16+
17+
int status = WL_IDLE_STATUS;
18+
19+
#define CA_CERTIFICATE_TAG 1
20+
21+
char server[] = "www.howsmyssl.com";
22+
int port = 443;
23+
24+
ZephyrSSLClient client;
25+
26+
// ISRG Root X1 (Let's Encrypt root CA certificate)
27+
const char isrg_root_x1[] =
28+
"-----BEGIN CERTIFICATE-----\n"
29+
"MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw\n"
30+
"TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh\n"
31+
"cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4\n"
32+
"WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu\n"
33+
"ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY\n"
34+
"MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc\n"
35+
"h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+\n"
36+
"0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U\n"
37+
"A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW\n"
38+
"T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH\n"
39+
"B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC\n"
40+
"B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv\n"
41+
"KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn\n"
42+
"OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn\n"
43+
"jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw\n"
44+
"qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI\n"
45+
"rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV\n"
46+
"HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq\n"
47+
"hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL\n"
48+
"ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ\n"
49+
"3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK\n"
50+
"NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5\n"
51+
"ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur\n"
52+
"TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC\n"
53+
"jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc\n"
54+
"oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq\n"
55+
"4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA\n"
56+
"mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d\n"
57+
"emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=\n"
58+
"-----END CERTIFICATE-----\n";
59+
60+
void setup() {
61+
Serial.begin(115200);
62+
while (!Serial) {
63+
;
64+
}
65+
66+
Serial.println("Adding CA certificate...");
67+
// Add the ISRG Root X1 CA certificate
68+
int ret = tls_credential_add(CA_CERTIFICATE_TAG, TLS_CREDENTIAL_CA_CERTIFICATE,
69+
isrg_root_x1, strlen(isrg_root_x1) + 1);
70+
71+
if (ret == 0) {
72+
Serial.println("CA certificate added successfully");
73+
} else {
74+
Serial.print("Failed to add CA certificate, error: ");
75+
Serial.println(ret);
76+
return;
77+
}
78+
79+
// Check for WiFi module
80+
if (WiFi.status() == WL_NO_SHIELD) {
81+
Serial.println("Communication with WiFi module failed!");
82+
return;
83+
}
84+
85+
// Connect to WiFi
86+
while (status != WL_CONNECTED) {
87+
Serial.print("Attempting to connect to SSID: ");
88+
Serial.println(ssid);
89+
status = WiFi.begin(ssid, pass);
90+
delay(3000);
91+
}
92+
93+
Serial.println("Connected to wifi");
94+
Serial.print("IP Address: ");
95+
Serial.println(WiFi.localIP());
96+
Serial.print("RSSI: ");
97+
Serial.println(WiFi.RSSI());
98+
99+
Serial.println("\nStarting connection to server...");
100+
101+
if (client.connect(server, port)) {
102+
Serial.println("Connected to server!");
103+
104+
// Make HTTP request
105+
client.println("GET /a/check HTTP/1.1");
106+
client.print("Host: ");
107+
client.println(server);
108+
client.println("Connection: close");
109+
client.println();
110+
} else {
111+
Serial.println("Connection failed!");
112+
}
113+
}
114+
115+
void loop() {
116+
// if there are incoming bytes available
117+
// from the server, read them and print them:
118+
while (client.available()) {
119+
char c = client.read();
120+
Serial.write(c);
121+
}
122+
123+
// if the server's disconnected, stop the client:
124+
if (!client.connected()) {
125+
Serial.println();
126+
Serial.println("disconnecting from server.");
127+
client.stop();
128+
129+
// do nothing forevermore:
130+
while (true)
131+
;
132+
}
133+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#define SECRET_SSID ""
2+
#define SECRET_PASS ""

0 commit comments

Comments
 (0)