Skip to content

Commit 0e1bf50

Browse files
authored
Merge pull request #405 from manchoz/enable_sni_management
Manage TLS Server Name Indication
2 parents 9730a6d + b4b8230 commit 0e1bf50

File tree

6 files changed

+28
-10
lines changed

6 files changed

+28
-10
lines changed

libraries/SocketWrapper/src/MbedClient.cpp

+9-1
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,15 @@ int arduino::MbedClient::connectSSL(IPAddress ip, uint16_t port) {
178178
return connectSSL(SocketHelpers::socketAddressFromIpAddress(ip, port));
179179
}
180180

181-
int arduino::MbedClient::connectSSL(const char *host, uint16_t port) {
181+
int arduino::MbedClient::connectSSL(const char *host, uint16_t port, bool disableSNI) {
182+
if (!disableSNI) {
183+
if (sock == nullptr) {
184+
sock = new TLSSocket();
185+
_own_socket = true;
186+
}
187+
static_cast<TLSSocket *>(sock)->set_hostname(host);
188+
}
189+
182190
SocketAddress socketAddress = SocketAddress();
183191
socketAddress.set_port(port);
184192
getNetwork()->gethostbyname(host, &socketAddress);

libraries/SocketWrapper/src/MbedClient.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ class MbedClient : public arduino::Client {
7171
int connect(const char* host, uint16_t port);
7272
int connectSSL(SocketAddress socketAddress);
7373
int connectSSL(IPAddress ip, uint16_t port);
74-
int connectSSL(const char* host, uint16_t port);
74+
int connectSSL(const char* host, uint16_t port, bool disableSNI = false);
7575
size_t write(uint8_t);
7676
size_t write(const uint8_t* buf, size_t size);
7777
int available();
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include "MbedSSLClient.h"
22

3-
arduino::MbedSSLClient::MbedSSLClient() {
3+
arduino::MbedSSLClient::MbedSSLClient(): _disableSNI{false} {
44
onBeforeConnect(mbed::callback(this, &MbedSSLClient::setRootCA));
5-
};
5+
};

libraries/SocketWrapper/src/MbedSSLClient.h

+7-2
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,20 @@ class MbedSSLClient : public arduino::MbedClient {
3838
return connectSSL(ip, port);
3939
}
4040
int connect(const char* host, uint16_t port) {
41-
return connectSSL(host, port);
41+
return connectSSL(host, port, _disableSNI);
42+
}
43+
void disableSNI(bool statusSNI) {
44+
_disableSNI = statusSNI;
4245
}
4346

4447
private:
4548
int setRootCA() {
4649
return ((TLSSocket*)sock)->set_root_ca_cert_path("/wlan/");
4750
}
51+
52+
bool _disableSNI;
4853
};
4954

5055
}
5156

52-
#endif /* MBEDSSLCLIENT_H */
57+
#endif /* MBEDSSLCLIENT_H */

libraries/WiFi/src/WiFiSSLClient.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include "WiFiSSLClient.h"
22

3-
arduino::WiFiSSLClient::WiFiSSLClient() {
3+
arduino::WiFiSSLClient::WiFiSSLClient(): _disableSNI{false} {
44
onBeforeConnect(mbed::callback(this, &WiFiSSLClient::setRootCA));
5-
};
5+
};

libraries/WiFi/src/WiFiSSLClient.h

+7-2
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,20 @@ class WiFiSSLClient : public arduino::WiFiClient {
3838
return connectSSL(ip, port);
3939
}
4040
int connect(const char* host, uint16_t port) {
41-
return connectSSL(host, port);
41+
return connectSSL(host, port, _disableSNI);
42+
}
43+
void disableSNI(bool statusSNI) {
44+
_disableSNI = statusSNI;
4245
}
4346

4447
private:
4548
int setRootCA() {
4649
return ((TLSSocket*)sock)->set_root_ca_cert_path("/wlan/");
4750
}
51+
52+
bool _disableSNI;
4853
};
4954

5055
}
5156

52-
#endif /* WIFISSLCLIENT_H */
57+
#endif /* WIFISSLCLIENT_H */

0 commit comments

Comments
 (0)