Skip to content

Commit d6c75ad

Browse files
committed
new ssl cert, NetWorkClient update
1 parent 7121b05 commit d6c75ad

File tree

1 file changed

+54
-43
lines changed

1 file changed

+54
-43
lines changed

src/network_interfaces/Wippersnapper_ESP32.h

Lines changed: 54 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
* please support Adafruit and open-source hardware by purchasing
99
* products from Adafruit!
1010
*
11-
* Copyright (c) Brent Rubell 2020-2021 for Adafruit Industries.
11+
* Copyright (c) Brent Rubell 2020-2024 for Adafruit Industries.
1212
*
1313
* MIT license, all text here must be included in any redistribution.
1414
*
@@ -25,7 +25,8 @@
2525
#include "Arduino.h"
2626
#include "WiFi.h"
2727
#include "WiFiMulti.h"
28-
#include <WiFiClientSecure.h>
28+
#include <NetworkClient.h>
29+
#include <NetworkClientSecure.h>
2930
extern Wippersnapper WS;
3031

3132
/****************************************************************************/
@@ -44,7 +45,6 @@ class Wippersnapper_ESP32 : public Wippersnapper {
4445
Wippersnapper_ESP32() : Wippersnapper() {
4546
_ssid = 0;
4647
_pass = 0;
47-
_mqtt_client = new WiFiClientSecure;
4848
}
4949

5050
/**************************************************************************/
@@ -53,8 +53,10 @@ class Wippersnapper_ESP32 : public Wippersnapper {
5353
*/
5454
/**************************************************************************/
5555
~Wippersnapper_ESP32() {
56-
if (_mqtt_client)
57-
delete _mqtt_client;
56+
if (_mqtt_client_secure)
57+
delete _mqtt_client_secure;
58+
if (_mqtt_client_insecure)
59+
delete _mqtt_client_insecure;
5860
}
5961

6062
/********************************************************/
@@ -156,18 +158,24 @@ class Wippersnapper_ESP32 : public Wippersnapper {
156158
*/
157159
/********************************************************/
158160
void setupMQTTClient(const char *clientID) {
159-
if (strcmp(WS._config.aio_url, "io.adafruit.com") == 0) {
160-
_mqtt_client->setCACert(_aio_root_ca_prod);
161-
} else if (strcmp(WS._config.aio_url, "io.adafruit.us") == 0) {
162-
_mqtt_client->setCACert(_aio_root_ca_staging);
161+
if (strcmp(WS._config.aio_url, "io.adafruit.com") == 0 ||
162+
strcmp(WS._config.aio_url, "io.adafruit.us") == 0) {
163+
_mqtt_client_secure = new NetworkClientSecure();
164+
_mqtt_client_secure->setCACert(
165+
strcmp(WS._config.aio_url, "io.adafruit.com") == 0
166+
? _aio_root_ca_prod
167+
: _aio_root_ca_staging);
168+
WS._mqtt = new Adafruit_MQTT_Client(
169+
_mqtt_client_secure, WS._config.aio_url, WS._config.io_port, clientID,
170+
WS._config.aio_user, WS._config.aio_key);
163171
} else {
164-
_mqtt_client->setInsecure();
172+
// Insecure connections require a NetworkClient object rather than a
173+
// NetworkClientSecure object
174+
_mqtt_client_insecure = new NetworkClient();
175+
WS._mqtt = new Adafruit_MQTT_Client(
176+
_mqtt_client_insecure, WS._config.aio_url, WS._config.io_port,
177+
clientID, WS._config.aio_user, WS._config.aio_key);
165178
}
166-
167-
// Construct MQTT client
168-
WS._mqtt = new Adafruit_MQTT_Client(
169-
_mqtt_client, WS._config.aio_url, WS._config.io_port, clientID,
170-
WS._config.aio_user, WS._config.aio_key);
171179
}
172180

173181
/********************************************************/
@@ -198,37 +206,40 @@ class Wippersnapper_ESP32 : public Wippersnapper {
198206
const char *connectionType() { return "ESP32"; }
199207

200208
protected:
201-
const char *_ssid; ///< WiFi SSID
202-
const char *_pass; ///< WiFi password
203-
WiFiClientSecure *_mqtt_client; ///< Pointer to a WiFi client object (TLS/SSL)
204-
WiFiMulti _wifiMulti; ///< WiFiMulti object for multi-network mode
209+
const char *_ssid; ///< WiFi SSID
210+
const char *_pass; ///< WiFi password
211+
NetworkClientSecure
212+
*_mqtt_client_secure; ///< Pointer to a secure network client object
213+
NetworkClient
214+
*_mqtt_client_insecure; ///< Pointer to an insecure network client object
215+
WiFiMulti _wifiMulti; ///< WiFiMulti object for multi-network mode
205216

206217
const char *_aio_root_ca_staging =
207218
"-----BEGIN CERTIFICATE-----\n"
208-
"MIIEZTCCA02gAwIBAgIQQAF1BIMUpMghjISpDBbN3zANBgkqhkiG9w0BAQsFADA/\n"
209-
"MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT\n"
210-
"DkRTVCBSb290IENBIFgzMB4XDTIwMTAwNzE5MjE0MFoXDTIxMDkyOTE5MjE0MFow\n"
211-
"MjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxCzAJBgNVBAMT\n"
212-
"AlIzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuwIVKMz2oJTTDxLs\n"
213-
"jVWSw/iC8ZmmekKIp10mqrUrucVMsa+Oa/l1yKPXD0eUFFU1V4yeqKI5GfWCPEKp\n"
214-
"Tm71O8Mu243AsFzzWTjn7c9p8FoLG77AlCQlh/o3cbMT5xys4Zvv2+Q7RVJFlqnB\n"
215-
"U840yFLuta7tj95gcOKlVKu2bQ6XpUA0ayvTvGbrZjR8+muLj1cpmfgwF126cm/7\n"
216-
"gcWt0oZYPRfH5wm78Sv3htzB2nFd1EbjzK0lwYi8YGd1ZrPxGPeiXOZT/zqItkel\n"
217-
"/xMY6pgJdz+dU/nPAeX1pnAXFK9jpP+Zs5Od3FOnBv5IhR2haa4ldbsTzFID9e1R\n"
218-
"oYvbFQIDAQABo4IBaDCCAWQwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8E\n"
219-
"BAMCAYYwSwYIKwYBBQUHAQEEPzA9MDsGCCsGAQUFBzAChi9odHRwOi8vYXBwcy5p\n"
220-
"ZGVudHJ1c3QuY29tL3Jvb3RzL2RzdHJvb3RjYXgzLnA3YzAfBgNVHSMEGDAWgBTE\n"
221-
"p7Gkeyxx+tvhS5B1/8QVYIWJEDBUBgNVHSAETTBLMAgGBmeBDAECATA/BgsrBgEE\n"
222-
"AYLfEwEBATAwMC4GCCsGAQUFBwIBFiJodHRwOi8vY3BzLnJvb3QteDEubGV0c2Vu\n"
223-
"Y3J5cHQub3JnMDwGA1UdHwQ1MDMwMaAvoC2GK2h0dHA6Ly9jcmwuaWRlbnRydXN0\n"
224-
"LmNvbS9EU1RST09UQ0FYM0NSTC5jcmwwHQYDVR0OBBYEFBQusxe3WFbLrlAJQOYf\n"
225-
"r52LFMLGMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjANBgkqhkiG9w0B\n"
226-
"AQsFAAOCAQEA2UzgyfWEiDcx27sT4rP8i2tiEmxYt0l+PAK3qB8oYevO4C5z70kH\n"
227-
"ejWEHx2taPDY/laBL21/WKZuNTYQHHPD5b1tXgHXbnL7KqC401dk5VvCadTQsvd8\n"
228-
"S8MXjohyc9z9/G2948kLjmE6Flh9dDYrVYA9x2O+hEPGOaEOa1eePynBgPayvUfL\n"
229-
"qjBstzLhWVQLGAkXXmNs+5ZnPBxzDJOLxhF2JIbeQAcH5H0tZrUlo5ZYyOqA7s9p\n"
230-
"O5b85o3AM/OJ+CktFBQtfvBhcJVd9wvlwPsk+uyOy2HI7mNxKKgsBTt375teA2Tw\n"
231-
"UdHkhVNcsAKX1H7GNNLOEADksd86wuoXvg==\n"
219+
"MIIEVzCCAj+gAwIBAgIRALBXPpFzlydw27SHyzpFKzgwDQYJKoZIhvcNAQELBQAw\n"
220+
"TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh\n"
221+
"cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw\n"
222+
"WhcNMjcwMzEyMjM1OTU5WjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg\n"
223+
"RW5jcnlwdDELMAkGA1UEAxMCRTYwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATZ8Z5G\n"
224+
"h/ghcWCoJuuj+rnq2h25EqfUJtlRFLFhfHWWvyILOR/VvtEKRqotPEoJhC6+QJVV\n"
225+
"6RlAN2Z17TJOdwRJ+HB7wxjnzvdxEP6sdNgA1O1tHHMWMxCcOrLqbGL0vbijgfgw\n"
226+
"gfUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcD\n"
227+
"ATASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSTJ0aYA6lRaI6Y1sRCSNsj\n"
228+
"v1iU0jAfBgNVHSMEGDAWgBR5tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcB\n"
229+
"AQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0g\n"
230+
"BAwwCjAIBgZngQwBAgEwJwYDVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVu\n"
231+
"Y3Iub3JnLzANBgkqhkiG9w0BAQsFAAOCAgEAfYt7SiA1sgWGCIpunk46r4AExIRc\n"
232+
"MxkKgUhNlrrv1B21hOaXN/5miE+LOTbrcmU/M9yvC6MVY730GNFoL8IhJ8j8vrOL\n"
233+
"pMY22OP6baS1k9YMrtDTlwJHoGby04ThTUeBDksS9RiuHvicZqBedQdIF65pZuhp\n"
234+
"eDcGBcLiYasQr/EO5gxxtLyTmgsHSOVSBcFOn9lgv7LECPq9i7mfH3mpxgrRKSxH\n"
235+
"pOoZ0KXMcB+hHuvlklHntvcI0mMMQ0mhYj6qtMFStkF1RpCG3IPdIwpVCQqu8GV7\n"
236+
"s8ubknRzs+3C/Bm19RFOoiPpDkwvyNfvmQ14XkyqqKK5oZ8zhD32kFRQkxa8uZSu\n"
237+
"h4aTImFxknu39waBxIRXE4jKxlAmQc4QjFZoq1KmQqQg0J/1JF8RlFvJas1VcjLv\n"
238+
"YlvUB2t6npO6oQjB3l+PNf0DpQH7iUx3Wz5AjQCi6L25FjyE06q6BZ/QlmtYdl/8\n"
239+
"ZYao4SRqPEs/6cAiF+Qf5zg2UkaWtDphl1LKMuTNLotvsX99HP69V2faNyegodQ0\n"
240+
"LyTApr/vT01YPE46vNsDLgK+4cL6TrzC/a4WcmF5SRJ938zrv/duJHLXQIku5v0+\n"
241+
"EwOy59Hdm0PT/Er/84dDV0CSjdR/2XuZM3kpysSKLgD1cKiDA+IRguODCxfO9cyY\n"
242+
"Ig46v9mFmBvyH04=\n"
232243
"-----END CERTIFICATE-----\n"; ///< Root certificate for io.adafruit.us
233244

234245
const char *_aio_root_ca_prod =

0 commit comments

Comments
 (0)