rippled
Loading...
Searching...
No Matches
WorkSSL.cpp
1#include <xrpld/app/misc/detail/WorkSSL.h>
2
3namespace ripple {
4namespace detail {
5
7 std::string const& host,
8 std::string const& path,
9 std::string const& port,
10 boost::asio::io_context& ios,
12 Config const& config,
13 endpoint_type const& lastEndpoint,
14 bool lastStatus,
16 : WorkBase(host, path, port, ios, lastEndpoint, lastStatus, cb)
17 , context_(
18 config.SSL_VERIFY_DIR,
19 config.SSL_VERIFY_FILE,
20 config.SSL_VERIFY,
21 j,
22 boost::asio::ssl::context::tlsv12_client)
23 , stream_(socket_, context_.context())
24{
26 if (ec)
27 Throw<std::runtime_error>(
28 boost::str(boost::format("preConnectVerify: %s") % ec.message()));
29}
30
31void
33{
34 auto err = ec ? ec : context_.postConnectVerify(stream_, host_);
35 if (err)
36 return fail(err);
37
38 stream_.async_handshake(
39 boost::asio::ssl::stream_base::client,
40 boost::asio::bind_executor(
41 strand_,
45 std::placeholders::_1)));
46}
47
48void
50{
51 if (ec)
52 return fail(ec);
53
54 onStart();
55}
56
57} // namespace detail
58
59} // namespace ripple
T bind(T... args)
A generic endpoint for log messages.
Definition Journal.h:41
boost::system::error_code preConnectVerify(T &strm, std::string const &host)
invoked before connect/async_connect on an ssl stream to setup name verification.
boost::system::error_code postConnectVerify(T &strm, std::string const &host)
invoked after connect/async_connect but before sending data on an ssl stream - to setup name verifica...
boost::asio::ip::tcp::endpoint endpoint_type
Definition WorkBase.h:25
boost::system::error_code error_code
Definition WorkBase.h:24
boost::asio::strand< boost::asio::io_context::executor_type > strand_
Definition WorkBase.h:43
void fail(error_code const &ec)
Definition WorkBase.h:175
void onHandshake(error_code const &ec)
Definition WorkSSL.cpp:49
void onConnect(error_code const &ec)
Definition WorkSSL.cpp:32
HTTPClientSSLContext context_
Definition WorkSSL.h:28
WorkSSL(std::string const &host, std::string const &path, std::string const &port, boost::asio::io_context &ios, beast::Journal j, Config const &config, endpoint_type const &lastEndpoint, bool lastStatus, callback_type cb)
Definition WorkSSL.cpp:6
stream_type stream_
Definition WorkSSL.h:29
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:6