@@ -47,6 +47,7 @@ void WebSocketsClient::begin(const char *host, uint16_t port, const char * url)
4747#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266)
4848 _client.isSSL = false ;
4949 _client.ssl = NULL ;
50+ _client.fingerprint = NULL ;
5051#endif
5152 _client.cUrl = url;
5253 _client.cCode = 0 ;
@@ -79,6 +80,17 @@ void WebSocketsClient::beginSSL(const char *host, uint16_t port, const char * ur
7980void WebSocketsClient::beginSSL (String host, uint16_t port, String url) {
8081 beginSSL (host.c_str (), port, url.c_str ());
8182}
83+
84+ void WebSocketsClient::beginSSL (const char *host, uint16_t port, const char * url, const char * fingerprint) {
85+ begin (host, port, url);
86+ _client.isSSL = true ;
87+ _client.fingerprint = fingerprint;
88+ }
89+
90+ void WebSocketsClient::beginSSL (String host, uint16_t port, String url, const char * fingerprint) {
91+ beginSSL (host.c_str (), port, url.c_str ());
92+ _client.fingerprint = fingerprint;
93+ }
8294#endif
8395
8496/* *
@@ -124,6 +136,13 @@ void WebSocketsClient::loop(void) {
124136
125137#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266)
126138 _client.tcp ->setNoDelay (true );
139+
140+ if (_client.isSSL && _client.fingerprint != NULL ) {
141+ if (!(((WiFiClientSecure*)_client.tcp )->verify (_client.fingerprint , _host.c_str ()))) {
142+ DEBUG_WEBSOCKETS (" [WS-Client] certificate mismatch\n " );
143+ return ;
144+ }
145+ }
127146#endif
128147
129148 // send Header to Server
0 commit comments