mirror of
https://github.com/yhirose/cpp-httplib.git
synced 2026-10-19 11:19:36 +00:00
Add certificate and session verifiers to WebSocketClient
A wss client could set its CAs but had no way to pin a certificate. Add set_server_certificate_verifier() and set_session_verifier(), as SSLClient has.
This commit is contained in:
1 parent
7c44a7a5e1
commit
f361a08f67
3 files changed
+50
No files matched your search
@@ -27003,6 +27003,37 @@ protected:
|
||||
int port_ = 0;
|
||||
};
|
||||
|
||||
TEST_F(WebSocketSSLIntegrationTest, VerifiersDecide) {
|
||||
auto url = "wss://localhost:" + std::to_string(port_) + "/ws-echo";
|
||||
{
|
||||
ws::WebSocketClient client(url);
|
||||
client.enable_server_certificate_verification(false);
|
||||
auto calls = 0;
|
||||
client.set_server_certificate_verifier([&](const tls::VerifyContext &) {
|
||||
calls++;
|
||||
return false;
|
||||
});
|
||||
EXPECT_FALSE(client.connect());
|
||||
EXPECT_GT(calls, 0);
|
||||
}
|
||||
{
|
||||
ws::WebSocketClient client(url);
|
||||
client.enable_server_certificate_verification(false);
|
||||
client.set_session_verifier([](tls::session_t) {
|
||||
return SSLVerifierResponse::CertificateRejected;
|
||||
});
|
||||
EXPECT_FALSE(client.connect());
|
||||
}
|
||||
{
|
||||
ws::WebSocketClient client(url);
|
||||
client.enable_server_certificate_verification(false);
|
||||
client.set_session_verifier([](tls::session_t) {
|
||||
return SSLVerifierResponse::CertificateAccepted;
|
||||
});
|
||||
EXPECT_TRUE(client.connect());
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(WebSocketSSLIntegrationTest, TextEcho) {
|
||||
ws::WebSocketClient client("wss://localhost:" + std::to_string(port_) +
|
||||
"/ws-echo");
|
||||
|
||||
Reference in new issue
Block a user