]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/beast/test/beast/core/detect_ssl.cpp
2 // Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com)
4 // Distributed under the Boost Software License, Version 1.0. (See accompanying
5 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7 // Official repository: https://github.com/boostorg/beast
10 // Test that header file is self-contained.
11 #include <boost/beast/core/detect_ssl.hpp>
13 #include <boost/beast/_experimental/unit_test/suite.hpp>
14 #include <boost/beast/_experimental/test/stream.hpp>
15 #include <boost/beast/_experimental/test/handler.hpp>
16 #include <boost/beast/core/flat_buffer.hpp>
17 #include <boost/beast/core/string.hpp>
18 #include <boost/core/exchange.hpp>
22 class detect_ssl_test
: public unit_test::suite
29 [](int n
, string_view s
)
31 BEAST_EXPECT(detail::is_tls_client_hello(
32 net::const_buffer(s
.data(), n
)));
36 [](int n
, string_view s
)
38 BEAST_EXPECT(! detail::is_tls_client_hello(
39 net::const_buffer(s
.data(), n
)));
43 [](int n
, string_view s
)
45 BEAST_EXPECT(boost::indeterminate(
46 detail::is_tls_client_hello(
47 net::const_buffer(s
.data(), n
))));
50 maybe( 0, "\x00\x00\x00\x00\x00\x00\x00\x00\x00");
51 no ( 1, "\x01\x00\x00\x00\x00\x00\x00\x00\x00");
52 maybe( 1, "\x16\x00\x00\x00\x00\x00\x00\x00\x00");
53 maybe( 4, "\x16\x00\x00\x00\x00\x00\x00\x00\x00");
54 no ( 5, "\x16\x00\x00\x00\x00\x00\x00\x00\x00");
55 maybe( 5, "\x16\x00\x00\x01\x00\x00\x00\x00\x00");
56 no ( 8, "\x16\x00\x00\x01\x00\x00\x00\x00\x00");
57 maybe( 8, "\x16\x00\x00\x01\x00\x01\x00\x00\x00");
58 no ( 9, "\x16\x00\x00\x01\x00\x01\x01\x00\x00");
59 yes ( 9, "\x16\x00\x00\x01\x00\x01\x00\x00\x00");
73 s1
.append({"\x16\x00\x00\x01\x00\x01\x00\x00\x00", 9});
74 auto result
= detect_ssl(s1
, b
, ec
);
75 BEAST_EXPECT(result
== true);
76 BEAST_EXPECTS(! ec
, ec
.message());
85 auto s2
= test::connect(s1
);
86 s1
.append({"\x16\x00\x00\x01\x00\x01\x00\x00\x00", 9});
88 auto result
= detect_ssl(s1
, b
, ec
);
89 BEAST_EXPECT(result
== true);
90 BEAST_EXPECTS(! ec
, ec
.message());
99 s1
.append({"\x16\x00\x00\x01\x00\x01\x01\x00\x00", 9});
100 auto result
= detect_ssl(s1
, b
, ec
);
101 BEAST_EXPECT(result
== false);
102 BEAST_EXPECTS(! ec
, ec
.message());
109 test::stream
s1(ioc
);
110 auto s2
= test::connect(s1
);
111 s1
.append({"\x16\x00\x00\x01\x00", 5});
113 auto result
= detect_ssl(s1
, b
, ec
);
114 BEAST_EXPECT(result
== false);
128 test::stream
s1(ioc
);
129 s1
.append({"\x16\x00\x00\x01\x00\x01\x00\x00\x00", 9});
130 async_detect_ssl(s1
, b
, test::success_handler());
138 test::stream
s1(ioc
);
139 auto s2
= test::connect(s1
);
140 s1
.append({"\x16\x00\x00\x01\x00\x01\x00\x00\x00", 9});
142 async_detect_ssl(s1
, b
, test::success_handler());
150 test::stream
s1(ioc
);
151 s1
.append({"\x16\x00\x00\x01\x00\x01\x01\x00\x00", 9});
152 async_detect_ssl(s1
, b
, test::success_handler());
159 test::stream
s1(ioc
);
160 auto s2
= test::connect(s1
);
161 s1
.append({"\x16\x00\x00\x01\x00", 5});
163 async_detect_ssl(s1
, b
,
164 test::fail_handler(net::error::eof
));
178 BEAST_DEFINE_TESTSUITE(beast
,core
,detect_ssl
);