mirror of
https://github.com/Links2004/arduinoWebSockets.git
synced 2025-07-14 15:56:30 +02:00
use String to store fingerprint
(const char * can be invalidate based on which scope it coming from) move _fingerprint to Client class only (server not need it)
This commit is contained in:
@ -118,7 +118,6 @@ typedef struct {
|
||||
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266)
|
||||
bool isSSL; ///< run in ssl mode
|
||||
WiFiClientSecure * ssl;
|
||||
const char * fingerprint;
|
||||
#endif
|
||||
|
||||
String cUrl; ///< http url
|
||||
|
@ -40,6 +40,7 @@ WebSocketsClient::~WebSocketsClient() {
|
||||
void WebSocketsClient::begin(const char *host, uint16_t port, const char * url) {
|
||||
_host = host;
|
||||
_port = port;
|
||||
_fingerprint = "";
|
||||
|
||||
_client.num = 0;
|
||||
_client.status = WSC_NOT_CONNECTED;
|
||||
@ -47,7 +48,6 @@ void WebSocketsClient::begin(const char *host, uint16_t port, const char * url)
|
||||
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266)
|
||||
_client.isSSL = false;
|
||||
_client.ssl = NULL;
|
||||
_client.fingerprint = NULL;
|
||||
#endif
|
||||
_client.cUrl = url;
|
||||
_client.cCode = 0;
|
||||
@ -72,24 +72,14 @@ void WebSocketsClient::begin(String host, uint16_t port, String url) {
|
||||
}
|
||||
|
||||
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266)
|
||||
void WebSocketsClient::beginSSL(const char *host, uint16_t port, const char * url) {
|
||||
begin(host, port, url);
|
||||
_client.isSSL = true;
|
||||
}
|
||||
|
||||
void WebSocketsClient::beginSSL(String host, uint16_t port, String url) {
|
||||
beginSSL(host.c_str(), port, url.c_str());
|
||||
}
|
||||
|
||||
void WebSocketsClient::beginSSL(const char *host, uint16_t port, const char * url, const char * fingerprint) {
|
||||
begin(host, port, url);
|
||||
_client.isSSL = true;
|
||||
_client.fingerprint = fingerprint;
|
||||
_fingerprint = fingerprint;
|
||||
}
|
||||
|
||||
void WebSocketsClient::beginSSL(String host, uint16_t port, String url, const char * fingerprint) {
|
||||
beginSSL(host.c_str(), port, url.c_str());
|
||||
_client.fingerprint = fingerprint;
|
||||
void WebSocketsClient::beginSSL(String host, uint16_t port, String url, String fingerprint) {
|
||||
beginSSL(host.c_str(), port, url.c_str(), fingerprint.c_str());
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -137,8 +127,8 @@ void WebSocketsClient::loop(void) {
|
||||
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266)
|
||||
_client.tcp->setNoDelay(true);
|
||||
|
||||
if (_client.isSSL && _client.fingerprint != NULL) {
|
||||
if (!(((WiFiClientSecure*)_client.tcp)->verify(_client.fingerprint, _host.c_str()))) {
|
||||
if(_client.isSSL && _fingerprint.length()) {
|
||||
if(!_client.ssl->verify(_fingerprint.c_str(), _host.c_str())) {
|
||||
DEBUG_WEBSOCKETS("[WS-Client] certificate mismatch\n");
|
||||
WebSockets::clientDisconnect(&_client, 1000);
|
||||
return;
|
||||
|
@ -40,10 +40,8 @@ class WebSocketsClient: private WebSockets {
|
||||
void begin(String host, uint16_t port, String url = "/");
|
||||
|
||||
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266)
|
||||
void beginSSL(const char *host, uint16_t port, const char * url = "/");
|
||||
void beginSSL(String host, uint16_t port, String url = "/");
|
||||
void beginSSL(const char *host, uint16_t port, const char * url, const char * fingerprint);
|
||||
void beginSSL(String host, uint16_t port, String url, const char * fingerprint);
|
||||
void beginSSL(const char *host, uint16_t port, const char * url = "/", const char * = "");
|
||||
void beginSSL(String host, uint16_t port, String url = "/", String fingerprint = "");
|
||||
#endif
|
||||
|
||||
void loop(void);
|
||||
@ -65,6 +63,9 @@ class WebSocketsClient: private WebSockets {
|
||||
String _host;
|
||||
uint16_t _port;
|
||||
|
||||
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266)
|
||||
String _fingerprint;
|
||||
#endif
|
||||
WSclient_t _client;
|
||||
|
||||
WebSocketClientEvent _cbEvent;
|
||||
|
Reference in New Issue
Block a user