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:
yhirose committed 2026-10-16 16:39:00 -04:00
1 parent 7c44a7a5e1
commit f361a08f67
3 files changed
+50

No files matched your search

+31
View File
@@ -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");