From c2aa282c567c920808f049a3fa44fd725786a9dc Mon Sep 17 00:00:00 2001 From: Frank Sautter Date: Tue, 17 Jan 2017 22:35:16 +0100 Subject: [PATCH] enable loading of root-CAs, certificates and keys from byte array instead of SPIFFS-stream --- .../ESP8266WiFi/src/WiFiClientSecure.cpp | 24 +++++++++++++++++++ libraries/ESP8266WiFi/src/WiFiClientSecure.h | 3 +++ 2 files changed, 27 insertions(+) diff --git a/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp b/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp index 7e16e594b2..d70d7767b0 100644 --- a/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp +++ b/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp @@ -570,6 +570,14 @@ bool WiFiClientSecure::loadCACert(Stream& stream, size_t size) return _ssl->loadObject(SSL_OBJ_X509_CACERT, stream, size); } +bool WiFiClientSecure::loadCACert(const uint8_t* pk, size_t size) +{ + if (!_ssl) { + return false; + } + return _ssl->loadObject(SSL_OBJ_X509_CACERT, pk, size); +} + bool WiFiClientSecure::loadCertificate(Stream& stream, size_t size) { if (!_ssl) { @@ -578,6 +586,14 @@ bool WiFiClientSecure::loadCertificate(Stream& stream, size_t size) return _ssl->loadObject(SSL_OBJ_X509_CERT, stream, size); } +bool WiFiClientSecure::loadCertificate(const uint8_t* pk, size_t size) +{ + if (!_ssl) { + return false; + } + return _ssl->loadObject(SSL_OBJ_X509_CERT, pk, size); +} + bool WiFiClientSecure::loadPrivateKey(Stream& stream, size_t size) { if (!_ssl) { @@ -586,6 +602,14 @@ bool WiFiClientSecure::loadPrivateKey(Stream& stream, size_t size) return _ssl->loadObject(SSL_OBJ_RSA_KEY, stream, size); } +bool WiFiClientSecure::loadPrivateKey(const uint8_t* pk, size_t size) +{ + if (!_ssl) { + return false; + } + return _ssl->loadObject(SSL_OBJ_RSA_KEY, pk, size); +} + extern "C" int __ax_port_read(int fd, uint8_t* buffer, size_t count) { ClientContext* _client = SSLContext::getIOContext(fd); diff --git a/libraries/ESP8266WiFi/src/WiFiClientSecure.h b/libraries/ESP8266WiFi/src/WiFiClientSecure.h index 17fcf54293..05683591f1 100644 --- a/libraries/ESP8266WiFi/src/WiFiClientSecure.h +++ b/libraries/ESP8266WiFi/src/WiFiClientSecure.h @@ -54,8 +54,11 @@ class WiFiClientSecure : public WiFiClient { void setPrivateKey(const uint8_t* pk, size_t size); bool loadCertificate(Stream& stream, size_t size); + bool loadCertificate(const uint8_t* pk, size_t size); bool loadPrivateKey(Stream& stream, size_t size); + bool loadPrivateKey(const uint8_t* pk, size_t size); bool loadCACert(Stream& stream, size_t size); + bool loadCACert(const uint8_t* pk, size_t size); template bool loadCertificate(TFile& file) {