File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -113,7 +113,7 @@ int main(int argc, char **argv)
113113 }
114114 };
115115 // 为了防止对象在多线程情况下销毁出问题
116- // std::jthread t(create_thread, create_thread, 1);
116+ std::jthread t (create_thread, create_thread, 1 );
117117
118118 io_context.run ();
119119 }
Original file line number Diff line number Diff line change @@ -100,14 +100,14 @@ namespace hcpp
100100 ssl_m->set_sni (sni_host_);
101101 }
102102 // XXX 这里不能用shared_from_this,因为回调会一直保持当前对象的智能指针,不释放
103- auto verify_fun = [verify_fun_ = verify_fun_, host = svc_host](bool preverified, auto &v_ctx)
103+ auto verify_fun = [verify_fun = verify_fun_, host = svc_host](bool preverified, auto &v_ctx)
104104 {
105105 if (ssl::host_name_verification (host)(preverified, v_ctx))
106106 {
107- if (verify_fun_ )
107+ if (verify_fun )
108108 {
109109 log::info (" mitm_svc::make_memory: 校验{}开始" , host);
110- return verify_fun_ (preverified, v_ctx);
110+ return verify_fun (preverified, v_ctx);
111111 }
112112 return true ;
113113 }
@@ -117,7 +117,7 @@ namespace hcpp
117117 }
118118 };
119119 ssl_m->set_verify_callback (verify_fun);
120- // XXX 这里的async_handshake会阻塞住线程,因此要在单独的协程里再进行.所以当前函数不能调用在监听连接的时候
120+ // XXX 这里的async_handshake会阻塞住线程,因此要在单独的协程里再进行.所以当前函数不能调用在监听连接的时候
121121 co_await ssl_m->async_handshake ();
122122 m_ = ssl_m;
123123 co_return ;
Original file line number Diff line number Diff line change @@ -186,6 +186,7 @@ namespace hcpp
186186 {
187187 stream_type_ = ssl_stream_type::client;
188188 ctx_ = std::make_unique<ssl::context>(ssl::context::tls_client);
189+ // ctx_ = std::make_unique<ssl::context>(ssl::context::sslv23);
189190 ssl_sock_ = std::make_unique<ssl_socket>(std::move (sock), *ctx_);
190191 }
191192
@@ -238,7 +239,6 @@ namespace hcpp
238239
239240 ssl_sock_mem::~ssl_sock_mem ()
240241 {
241- ssl_sock_->set_verify_callback (verify_callback ());
242242 try
243243 {
244244 ssl_sock_->lowest_layer ().close ();
Original file line number Diff line number Diff line change @@ -258,7 +258,9 @@ namespace hcpp
258258 {
259259 part_cert_info pci{};
260260 sk->add_SAN_collector (pci);
261+ // 利用握手获取访问的主机的证书中的dns
261262 co_await sk->make_memory (self.host_ , self.service_ );
263+ // 创建假的证书
262264 si = sk->make_fake_server_id (pci.dns_name_ , ca_subject);
263265 // XXX 插入失败不用管
264266 server_subject_map.insert ({self.host_ , si});
Original file line number Diff line number Diff line change 1+ #include < asio/ssl/stream.hpp>
2+ #include < asio/ip/tcp.hpp>
3+ #include < asio/awaitable.hpp>
4+ #include < asio/use_awaitable.hpp>
5+
6+ #include < spdlog/spdlog.h>
7+
8+ #include < print>
9+
10+ using namespace asio ;
11+ using tcp_socket_co = use_awaitable_t <>::as_default_on_t <ip::tcp::socket>;
12+ using ssl_stream_co=ssl::stream<tcp_socket_co>;
13+
14+ // namespace log = spdlog;
15+
16+ int main (int argc,char ** argv){
17+
18+ if (argc!=2 ){
19+ std::println (" Usage: {} <hostname>" , argv[0 ]);
20+ return 1 ;
21+ }
22+
23+ asio::io_context io_context;
24+
25+ asio::ssl::context ctx{asio::ssl::context::tlsv12};
26+ ctx.set_verify_mode (ssl::verify_peer);
27+ ctx.set_default_verify_paths ();
28+
29+ ssl_stream_co ssl_socket{io_context, ctx};
30+
31+
32+ return 0 ;
33+ }
Original file line number Diff line number Diff line change 1919-- https://xmake.io/#/zh-cn/package/remote_package?id=%e4%bd%bf%e7%94%a8%e8%87%aa%e5%bb%ba%e7%a7%81%e6%9c%89%e5%8c%85%e4%bb%93%e5%ba%93
2020package (" lsf" )
2121 set_homepage (lsf_url )
22- set_description (" json. " )
22+ set_description (" json" )
2323 set_urls (lsf_url )
2424 -- set_sourcedir(path.join(os.scriptdir(), "lib/lsf"))
2525
@@ -107,6 +107,13 @@ target_end()
107107-- add_files("test/src/a.cpp",{defines = "DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN"})
108108-- add_tests("a_test")
109109
110+ -- target("handshake_test")
111+ -- add_packages("spdlog")
112+ -- add_packages("asio")
113+ -- add_packages(openssl_package_name)
114+ -- add_files("test/ssl/ssl_handshake.cpp")
115+ -- add_tests("handshake_test")
116+
110117-- 打包源码
111118-- includes("@builtin/xpack")
112119-- xpack("hcpp")
You can’t perform that action at this time.
0 commit comments