Commit 65c861ad authored by lbernstone's avatar lbernstone Committed by Me No Dev

Added loadCert methods to WiFiClientSecure (#1959)

parent f6a71da3
...@@ -230,6 +230,51 @@ bool WiFiClientSecure::verify(const char* fp, const char* domain_name) ...@@ -230,6 +230,51 @@ bool WiFiClientSecure::verify(const char* fp, const char* domain_name)
return verify_ssl_fingerprint(sslclient, fp, domain_name); return verify_ssl_fingerprint(sslclient, fp, domain_name);
} }
char *WiFiClientSecure::_streamLoad(Stream& stream, size_t size) {
char *dest = (char*)malloc(size);
if (!dest) {
return nullptr;
}
if (size != stream.readBytes(dest, size)) {
free(dest);
return nullptr;
}
char ret[size+1];
snprintf(ret, size, "%s", dest);
free(dest);
return ret;
}
bool WiFiClientSecure::loadCACert(Stream& stream, size_t size) {
char *dest = _streamLoad(stream, size);
bool ret = false;
if (dest) {
setCACert(dest);
ret = true;
}
return ret;
}
bool WiFiClientSecure::loadCertificate(Stream& stream, size_t size) {
char *dest = _streamLoad(stream, size);
bool ret = false;
if (dest) {
setCertificate(dest);
ret = true;
}
return ret;
}
bool WiFiClientSecure::loadPrivateKey(Stream& stream, size_t size) {
char *dest = _streamLoad(stream, size);
bool ret = false;
if (dest) {
setPrivateKey(dest);
ret = true;
}
return ret;
}
int WiFiClientSecure::lastError(char *buf, const size_t size) int WiFiClientSecure::lastError(char *buf, const size_t size)
{ {
if (!_lastError) { if (!_lastError) {
......
...@@ -58,6 +58,9 @@ public: ...@@ -58,6 +58,9 @@ public:
void setCACert(const char *rootCA); void setCACert(const char *rootCA);
void setCertificate(const char *client_ca); void setCertificate(const char *client_ca);
void setPrivateKey (const char *private_key); void setPrivateKey (const char *private_key);
bool loadCACert(Stream& stream, size_t size);
bool loadCertificate(Stream& stream, size_t size);
bool loadPrivateKey(Stream& stream, size_t size);
bool verify(const char* fingerprint, const char* domain_name); bool verify(const char* fingerprint, const char* domain_name);
operator bool() operator bool()
...@@ -84,6 +87,9 @@ public: ...@@ -84,6 +87,9 @@ public:
return sslclient->socket = -1; return sslclient->socket = -1;
} }
private:
char *_streamLoad(Stream& stream, size_t size);
//friend class WiFiServer; //friend class WiFiServer;
using Print::write; using Print::write;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment