Skip to content

Commit 65c861a

Browse files
lbernstoneme-no-dev
authored andcommitted
Added loadCert methods to WiFiClientSecure (#1959)
1 parent f6a71da commit 65c861a

File tree

2 files changed

+51
-0
lines changed

2 files changed

+51
-0
lines changed

Diff for: libraries/WiFiClientSecure/src/WiFiClientSecure.cpp

+45
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,51 @@ bool WiFiClientSecure::verify(const char* fp, const char* domain_name)
230230
return verify_ssl_fingerprint(sslclient, fp, domain_name);
231231
}
232232

233+
char *WiFiClientSecure::_streamLoad(Stream& stream, size_t size) {
234+
char *dest = (char*)malloc(size);
235+
if (!dest) {
236+
return nullptr;
237+
}
238+
if (size != stream.readBytes(dest, size)) {
239+
free(dest);
240+
return nullptr;
241+
}
242+
char ret[size+1];
243+
snprintf(ret, size, "%s", dest);
244+
free(dest);
245+
return ret;
246+
}
247+
248+
bool WiFiClientSecure::loadCACert(Stream& stream, size_t size) {
249+
char *dest = _streamLoad(stream, size);
250+
bool ret = false;
251+
if (dest) {
252+
setCACert(dest);
253+
ret = true;
254+
}
255+
return ret;
256+
}
257+
258+
bool WiFiClientSecure::loadCertificate(Stream& stream, size_t size) {
259+
char *dest = _streamLoad(stream, size);
260+
bool ret = false;
261+
if (dest) {
262+
setCertificate(dest);
263+
ret = true;
264+
}
265+
return ret;
266+
}
267+
268+
bool WiFiClientSecure::loadPrivateKey(Stream& stream, size_t size) {
269+
char *dest = _streamLoad(stream, size);
270+
bool ret = false;
271+
if (dest) {
272+
setPrivateKey(dest);
273+
ret = true;
274+
}
275+
return ret;
276+
}
277+
233278
int WiFiClientSecure::lastError(char *buf, const size_t size)
234279
{
235280
if (!_lastError) {

Diff for: libraries/WiFiClientSecure/src/WiFiClientSecure.h

+6
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ class WiFiClientSecure : public WiFiClient
5858
void setCACert(const char *rootCA);
5959
void setCertificate(const char *client_ca);
6060
void setPrivateKey (const char *private_key);
61+
bool loadCACert(Stream& stream, size_t size);
62+
bool loadCertificate(Stream& stream, size_t size);
63+
bool loadPrivateKey(Stream& stream, size_t size);
6164
bool verify(const char* fingerprint, const char* domain_name);
6265

6366
operator bool()
@@ -84,6 +87,9 @@ class WiFiClientSecure : public WiFiClient
8487
return sslclient->socket = -1;
8588
}
8689

90+
private:
91+
char *_streamLoad(Stream& stream, size_t size);
92+
8793
//friend class WiFiServer;
8894
using Print::write;
8995
};

0 commit comments

Comments
 (0)