@@ -197,7 +197,7 @@ struct DhtProxyServer::RestRouterTraits : public restinio::default_traits_t
197
197
DhtProxyServer::DhtProxyServer (
198
198
dht::crypto::Identity identity,
199
199
std::shared_ptr<DhtRunner> dht, in_port_t port, const std::string& pushServer,
200
- const std::string& client_certificate, std::shared_ptr<dht::Logger> logger
200
+ std::shared_ptr<dht::crypto::Certificate> client_certificate, std::shared_ptr<dht::Logger> logger
201
201
)
202
202
: dht_(dht), logger_(logger), lockListener_(std::make_shared<std::mutex>()),
203
203
listeners_ (std::make_shared<std::map<restinio::connection_id_t , http::ListenerSession>>()),
@@ -242,10 +242,14 @@ DhtProxyServer::DhtProxyServer(
242
242
if (ec)
243
243
throw std::runtime_error (" Error setting tls context options: " + ec.message ());
244
244
// verify client auth
245
- if (! client_certificate. empty () ){
245
+ if (client_certificate){
246
246
tls_context.set_verify_mode (asio::ssl::context::verify_fail_if_no_peer_cert
247
247
| asio::ssl::context::verify_peer, ec);
248
- tls_context.load_verify_file (client_certificate);
248
+ auto ca = client_certificate->toString (false /* chain*/ );
249
+ // tls_context.load_verify_file(client_certificate);
250
+ tls_context.add_certificate_authority (asio::const_buffer{ca.data (), ca.size ()}, ec);
251
+ if (ec)
252
+ throw std::runtime_error (" Error adding client certificate: " + ec.message ());
249
253
}
250
254
if (ec)
251
255
throw std::runtime_error (" Error setting tls verify peer options: " + ec.message ());
0 commit comments