Skip to content

Commit 65c861a

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

File tree

2 files changed

+51
-0
lines changed

2 files changed

+51
-0
lines changed

‎libraries/WiFiClientSecure/src/WiFiClientSecure.cpp‎

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,51 @@ bool WiFiClientSecure::verify(const char* fp, const char* domain_name)
230230
returnverify_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+
returnnullptr;
237+
}
238+
if (size != stream.readBytes(dest, size)){
239+
free(dest);
240+
returnnullptr;
241+
}
242+
char ret[size+1];
243+
snprintf(ret, size, "%s", dest);
244+
free(dest);
245+
return ret;
246+
}
247+
248+
boolWiFiClientSecure::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+
boolWiFiClientSecure::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+
boolWiFiClientSecure::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
intWiFiClientSecure::lastError(char *buf, constsize_t size)
234279
{
235280
if (!_lastError){

‎libraries/WiFiClientSecure/src/WiFiClientSecure.h‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ class WiFiClientSecure : public WiFiClient
5858
voidsetCACert(constchar *rootCA);
5959
voidsetCertificate(constchar *client_ca);
6060
voidsetPrivateKey (constchar *private_key);
61+
boolloadCACert(Stream& stream, size_t size);
62+
boolloadCertificate(Stream& stream, size_t size);
63+
boolloadPrivateKey(Stream& stream, size_t size);
6164
boolverify(constchar* fingerprint, constchar* domain_name);
6265

6366
operatorbool()
@@ -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)