diff --git a/src/BearSSLClient.cpp b/src/BearSSLClient.cpp index 78c7de2..03527e8 100644 --- a/src/BearSSLClient.cpp +++ b/src/BearSSLClient.cpp @@ -31,14 +31,25 @@ #include "BearSSLClient.h" BearSSLClient::BearSSLClient(Client& client) : - BearSSLClient(client, TAs, TAs_NUM) + BearSSLClient(client, TAs, TAs_NUM, false) +{ +} + +BearSSLClient::BearSSLClient(Client& client, bool noSNI) : + BearSSLClient(client, TAs, TAs_NUM, noSNI) { } BearSSLClient::BearSSLClient(Client& client, const br_x509_trust_anchor* myTAs, int myNumTAs) : + BearSSLClient(client, TAs, TAs_NUM, false) +{ +} + +BearSSLClient::BearSSLClient(Client& client, const br_x509_trust_anchor* myTAs, int myNumTAs, bool noSNI) : _client(&client), _TAs(myTAs), - _numTAs(myNumTAs) + _numTAs(myNumTAs), + _noSNI(noSNI) { _ecKey.curve = 0; _ecKey.x = NULL; @@ -72,7 +83,7 @@ int BearSSLClient::connect(const char* host, uint16_t port) return 0; } - return connectSSL(host); + return connectSSL(_noSNI ? NULL : host); } size_t BearSSLClient::write(uint8_t b) diff --git a/src/BearSSLClient.h b/src/BearSSLClient.h index becc155..526e2eb 100644 --- a/src/BearSSLClient.h +++ b/src/BearSSLClient.h @@ -38,7 +38,9 @@ class BearSSLClient : public Client { public: BearSSLClient(Client& client); + BearSSLClient(Client& client, bool noSNI); BearSSLClient(Client& client, const br_x509_trust_anchor* myTAs, int myNumTAs); + BearSSLClient(Client& client, const br_x509_trust_anchor* myTAs, int myNumTAs, bool noSNI); virtual ~BearSSLClient(); virtual int connect(IPAddress ip, uint16_t port); @@ -72,6 +74,8 @@ class BearSSLClient : public Client { const br_x509_trust_anchor* _TAs; int _numTAs; + bool _noSNI; + br_ec_private_key _ecKey; br_x509_certificate _ecCert; bool _ecCertDynamic;