Skip to content

Commit 97018a5

Browse files
authored
various minor web fixes (#8885)
* httpclient: use refs - httpserver: add chunks in examples * basic https client: update cert * debug log: read() returning -1 is usual and means "nothing to read" * emulation on host: SSL server has never been and is now working * style * move SSL server certs from examples into a single place with appropriate warnings * web-hello-servers: make chunks bigger * factorize template declaration * http-client: add getString(pre-reservation) * mock: add umm_info() * style * comment API in example * style * fix per review
1 parent d3c102e commit 97018a5

File tree

18 files changed

+251
-298
lines changed

18 files changed

+251
-298
lines changed

libraries/ESP8266HTTPClient/examples/BasicHttpsClient/BasicHttpsClient.ino

+1
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ void loop() {
6262
// file found at server
6363
if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
6464
String payload = https.getString();
65+
// String payload = https.getString(1024); // optionally pre-reserve string to avoid reallocations in chunk mode
6566
Serial.println(payload);
6667
}
6768
} else {

libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp

+16-16
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ bool HTTPClient::begin(WiFiClient &client, const String& host, uint16_t port, co
107107
_canReuse = false;
108108
disconnect(true);
109109
}
110-
110+
111111
_client = client.clone();
112112

113113
clear();
@@ -483,7 +483,7 @@ int HTTPClient::sendRequest(const char * type, const uint8_t * payload, size_t s
483483
//
484484
redirect = false;
485485
if (
486-
_followRedirects != HTTPC_DISABLE_FOLLOW_REDIRECTS &&
486+
_followRedirects != HTTPC_DISABLE_FOLLOW_REDIRECTS &&
487487
redirectCount < _redirectLimit &&
488488
_location.length() > 0
489489
) {
@@ -496,7 +496,7 @@ int HTTPClient::sendRequest(const char * type, const uint8_t * payload, size_t s
496496
// (the RFC require user to accept the redirection)
497497
_followRedirects == HTTPC_FORCE_FOLLOW_REDIRECTS ||
498498
// allow GET and HEAD methods without force
499-
!strcmp(type, "GET") ||
499+
!strcmp(type, "GET") ||
500500
!strcmp(type, "HEAD")
501501
) {
502502
redirectCount += 1;
@@ -631,20 +631,20 @@ WiFiClient* HTTPClient::getStreamPtr(void)
631631
* return all payload as String (may need lot of ram or trigger out of memory!)
632632
* @return String
633633
*/
634-
const String& HTTPClient::getString(void)
634+
const String& HTTPClient::getString(int reserve)
635635
{
636636
if (_payload) {
637637
return *_payload;
638638
}
639639

640640
_payload.reset(new StreamString());
641641

642-
if(_size > 0) {
643-
// try to reserve needed memory
644-
if(!_payload->reserve((_size + 1))) {
645-
DEBUG_HTTPCLIENT("[HTTP-Client][getString] not enough memory to reserve a string! need: %d\n", (_size + 1));
646-
return *_payload;
647-
}
642+
if (_size > 0 && _size > reserve)
643+
reserve = _size;
644+
645+
if (reserve > 0 && !_payload->reserve(reserve)) {
646+
DEBUG_HTTPCLIENT("[HTTP-Client][getString] not enough memory to reserve a string! need: %d\n", reserve);
647+
return *_payload;
648648
}
649649

650650
writeToStream(_payload.get());
@@ -732,30 +732,30 @@ void HTTPClient::collectHeaders(const char* headerKeys[], const size_t headerKey
732732
}
733733
}
734734

735-
String HTTPClient::header(const char* name)
735+
const String& HTTPClient::header(const char* name)
736736
{
737737
for(size_t i = 0; i < _headerKeysCount; ++i) {
738738
if(_currentHeaders[i].key == name) {
739739
return _currentHeaders[i].value;
740740
}
741741
}
742-
return String();
742+
return emptyString;
743743
}
744744

745-
String HTTPClient::header(size_t i)
745+
const String& HTTPClient::header(size_t i)
746746
{
747747
if(i < _headerKeysCount) {
748748
return _currentHeaders[i].value;
749749
}
750-
return String();
750+
return emptyString;
751751
}
752752

753-
String HTTPClient::headerName(size_t i)
753+
const String& HTTPClient::headerName(size_t i)
754754
{
755755
if(i < _headerKeysCount) {
756756
return _currentHeaders[i].key;
757757
}
758-
return String();
758+
return emptyString;
759759
}
760760

761761
int HTTPClient::headers()

libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.h

+10-4
Original file line numberDiff line numberDiff line change
@@ -203,9 +203,9 @@ class HTTPClient
203203

204204
/// Response handling
205205
void collectHeaders(const char* headerKeys[], const size_t headerKeysCount);
206-
String header(const char* name); // get request header value by name
207-
String header(size_t i); // get request header value by number
208-
String headerName(size_t i); // get request header name by number
206+
const String& header(const char* name); // get request header value by name
207+
const String& header(size_t i); // get request header value by number
208+
const String& headerName(size_t i); // get request header name by number
209209
int headers(); // get header count
210210
bool hasHeader(const char* name); // check if header exists
211211

@@ -217,7 +217,13 @@ class HTTPClient
217217
WiFiClient* getStreamPtr(void);
218218
template <typename S> int writeToPrint(S* print) [[deprecated]] { return writeToStream(print); }
219219
template <typename S> int writeToStream(S* output);
220-
const String& getString(void);
220+
221+
// In case of chunks = when size cannot be known in advance
222+
// by the library, it might be useful to pre-reserve enough
223+
// space instead of offending memory with a growing String
224+
const String& getString() { return getString(0); }
225+
const String& getString(int reserve);
226+
221227
static String errorToString(int error);
222228

223229
protected:

libraries/ESP8266WebServer/examples/HelloServer/HelloServer.ino

+23
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ const char* password = STAPSK;
1313

1414
ESP8266WebServer server(80);
1515

16+
String bigChunk;
17+
1618
const int led = 13;
1719

1820
void handleRoot() {
@@ -36,6 +38,16 @@ void handleNotFound() {
3638
digitalWrite(led, 0);
3739
}
3840

41+
void handleChunked() {
42+
server.chunkedResponseModeStart(200, F("text/html"));
43+
44+
server.sendContent(bigChunk);
45+
server.sendContent(F("chunk 2"));
46+
server.sendContent(bigChunk);
47+
48+
server.chunkedResponseFinalize();
49+
}
50+
3951
void setup(void) {
4052
pinMode(led, OUTPUT);
4153
digitalWrite(led, 0);
@@ -80,6 +92,8 @@ void setup(void) {
8092
server.send(200, "image/gif", gif_colored, sizeof(gif_colored));
8193
});
8294

95+
server.on("/chunks", handleChunked);
96+
8397
server.onNotFound(handleNotFound);
8498

8599
/////////////////////////////////////////////////////////
@@ -142,6 +156,15 @@ void setup(void) {
142156
// Hook examples
143157
/////////////////////////////////////////////////////////
144158

159+
// prepare chunk in ram for sending
160+
constexpr int chunkLen = 4000; // ~4KB chunk
161+
bigChunk.reserve(chunkLen);
162+
bigChunk = F("chunk of len ");
163+
bigChunk += chunkLen;
164+
String piece = F("-blah");
165+
while (bigChunk.length() < chunkLen - piece.length())
166+
bigChunk += piece;
167+
145168
server.begin();
146169
Serial.println("HTTP server started");
147170
}

libraries/ESP8266WebServer/examples/HelloServerBearSSL/HelloServerBearSSL.ino

+25-53
Original file line numberDiff line numberDiff line change
@@ -27,59 +27,10 @@ const char* password = STAPSK;
2727
BearSSL::ESP8266WebServerSecure server(443);
2828
BearSSL::ServerSessions serverCache(5);
2929

30-
static const char serverCert[] PROGMEM = R"EOF(
31-
-----BEGIN CERTIFICATE-----
32-
MIIDSzCCAjMCCQD2ahcfZAwXxDANBgkqhkiG9w0BAQsFADCBiTELMAkGA1UEBhMC
33-
VVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU9yYW5nZSBDb3VudHkx
34-
EDAOBgNVBAoMB1ByaXZhZG8xGjAYBgNVBAMMEXNlcnZlci56bGFiZWwuY29tMR8w
35-
HQYJKoZIhvcNAQkBFhBlYXJsZUB6bGFiZWwuY29tMB4XDTE4MDMwNjA1NDg0NFoX
36-
DTE5MDMwNjA1NDg0NFowRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3Rh
37-
dGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZI
38-
hvcNAQEBBQADggEPADCCAQoCggEBAPVKBwbZ+KDSl40YCDkP6y8Sv4iNGvEOZg8Y
39-
X7sGvf/xZH7UiCBWPFIRpNmDSaZ3yjsmFqm6sLiYSGSdrBCFqdt9NTp2r7hga6Sj
40-
oASSZY4B9pf+GblDy5m10KDx90BFKXdPMCLT+o76Nx9PpCvw13A848wHNG3bpBgI
41-
t+w/vJCX3bkRn8yEYAU6GdMbYe7v446hX3kY5UmgeJFr9xz1kq6AzYrMt/UHhNzO
42-
S+QckJaY0OGWvmTNspY3xCbbFtIDkCdBS8CZAw+itnofvnWWKQEXlt6otPh5njwy
43-
+O1t/Q+Z7OMDYQaH02IQx3188/kW3FzOY32knER1uzjmRO+jhA8CAwEAATANBgkq
44-
hkiG9w0BAQsFAAOCAQEAnDrROGRETB0woIcI1+acY1yRq4yAcH2/hdq2MoM+DCyM
45-
E8CJaOznGR9ND0ImWpTZqomHOUkOBpvu7u315blQZcLbL1LfHJGRTCHVhvVrcyEb
46-
fWTnRtAQdlirUm/obwXIitoz64VSbIVzcqqfg9C6ZREB9JbEX98/9Wp2gVY+31oC
47-
JfUvYadSYxh3nblvA4OL+iEZiW8NE3hbW6WPXxvS7Euge0uWMPc4uEcnsE0ZVG3m
48-
+TGimzSdeWDvGBRWZHXczC2zD4aoE5vrl+GD2i++c6yjL/otHfYyUpzUfbI2hMAA
49-
5tAF1D5vAAwA8nfPysumlLsIjohJZo4lgnhB++AlOg==
50-
-----END CERTIFICATE-----
51-
)EOF";
52-
53-
static const char serverKey[] PROGMEM = R"EOF(
54-
-----BEGIN RSA PRIVATE KEY-----
55-
MIIEpQIBAAKCAQEA9UoHBtn4oNKXjRgIOQ/rLxK/iI0a8Q5mDxhfuwa9//FkftSI
56-
IFY8UhGk2YNJpnfKOyYWqbqwuJhIZJ2sEIWp2301OnavuGBrpKOgBJJljgH2l/4Z
57-
uUPLmbXQoPH3QEUpd08wItP6jvo3H0+kK/DXcDzjzAc0bdukGAi37D+8kJfduRGf
58-
zIRgBToZ0xth7u/jjqFfeRjlSaB4kWv3HPWSroDNisy39QeE3M5L5ByQlpjQ4Za+
59-
ZM2yljfEJtsW0gOQJ0FLwJkDD6K2eh++dZYpAReW3qi0+HmePDL47W39D5ns4wNh
60-
BofTYhDHfXzz+RbcXM5jfaScRHW7OOZE76OEDwIDAQABAoIBAQDKov5NFbNFQNR8
61-
djcM1O7Is6dRaqiwLeH4ZH1pZ3d9QnFwKanPdQ5eCj9yhfhJMrr5xEyCqT0nMn7T
62-
yEIGYDXjontfsf8WxWkH2TjvrfWBrHOIOx4LJEvFzyLsYxiMmtZXvy6YByD+Dw2M
63-
q2GH/24rRdI2klkozIOyazluTXU8yOsSGxHr/aOa9/sZISgLmaGOOuKI/3Zqjdhr
64-
eHeSqoQFt3xXa8jw01YubQUDw/4cv9rk2ytTdAoQUimiKtgtjsggpP1LTq4xcuqN
65-
d4jWhTcnorWpbD2cVLxrEbnSR3VuBCJEZv5axg5ZPxLEnlcId8vMtvTRb5nzzszn
66-
geYUWDPhAoGBAPyKVNqqwQl44oIeiuRM2FYenMt4voVaz3ExJX2JysrG0jtCPv+Y
67-
84R6Cv3nfITz3EZDWp5sW3OwoGr77lF7Tv9tD6BptEmgBeuca3SHIdhG2MR+tLyx
68-
/tkIAarxQcTGsZaSqra3gXOJCMz9h2P5dxpdU+0yeMmOEnAqgQ8qtNBfAoGBAPim
69-
RAtnrd0WSlCgqVGYFCvDh1kD5QTNbZc+1PcBHbVV45EmJ2fLXnlDeplIZJdYxmzu
70-
DMOxZBYgfeLY9exje00eZJNSj/csjJQqiRftrbvYY7m5njX1kM5K8x4HlynQTDkg
71-
rtKO0YZJxxmjRTbFGMegh1SLlFLRIMtehNhOgipRAoGBAPnEEpJGCS9GGLfaX0HW
72-
YqwiEK8Il12q57mqgsq7ag7NPwWOymHesxHV5mMh/Dw+NyBi4xAGWRh9mtrUmeqK
73-
iyICik773Gxo0RIqnPgd4jJWN3N3YWeynzulOIkJnSNx5BforOCTc3uCD2s2YB5X
74-
jx1LKoNQxLeLRN8cmpIWicf/AoGBANjRSsZTKwV9WWIDJoHyxav/vPb+8WYFp8lZ
75-
zaRxQbGM6nn4NiZI7OF62N3uhWB/1c7IqTK/bVHqFTuJCrCNcsgld3gLZ2QWYaMV
76-
kCPgaj1BjHw4AmB0+EcajfKilcqtSroJ6MfMJ6IclVOizkjbByeTsE4lxDmPCDSt
77-
/9MKanBxAoGAY9xo741Pn9WUxDyRplww606ccdNf/ksHWNc/Y2B5SPwxxSnIq8nO
78-
j01SmsCUYVFAgZVOTiiycakjYLzxlc6p8BxSVqy6LlJqn95N8OXoQ+bkwUux/ekg
79-
gz5JWYhbD6c38khSzJb0pNXCo3EuYAVa36kDM96k1BtWuhRS10Q1VXk=
80-
-----END RSA PRIVATE KEY-----
81-
)EOF";
30+
#define USING_INSECURE_CERTS_AND_KEYS_AND_CAS 1
31+
#include <ssl-tls-ca-key-cert-example.h>
8232

33+
String bigChunk;
8334

8435
const int led = 13;
8536

@@ -104,6 +55,16 @@ void handleNotFound() {
10455
digitalWrite(led, 0);
10556
}
10657

58+
void handleChunked() {
59+
server.chunkedResponseModeStart(200, F("text/html"));
60+
61+
server.sendContent(bigChunk);
62+
server.sendContent(F("chunk 2"));
63+
server.sendContent(bigChunk);
64+
65+
server.chunkedResponseFinalize();
66+
}
67+
10768
void setup(void) {
10869
pinMode(led, OUTPUT);
10970
digitalWrite(led, 0);
@@ -127,7 +88,7 @@ void setup(void) {
12788

12889
if (MDNS.begin("esp8266")) { Serial.println("MDNS responder started"); }
12990

130-
server.getServer().setRSACert(new BearSSL::X509List(serverCert), new BearSSL::PrivateKey(serverKey));
91+
server.getServer().setRSACert(new BearSSL::X509List(server_cert), new BearSSL::PrivateKey(server_private_key));
13192

13293
// Cache SSL sessions to accelerate the TLS handshake.
13394
server.getServer().setCache(&serverCache);
@@ -138,8 +99,19 @@ void setup(void) {
13899
server.send(200, "text/plain", "this works as well");
139100
});
140101

102+
server.on("/chunks", handleChunked);
103+
141104
server.onNotFound(handleNotFound);
142105

106+
// prepare chunk in ram for sending
107+
constexpr int chunkLen = 4000; // ~4KB chunk
108+
bigChunk.reserve(chunkLen);
109+
bigChunk = F("chunk of len ");
110+
bigChunk += chunkLen;
111+
String piece = F("-blah");
112+
while (bigChunk.length() < chunkLen - piece.length())
113+
bigChunk += piece;
114+
143115
server.begin();
144116
Serial.println("HTTPS server started");
145117
}

libraries/ESP8266WiFi/examples/BearSSL_Server/BearSSL_Server.ino

+2-87
Original file line numberDiff line numberDiff line change
@@ -50,93 +50,8 @@ BearSSL::WiFiServerSecure server(443);
5050

5151
//#define USE_EC // Enable Elliptic Curve signed cert
5252

53-
#ifndef USE_EC
54-
55-
// The server's private key which must be kept secret
56-
const char server_private_key[] PROGMEM = R"EOF(
57-
-----BEGIN PRIVATE KEY-----
58-
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDJblrg47vF3qlE
59-
NMRM7uG8QwE6v/AKpxOL+CLb/32s+dW9Psgf+oZKJgzGkYUoJdWpLitTmTZeykAs
60-
Sq7Iax5Rq/mGqyAc7oJAUUAupfNRU0KwkD1XqtpQWEFoiqoIqZbOZ4CRX5q8z/MN
61-
BH1aPVBMKaL33uwknkgJBzxwZJ2+uGKxRJt8+koj1CXgUCk5lEAEEG5kqE326MjN
62-
O/c4gBqulBV8AIoq6/trY3apTS7FEOiN47qh1PVzoBm/oGVwXvoZAZOj7+gGGo91
63-
sBC5oHJy5Y2BOcNB3opTNXQTiK3Z80b5wc3iQS+h83qAfHwhs6tfAW22WkAf+jtt
64-
x8KdRWFNAgMBAAECggEAPd+jFL9/d1lc/zGCNuuN9YlTgFti/bKyo2UWOCOz1AVu
65-
LVJyoLgQtggYFoqur1Vn2y7uaiB+/gD8U16hb7jPuGCuJjq8g4aUBfOvVmTtZ8a+
66-
joPQA/TcWJ+zf8xQTJbjVwWeDYmje2oZC5+cbbK1zp9fiuoz+U+RawyI+TE+700i
67-
ESCmsKFIHy2Ifruva8HgcPYIPpZ9zLxJj0Dii+WDs7zM9h2dzO4HfImSG/DPmgoV
68-
ydo9IcrUE7KoMLa8Uo7u1b2h6BnTn7GfYiMSUsYcYR3CnpDBknBWjZMwrV0uqv9q
69-
TbVc4QXt+c1q89HDg7BIJaOAzbCvJfgAfXUqZyqwQQKBgQD5ENFjicUzCqPw7fOy
70-
Q5Z8GeUbIJ5urT1MheAq7SPd2kK8TsO3hUjNC0LLNSyKPs6gsYaIiObO3wDGeZZk
71-
xeHBhrUVaz2nIjI7TrnCUpMDOrdxcPr4bc+ifV5YT4W3OFBWQ9chQEx3Nm3DbiX4
72-
fpno34AiFrJF791JkTPFj9OIUQKBgQDPCgcae1pQr77q+GL5Q2tku3RrE4cWtExf
73-
m8DzAb4Vxe3EhPz8bVr+71rqr/KqNfG1uKE3sT0fhB6VMTkHTOQU13jDrvpPUS3W
74-
Vg8cVr5/+iiyF0xb+W8LQ+GVdR5xnMPSZHUtXyURvtzT4nnTAlAtN7lEytX9BzbX
75-
xhltOOwGPQKBgA/Y/BnDSGLpCGlqGpl7J3YaB7PkLXCJYV8fHZZdpGyXWKu2r0lc
76-
F7fEQanAZmcde/RJl2/UlisPkXMPhXxAAw9XTOph+nhJ+rw/VB6DNot8DvQO5kks
77-
Y4vJQlmIJc/0q1fx1RxuhO8I7Y8D0TKwi4Z/wh1pKEq+6mul649kiWchAoGAWn8B
78-
l9uvIHGRO9eSO23ytTcSrfL9Kzln4KqN7iom0hGP2kRe6F9MVP5+ePKrWSb3Hf0z
79-
ysoX83ymeYPob352e32rda04EA9lv7giJrrrzbikrSNt5w3iMcRcCB4HTpW9Kmtq
80-
pIhgBZ+tmpf1s/vg28LtoloeqtjKagpW9tzYnekCgYAZFZ84EGqS9SHw5LELgGY4
81-
mQLMwbYZ6wBMA2PlqYi/17hoAVWz37mLDjtWDB4ir78QMoGbesQVtK9W/4vzmez4
82-
ZLKlffdL5tCtA08Gq9aond1z83Xdnh1UjtwHIJvJPc/AoCFW1r5skv/G6acAk6I2
83-
Zs0aiirNGTEymRX4rw26Qg==
84-
-----END PRIVATE KEY-----
85-
)EOF";
86-
87-
// The server's public certificate which must be shared
88-
const char server_cert[] PROGMEM = R"EOF(
89-
-----BEGIN CERTIFICATE-----
90-
MIIDUTCCAjmgAwIBAgIJAOcfK7c3JQtnMA0GCSqGSIb3DQEBCwUAMD8xCzAJBgNV
91-
BAYTAkFVMQ0wCwYDVQQIDAROb25lMQ0wCwYDVQQKDAROb25lMRIwEAYDVQQDDAlF
92-
U1BTZXJ2ZXIwHhcNMTgwMzE0MTg1NTQ1WhcNMjkwNTMxMTg1NTQ1WjA/MQswCQYD
93-
VQQGEwJBVTENMAsGA1UECAwETm9uZTENMAsGA1UECgwETm9uZTESMBAGA1UEAwwJ
94-
RVNQU2VydmVyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyW5a4OO7
95-
xd6pRDTETO7hvEMBOr/wCqcTi/gi2/99rPnVvT7IH/qGSiYMxpGFKCXVqS4rU5k2
96-
XspALEquyGseUav5hqsgHO6CQFFALqXzUVNCsJA9V6raUFhBaIqqCKmWzmeAkV+a
97-
vM/zDQR9Wj1QTCmi997sJJ5ICQc8cGSdvrhisUSbfPpKI9Ql4FApOZRABBBuZKhN
98-
9ujIzTv3OIAarpQVfACKKuv7a2N2qU0uxRDojeO6odT1c6AZv6BlcF76GQGTo+/o
99-
BhqPdbAQuaBycuWNgTnDQd6KUzV0E4it2fNG+cHN4kEvofN6gHx8IbOrXwFttlpA
100-
H/o7bcfCnUVhTQIDAQABo1AwTjAdBgNVHQ4EFgQUBEk8LqgV+sMjdl/gpP1OlcNW
101-
14EwHwYDVR0jBBgwFoAUBEk8LqgV+sMjdl/gpP1OlcNW14EwDAYDVR0TBAUwAwEB
102-
/zANBgkqhkiG9w0BAQsFAAOCAQEAO1IrqW21KfzrxKmtuDSHdH5YrC3iOhiF/kaK
103-
xXbigdtw6KHW/pIhGiA3BY5u+d5eVuHTR5YSwIbbRvOjuoNBATAw/8f5mt5Wa+C3
104-
PDpLNxDys561VbCW45RMQ0x5kybvDYi0D1R/grqZ18veuFSfE6QMJ/mzvr575fje
105-
8r5Ou0IZOYYF8cyqG5rA4U7BYXEnH44VgwlpkF8pitPsnyUWaAYqE0KnZ0qw0Py4
106-
HCkfGJNlNOOamnr6KakVlocwKY0SdxcLoXSs5ogTQvTSrAOjwcm1RA0hOCXr8f/f
107-
UsQIIGpPVh1plR1vYNndDeBpRJSFkoJTkgAIrlFzSMwNebU0pg==
108-
-----END CERTIFICATE-----
109-
)EOF";
110-
111-
#else
112-
const char server_cert[] PROGMEM = R"EOF(
113-
-----BEGIN CERTIFICATE-----
114-
MIIB0zCCAXqgAwIBAgIJALANi2eTiGD/MAoGCCqGSM49BAMCMEUxCzAJBgNVBAYT
115-
AkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRn
116-
aXRzIFB0eSBMdGQwHhcNMTkwNjExMjIyOTU2WhcNMjAwNjEwMjIyOTU2WjBFMQsw
117-
CQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJu
118-
ZXQgV2lkZ2l0cyBQdHkgTHRkMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExIkZ
119-
w7zjk6TGcScff1PAehuEGmKZTf8VfnkjyJH0IbBgZibZ+qwYGBEnkz4KpKv7TkHo
120-
W+j7F5EMcLcSrUIpy6NTMFEwHQYDVR0OBBYEFI6A0f+g0HyxUT6xrbVmRU79urbj
121-
MB8GA1UdIwQYMBaAFI6A0f+g0HyxUT6xrbVmRU79urbjMA8GA1UdEwEB/wQFMAMB
122-
Af8wCgYIKoZIzj0EAwIDRwAwRAIgWvy7ofQTGZMNqxUfe4gjtkU+C9AkQtaOMW2U
123-
5xFFSvcCICvcGrQpoi7tRTq8xsXFmr8MYWgQTpVAtj6opXMQct/l
124-
-----END CERTIFICATE-----
125-
)EOF";
126-
127-
// The server's private key which must be kept secret
128-
const char server_private_key[] PROGMEM = R"EOF(
129-
-----BEGIN EC PARAMETERS-----
130-
BggqhkjOPQMBBw==
131-
-----END EC PARAMETERS-----
132-
-----BEGIN EC PRIVATE KEY-----
133-
MHcCAQEEIKyLR9/NT7ZdWM+2rklehveuk+jyIHJ+P8ZUQ392HOYvoAoGCCqGSM49
134-
AwEHoUQDQgAExIkZw7zjk6TGcScff1PAehuEGmKZTf8VfnkjyJH0IbBgZibZ+qwY
135-
GBEnkz4KpKv7TkHoW+j7F5EMcLcSrUIpyw==
136-
-----END EC PRIVATE KEY-----
137-
)EOF";
138-
139-
#endif
53+
#define USING_INSECURE_CERTS_AND_KEYS_AND_CAS 1
54+
#include <ssl-tls-ca-key-cert-example.h>
14055

14156
#define CACHE_SIZE 5 // Number of sessions to cache.
14257
#define USE_CACHE // Enable SSL session caching.

libraries/ESP8266WiFi/examples/BearSSL_Server/DO-NOT-USE-THESE-CERTS-IN-YOUR-OWN-APPS

Whitespace-only changes.

0 commit comments

Comments
 (0)