Skip to content

Commit d6b882a

Browse files
author
hyotak.yun
committed
Added websocket_client_config option for ssl verify mode
1 parent 3070ca2 commit d6b882a

File tree

2 files changed

+33
-2
lines changed

2 files changed

+33
-2
lines changed

Release/include/cpprest/ws_client.h

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,11 @@ class websocket_client_config
8484
/// <summary>
8585
/// Creates a websocket client configuration with default settings.
8686
/// </summary>
87-
websocket_client_config() : m_sni_enabled(true) {}
87+
websocket_client_config() :
88+
m_sni_enabled(true),
89+
m_validate_certificates(true)
90+
{
91+
}
8892

8993
/// <summary>
9094
/// Get the web proxy object
@@ -187,13 +191,33 @@ class websocket_client_config
187191
/// <remarks>If you want all the subprotocols in a comma separated string
188192
/// they can be directly looked up in the headers using 'Sec-WebSocket-Protocol'.</remarks>
189193
_ASYNCRTIMP std::vector<::utility::string_t> subprotocols() const;
194+
195+
/// <summary>
196+
/// Gets the server certificate validation property.
197+
/// </summary>
198+
/// <returns>True if certificates are to be verified, false otherwise.</returns>
199+
bool validate_certificates() const
200+
{
201+
return m_validate_certificates;
202+
}
203+
204+
/// <summary>
205+
/// Sets the server certificate validation property.
206+
/// </summary>
207+
/// <param name="validate_certs">False to turn ignore all server certificate validation errors, true otherwise.</param>
208+
/// <remarks>Note ignoring certificate errors can be dangerous and should be done with caution.</remarks>
209+
void set_validate_certificates(bool validate_certs)
210+
{
211+
m_validate_certificates = validate_certs;
212+
}
190213

191214
private:
192215
web::web_proxy m_proxy;
193216
web::credentials m_credentials;
194217
web::http::http_headers m_headers;
195218
bool m_sni_enabled;
196219
utf8string m_sni_hostname;
220+
bool m_validate_certificates;
197221
};
198222

199223
/// <summary>

Release/src/websockets/client/ws_client_wspp.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,14 @@ class wspp_callback_client : public websocket_client_callback_impl, public std::
159159
auto sslContext = websocketpp::lib::shared_ptr<boost::asio::ssl::context>(new boost::asio::ssl::context(boost::asio::ssl::context::sslv23));
160160
sslContext->set_default_verify_paths();
161161
sslContext->set_options(boost::asio::ssl::context::default_workarounds);
162-
sslContext->set_verify_mode(boost::asio::ssl::context::verify_peer);
162+
if (m_config.validate_certificates())
163+
{
164+
sslContext->set_verify_mode(boost::asio::ssl::context::verify_peer);
165+
}
166+
else
167+
{
168+
sslContext->set_verify_mode(boost::asio::ssl::context::verify_none);
169+
}
163170

164171
#if defined(__APPLE__) || (defined(ANDROID) || defined(__ANDROID__)) || defined(_WIN32)
165172
m_openssl_failed = false;

0 commit comments

Comments
 (0)