Coverage Report

Created: 2024-11-29 06:10

/src/botan/build/include/internal/botan/internal/tls_handshake_state_13.h
Line
Count
Source (jump to first uncovered line)
1
/*
2
* TLS handshake state (machine) implementation for TLS 1.3
3
* (C) 2022 Jack Lloyd
4
*     2022 Hannes Rantzsch, René Meusel - neXenio GmbH
5
*
6
* Botan is released under the Simplified BSD License (see license.txt)
7
*/
8
9
#ifndef BOTAN_TLS_HANDSHAKE_STATE_13_H_
10
#define BOTAN_TLS_HANDSHAKE_STATE_13_H_
11
12
#include <functional>
13
#include <optional>
14
#include <variant>
15
#include <vector>
16
17
#include <botan/tls_exceptn.h>
18
#include <botan/tls_magic.h>
19
#include <botan/tls_messages.h>
20
#include <botan/internal/stl_util.h>
21
22
namespace Botan::TLS {
23
24
namespace Internal {
25
class BOTAN_TEST_API Handshake_State_13_Base {
26
   public:
27
0
      bool has_client_hello() const { return m_client_hello.has_value(); }
28
29
0
      bool has_server_hello() const { return m_server_hello.has_value(); }
30
31
0
      bool has_server_certificate_msg() const { return m_server_certificate.has_value(); }
32
33
0
      bool has_client_certificate_msg() const { return m_client_certificate.has_value(); }
34
35
0
      bool has_hello_retry_request() const { return m_hello_retry_request.has_value(); }
36
37
0
      bool has_certificate_request() const { return m_certificate_request.has_value(); }
38
39
0
      bool has_server_finished() const { return m_server_finished.has_value(); }
40
41
0
      bool has_client_finished() const { return m_client_finished.has_value(); }
42
43
0
      bool handshake_finished() const { return has_server_finished() && has_client_finished(); }
44
45
      // Client_Hello_13 cannot be const because it might need modification due to a Hello_Retry_Request
46
0
      Client_Hello_13& client_hello() { return get(m_client_hello); }
47
48
0
      const Client_Hello_13& client_hello() const { return get(m_client_hello); }
49
50
0
      const Server_Hello_13& server_hello() const { return get(m_server_hello); }
51
52
0
      const Hello_Retry_Request& hello_retry_request() const { return get(m_hello_retry_request); }
53
54
0
      const Encrypted_Extensions& encrypted_extensions() const { return get(m_encrypted_extensions); }
55
56
0
      const Certificate_Request_13& certificate_request() const { return get(m_certificate_request); }
57
58
0
      const Certificate_13& server_certificate() const { return get(m_server_certificate); }
59
60
0
      const Certificate_13& client_certificate() const { return get(m_client_certificate); }
61
62
0
      const Certificate_Verify_13& server_certificate_verify() const { return get(m_server_certificate_verify); }
63
64
0
      const Certificate_Verify_13& client_certificate_verify() const { return get(m_client_certificate_verify); }
65
66
0
      const Finished_13& server_finished() const { return get(m_server_finished); }
67
68
0
      const Finished_13& client_finished() const { return get(m_client_finished); }
69
70
   protected:
71
0
      Handshake_State_13_Base(Connection_Side whoami) : m_side(whoami) {}
72
73
      Client_Hello_13& store(Client_Hello_13 client_hello, bool from_peer);
74
      Client_Hello_12& store(Client_Hello_12 client_hello, bool from_peer);
75
      Server_Hello_13& store(Server_Hello_13 server_hello, bool from_peer);
76
      Server_Hello_12& store(Server_Hello_12 server_hello, bool from_peer);
77
      Hello_Retry_Request& store(Hello_Retry_Request hello_retry_request, bool from_peer);
78
      Encrypted_Extensions& store(Encrypted_Extensions encrypted_extensions, bool from_peer);
79
      Certificate_Request_13& store(Certificate_Request_13 certificate_request, bool from_peer);
80
      Certificate_13& store(Certificate_13 certificate, bool from_peer);
81
      Certificate_Verify_13& store(Certificate_Verify_13 certificate_verify, bool from_peer);
82
      Finished_13& store(Finished_13 finished, bool from_peer);
83
84
   private:
85
      template <typename MessageT>
86
0
      const MessageT& get(const std::optional<MessageT>& opt) const {
87
0
         if(!opt.has_value()) {
88
0
            throw Invalid_State("TLS handshake message not set");
89
0
         }
90
0
         return opt.value();
91
0
      }
Unexecuted instantiation: Botan::TLS::Client_Hello_13 const& Botan::TLS::Internal::Handshake_State_13_Base::get<Botan::TLS::Client_Hello_13>(std::__1::optional<Botan::TLS::Client_Hello_13> const&) const
Unexecuted instantiation: Botan::TLS::Server_Hello_13 const& Botan::TLS::Internal::Handshake_State_13_Base::get<Botan::TLS::Server_Hello_13>(std::__1::optional<Botan::TLS::Server_Hello_13> const&) const
Unexecuted instantiation: Botan::TLS::Hello_Retry_Request const& Botan::TLS::Internal::Handshake_State_13_Base::get<Botan::TLS::Hello_Retry_Request>(std::__1::optional<Botan::TLS::Hello_Retry_Request> const&) const
Unexecuted instantiation: Botan::TLS::Encrypted_Extensions const& Botan::TLS::Internal::Handshake_State_13_Base::get<Botan::TLS::Encrypted_Extensions>(std::__1::optional<Botan::TLS::Encrypted_Extensions> const&) const
Unexecuted instantiation: Botan::TLS::Certificate_Request_13 const& Botan::TLS::Internal::Handshake_State_13_Base::get<Botan::TLS::Certificate_Request_13>(std::__1::optional<Botan::TLS::Certificate_Request_13> const&) const
Unexecuted instantiation: Botan::TLS::Certificate_13 const& Botan::TLS::Internal::Handshake_State_13_Base::get<Botan::TLS::Certificate_13>(std::__1::optional<Botan::TLS::Certificate_13> const&) const
Unexecuted instantiation: Botan::TLS::Certificate_Verify_13 const& Botan::TLS::Internal::Handshake_State_13_Base::get<Botan::TLS::Certificate_Verify_13>(std::__1::optional<Botan::TLS::Certificate_Verify_13> const&) const
Unexecuted instantiation: Botan::TLS::Finished_13 const& Botan::TLS::Internal::Handshake_State_13_Base::get<Botan::TLS::Finished_13>(std::__1::optional<Botan::TLS::Finished_13> const&) const
92
93
      template <typename MessageT>
94
0
      MessageT& get(std::optional<MessageT>& opt) {
95
0
         if(!opt.has_value()) {
96
0
            throw Invalid_State("TLS handshake message not set");
97
0
         }
98
0
         return opt.value();
99
0
      }
100
101
      Connection_Side m_side;
102
103
      std::optional<Client_Hello_13> m_client_hello;
104
      std::optional<Client_Hello_12> m_client_hello_12;
105
      std::optional<Server_Hello_13> m_server_hello;
106
      std::optional<Server_Hello_12> m_server_hello_12;
107
      std::optional<Hello_Retry_Request> m_hello_retry_request;
108
      std::optional<Encrypted_Extensions> m_encrypted_extensions;
109
      std::optional<Certificate_Request_13> m_certificate_request;
110
      std::optional<Certificate_13> m_server_certificate;
111
      std::optional<Certificate_13> m_client_certificate;
112
      std::optional<Certificate_Verify_13> m_server_certificate_verify;
113
      std::optional<Certificate_Verify_13> m_client_certificate_verify;
114
      std::optional<Finished_13> m_server_finished;
115
      std::optional<Finished_13> m_client_finished;
116
};
117
}  // namespace Internal
118
119
/**
120
 * Place to store TLS handshake messages
121
 *
122
 * This class is used to keep all handshake messages that have been received from and sent to
123
 * the peer as part of the TLS 1.3 handshake. Getters are provided for all message types.
124
 * Specializations for the client and server side provide specific setters in the form of
125
 * `sent` and `received` that only allow those types of handshake messages that are sensible
126
 * for the respective connection side.
127
 *
128
 * The handshake state machine as described in RFC 8446 Appendix A is NOT validated here.
129
 */
130
template <Connection_Side whoami,
131
          typename Outbound_Message_T,
132
          typename Inbound_Message_T,
133
          typename Inbound_Post_Handshake_Message_T>
134
class BOTAN_TEST_API Handshake_State_13 : public Internal::Handshake_State_13_Base {
135
   public:
136
0
      Handshake_State_13() : Handshake_State_13_Base(whoami) {}
Unexecuted instantiation: Botan::TLS::Handshake_State_13<(Botan::TLS::Connection_Side)2, std::__1::variant<Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Key_Update> >::Handshake_State_13()
Unexecuted instantiation: Botan::TLS::Handshake_State_13<(Botan::TLS::Connection_Side)1, std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::New_Session_Ticket_13, Botan::TLS::Key_Update> >::Handshake_State_13()
137
138
      template <typename MsgT>
139
      std::reference_wrapper<MsgT> sending(MsgT msg)
140
         requires(std::is_constructible_v<Outbound_Message_T, MsgT>)
141
0
      {
142
0
         return std::reference_wrapper<decltype(msg)>(store(std::move(msg), false));
143
0
      }
Unexecuted instantiation: _ZN5Botan3TLS18Handshake_State_13ILNS0_15Connection_SideE2ENSt3__17variantIJNS0_15Server_Hello_13ENS0_15Server_Hello_12ENS0_19Hello_Retry_RequestENS0_20Encrypted_ExtensionsENS0_14Certificate_13ENS0_22Certificate_Request_13ENS0_21Certificate_Verify_13ENS0_11Finished_13EEEENS4_IJNS0_15Client_Hello_13ENS0_15Client_Hello_12ES9_SB_SC_EEENS4_IJNS0_10Key_UpdateEEEEE7sendingIS5_EENS3_17reference_wrapperIT_EESM_Qsr3stdE18is_constructible_vIT0_TL0__E
Unexecuted instantiation: _ZN5Botan3TLS18Handshake_State_13ILNS0_15Connection_SideE2ENSt3__17variantIJNS0_15Server_Hello_13ENS0_15Server_Hello_12ENS0_19Hello_Retry_RequestENS0_20Encrypted_ExtensionsENS0_14Certificate_13ENS0_22Certificate_Request_13ENS0_21Certificate_Verify_13ENS0_11Finished_13EEEENS4_IJNS0_15Client_Hello_13ENS0_15Client_Hello_12ES9_SB_SC_EEENS4_IJNS0_10Key_UpdateEEEEE7sendingIS8_EENS3_17reference_wrapperIT_EESM_Qsr3stdE18is_constructible_vIT0_TL0__E
Unexecuted instantiation: _ZN5Botan3TLS18Handshake_State_13ILNS0_15Connection_SideE2ENSt3__17variantIJNS0_15Server_Hello_13ENS0_15Server_Hello_12ENS0_19Hello_Retry_RequestENS0_20Encrypted_ExtensionsENS0_14Certificate_13ENS0_22Certificate_Request_13ENS0_21Certificate_Verify_13ENS0_11Finished_13EEEENS4_IJNS0_15Client_Hello_13ENS0_15Client_Hello_12ES9_SB_SC_EEENS4_IJNS0_10Key_UpdateEEEEE7sendingISA_EENS3_17reference_wrapperIT_EESM_Qsr3stdE18is_constructible_vIT0_TL0__E
Unexecuted instantiation: _ZN5Botan3TLS18Handshake_State_13ILNS0_15Connection_SideE2ENSt3__17variantIJNS0_15Server_Hello_13ENS0_15Server_Hello_12ENS0_19Hello_Retry_RequestENS0_20Encrypted_ExtensionsENS0_14Certificate_13ENS0_22Certificate_Request_13ENS0_21Certificate_Verify_13ENS0_11Finished_13EEEENS4_IJNS0_15Client_Hello_13ENS0_15Client_Hello_12ES9_SB_SC_EEENS4_IJNS0_10Key_UpdateEEEEE7sendingIS9_EENS3_17reference_wrapperIT_EESM_Qsr3stdE18is_constructible_vIT0_TL0__E
Unexecuted instantiation: _ZN5Botan3TLS18Handshake_State_13ILNS0_15Connection_SideE2ENSt3__17variantIJNS0_15Server_Hello_13ENS0_15Server_Hello_12ENS0_19Hello_Retry_RequestENS0_20Encrypted_ExtensionsENS0_14Certificate_13ENS0_22Certificate_Request_13ENS0_21Certificate_Verify_13ENS0_11Finished_13EEEENS4_IJNS0_15Client_Hello_13ENS0_15Client_Hello_12ES9_SB_SC_EEENS4_IJNS0_10Key_UpdateEEEEE7sendingISB_EENS3_17reference_wrapperIT_EESM_Qsr3stdE18is_constructible_vIT0_TL0__E
Unexecuted instantiation: _ZN5Botan3TLS18Handshake_State_13ILNS0_15Connection_SideE2ENSt3__17variantIJNS0_15Server_Hello_13ENS0_15Server_Hello_12ENS0_19Hello_Retry_RequestENS0_20Encrypted_ExtensionsENS0_14Certificate_13ENS0_22Certificate_Request_13ENS0_21Certificate_Verify_13ENS0_11Finished_13EEEENS4_IJNS0_15Client_Hello_13ENS0_15Client_Hello_12ES9_SB_SC_EEENS4_IJNS0_10Key_UpdateEEEEE7sendingISC_EENS3_17reference_wrapperIT_EESM_Qsr3stdE18is_constructible_vIT0_TL0__E
Unexecuted instantiation: _ZN5Botan3TLS18Handshake_State_13ILNS0_15Connection_SideE2ENSt3__17variantIJNS0_15Server_Hello_13ENS0_15Server_Hello_12ENS0_19Hello_Retry_RequestENS0_20Encrypted_ExtensionsENS0_14Certificate_13ENS0_22Certificate_Request_13ENS0_21Certificate_Verify_13ENS0_11Finished_13EEEENS4_IJNS0_15Client_Hello_13ENS0_15Client_Hello_12ES9_SB_SC_EEENS4_IJNS0_10Key_UpdateEEEEE7sendingIS7_EENS3_17reference_wrapperIT_EESM_Qsr3stdE18is_constructible_vIT0_TL0__E
Unexecuted instantiation: _ZN5Botan3TLS18Handshake_State_13ILNS0_15Connection_SideE1ENSt3__17variantIJNS0_15Client_Hello_13ENS0_15Client_Hello_12ENS0_14Certificate_13ENS0_21Certificate_Verify_13ENS0_11Finished_13EEEENS4_IJNS0_15Server_Hello_13ENS0_15Server_Hello_12ENS0_19Hello_Retry_RequestENS0_20Encrypted_ExtensionsES7_NS0_22Certificate_Request_13ES8_S9_EEENS4_IJNS0_21New_Session_Ticket_13ENS0_10Key_UpdateEEEEE7sendingIS5_EENS3_17reference_wrapperIT_EESN_Qsr3stdE18is_constructible_vIT0_TL0__E
Unexecuted instantiation: _ZN5Botan3TLS18Handshake_State_13ILNS0_15Connection_SideE1ENSt3__17variantIJNS0_15Client_Hello_13ENS0_15Client_Hello_12ENS0_14Certificate_13ENS0_21Certificate_Verify_13ENS0_11Finished_13EEEENS4_IJNS0_15Server_Hello_13ENS0_15Server_Hello_12ENS0_19Hello_Retry_RequestENS0_20Encrypted_ExtensionsES7_NS0_22Certificate_Request_13ES8_S9_EEENS4_IJNS0_21New_Session_Ticket_13ENS0_10Key_UpdateEEEEE7sendingIS7_EENS3_17reference_wrapperIT_EESN_Qsr3stdE18is_constructible_vIT0_TL0__E
Unexecuted instantiation: _ZN5Botan3TLS18Handshake_State_13ILNS0_15Connection_SideE1ENSt3__17variantIJNS0_15Client_Hello_13ENS0_15Client_Hello_12ENS0_14Certificate_13ENS0_21Certificate_Verify_13ENS0_11Finished_13EEEENS4_IJNS0_15Server_Hello_13ENS0_15Server_Hello_12ENS0_19Hello_Retry_RequestENS0_20Encrypted_ExtensionsES7_NS0_22Certificate_Request_13ES8_S9_EEENS4_IJNS0_21New_Session_Ticket_13ENS0_10Key_UpdateEEEEE7sendingIS8_EENS3_17reference_wrapperIT_EESN_Qsr3stdE18is_constructible_vIT0_TL0__E
Unexecuted instantiation: _ZN5Botan3TLS18Handshake_State_13ILNS0_15Connection_SideE1ENSt3__17variantIJNS0_15Client_Hello_13ENS0_15Client_Hello_12ENS0_14Certificate_13ENS0_21Certificate_Verify_13ENS0_11Finished_13EEEENS4_IJNS0_15Server_Hello_13ENS0_15Server_Hello_12ENS0_19Hello_Retry_RequestENS0_20Encrypted_ExtensionsES7_NS0_22Certificate_Request_13ES8_S9_EEENS4_IJNS0_21New_Session_Ticket_13ENS0_10Key_UpdateEEEEE7sendingIS9_EENS3_17reference_wrapperIT_EESN_Qsr3stdE18is_constructible_vIT0_TL0__E
144
145
      template <typename... MsgTs>
146
      decltype(auto) sending(std::variant<MsgTs...> message)
147
         requires(is_generalizable_to<Outbound_Message_T>(message))
148
      {
149
         return std::visit(
150
            [&](auto msg) -> as_wrapped_references_t<std::variant<MsgTs...>> { return sending(std::move(msg)); },
151
            std::move(message));
152
      }
153
154
0
      decltype(auto) received(Handshake_Message_13 message) {
155
0
         return std::visit(
156
0
            [&](auto msg) -> as_wrapped_references_t<Inbound_Message_T> {
157
0
               if constexpr(std::is_constructible_v<Inbound_Message_T, decltype(msg)>) {
158
0
                  return std::reference_wrapper<decltype(msg)>(store(std::move(msg), true));
159
0
               } else {
160
0
                  throw TLS_Exception(AlertType::UnexpectedMessage, "received an illegal handshake message");
161
0
               }
162
0
            },
Unexecuted instantiation: std::__1::variant<std::__1::reference_wrapper<Botan::TLS::Client_Hello_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Client_Hello_12>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Verify_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Finished_13> > Botan::TLS::Handshake_State_13<(Botan::TLS::Connection_Side)2, std::__1::variant<Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Key_Update> >::received(std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>)::{lambda(auto:1)#1}::operator()<Botan::TLS::Client_Hello_13>(Botan::TLS::Client_Hello_13) const
Unexecuted instantiation: std::__1::variant<std::__1::reference_wrapper<Botan::TLS::Client_Hello_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Client_Hello_12>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Verify_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Finished_13> > Botan::TLS::Handshake_State_13<(Botan::TLS::Connection_Side)2, std::__1::variant<Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Key_Update> >::received(std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>)::{lambda(auto:1)#1}::operator()<Botan::TLS::Client_Hello_12>(Botan::TLS::Client_Hello_12) const
Unexecuted instantiation: std::__1::variant<std::__1::reference_wrapper<Botan::TLS::Client_Hello_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Client_Hello_12>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Verify_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Finished_13> > Botan::TLS::Handshake_State_13<(Botan::TLS::Connection_Side)2, std::__1::variant<Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Key_Update> >::received(std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>)::{lambda(auto:1)#1}::operator()<Botan::TLS::Server_Hello_13>(Botan::TLS::Server_Hello_13) const
Unexecuted instantiation: std::__1::variant<std::__1::reference_wrapper<Botan::TLS::Client_Hello_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Client_Hello_12>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Verify_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Finished_13> > Botan::TLS::Handshake_State_13<(Botan::TLS::Connection_Side)2, std::__1::variant<Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Key_Update> >::received(std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>)::{lambda(auto:1)#1}::operator()<Botan::TLS::Server_Hello_12>(Botan::TLS::Server_Hello_12) const
Unexecuted instantiation: std::__1::variant<std::__1::reference_wrapper<Botan::TLS::Client_Hello_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Client_Hello_12>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Verify_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Finished_13> > Botan::TLS::Handshake_State_13<(Botan::TLS::Connection_Side)2, std::__1::variant<Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Key_Update> >::received(std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>)::{lambda(auto:1)#1}::operator()<Botan::TLS::Hello_Retry_Request>(Botan::TLS::Hello_Retry_Request) const
Unexecuted instantiation: std::__1::variant<std::__1::reference_wrapper<Botan::TLS::Client_Hello_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Client_Hello_12>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Verify_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Finished_13> > Botan::TLS::Handshake_State_13<(Botan::TLS::Connection_Side)2, std::__1::variant<Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Key_Update> >::received(std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>)::{lambda(auto:1)#1}::operator()<Botan::TLS::Encrypted_Extensions>(Botan::TLS::Encrypted_Extensions) const
Unexecuted instantiation: std::__1::variant<std::__1::reference_wrapper<Botan::TLS::Client_Hello_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Client_Hello_12>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Verify_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Finished_13> > Botan::TLS::Handshake_State_13<(Botan::TLS::Connection_Side)2, std::__1::variant<Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Key_Update> >::received(std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>)::{lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_13>(Botan::TLS::Certificate_13) const
Unexecuted instantiation: std::__1::variant<std::__1::reference_wrapper<Botan::TLS::Client_Hello_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Client_Hello_12>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Verify_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Finished_13> > Botan::TLS::Handshake_State_13<(Botan::TLS::Connection_Side)2, std::__1::variant<Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Key_Update> >::received(std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>)::{lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Request_13>(Botan::TLS::Certificate_Request_13) const
Unexecuted instantiation: std::__1::variant<std::__1::reference_wrapper<Botan::TLS::Client_Hello_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Client_Hello_12>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Verify_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Finished_13> > Botan::TLS::Handshake_State_13<(Botan::TLS::Connection_Side)2, std::__1::variant<Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Key_Update> >::received(std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>)::{lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Verify_13>(Botan::TLS::Certificate_Verify_13) const
Unexecuted instantiation: std::__1::variant<std::__1::reference_wrapper<Botan::TLS::Client_Hello_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Client_Hello_12>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Verify_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Finished_13> > Botan::TLS::Handshake_State_13<(Botan::TLS::Connection_Side)2, std::__1::variant<Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Key_Update> >::received(std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>)::{lambda(auto:1)#1}::operator()<Botan::TLS::Finished_13>(Botan::TLS::Finished_13) const
Unexecuted instantiation: std::__1::variant<std::__1::reference_wrapper<Botan::TLS::Server_Hello_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Server_Hello_12>, {lambda(auto:1)#1}::operator()<Botan::TLS::Hello_Retry_Request>, {lambda(auto:1)#1}::operator()<Botan::TLS::Encrypted_Extensions>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Request_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Verify_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Finished_13> > Botan::TLS::Handshake_State_13<(Botan::TLS::Connection_Side)1, std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::New_Session_Ticket_13, Botan::TLS::Key_Update> >::received(std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>)::{lambda(auto:1)#1}::operator()<Botan::TLS::Client_Hello_13>(Botan::TLS::Client_Hello_13) const
Unexecuted instantiation: std::__1::variant<std::__1::reference_wrapper<Botan::TLS::Server_Hello_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Server_Hello_12>, {lambda(auto:1)#1}::operator()<Botan::TLS::Hello_Retry_Request>, {lambda(auto:1)#1}::operator()<Botan::TLS::Encrypted_Extensions>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Request_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Verify_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Finished_13> > Botan::TLS::Handshake_State_13<(Botan::TLS::Connection_Side)1, std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::New_Session_Ticket_13, Botan::TLS::Key_Update> >::received(std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>)::{lambda(auto:1)#1}::operator()<Botan::TLS::Client_Hello_12>(Botan::TLS::Client_Hello_12) const
Unexecuted instantiation: std::__1::variant<std::__1::reference_wrapper<Botan::TLS::Server_Hello_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Server_Hello_12>, {lambda(auto:1)#1}::operator()<Botan::TLS::Hello_Retry_Request>, {lambda(auto:1)#1}::operator()<Botan::TLS::Encrypted_Extensions>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Request_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Verify_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Finished_13> > Botan::TLS::Handshake_State_13<(Botan::TLS::Connection_Side)1, std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::New_Session_Ticket_13, Botan::TLS::Key_Update> >::received(std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>)::{lambda(auto:1)#1}::operator()<Botan::TLS::Server_Hello_13>(Botan::TLS::Server_Hello_13) const
Unexecuted instantiation: std::__1::variant<std::__1::reference_wrapper<Botan::TLS::Server_Hello_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Server_Hello_12>, {lambda(auto:1)#1}::operator()<Botan::TLS::Hello_Retry_Request>, {lambda(auto:1)#1}::operator()<Botan::TLS::Encrypted_Extensions>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Request_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Verify_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Finished_13> > Botan::TLS::Handshake_State_13<(Botan::TLS::Connection_Side)1, std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::New_Session_Ticket_13, Botan::TLS::Key_Update> >::received(std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>)::{lambda(auto:1)#1}::operator()<Botan::TLS::Server_Hello_12>(Botan::TLS::Server_Hello_12) const
Unexecuted instantiation: std::__1::variant<std::__1::reference_wrapper<Botan::TLS::Server_Hello_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Server_Hello_12>, {lambda(auto:1)#1}::operator()<Botan::TLS::Hello_Retry_Request>, {lambda(auto:1)#1}::operator()<Botan::TLS::Encrypted_Extensions>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Request_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Verify_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Finished_13> > Botan::TLS::Handshake_State_13<(Botan::TLS::Connection_Side)1, std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::New_Session_Ticket_13, Botan::TLS::Key_Update> >::received(std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>)::{lambda(auto:1)#1}::operator()<Botan::TLS::Hello_Retry_Request>(Botan::TLS::Hello_Retry_Request) const
Unexecuted instantiation: std::__1::variant<std::__1::reference_wrapper<Botan::TLS::Server_Hello_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Server_Hello_12>, {lambda(auto:1)#1}::operator()<Botan::TLS::Hello_Retry_Request>, {lambda(auto:1)#1}::operator()<Botan::TLS::Encrypted_Extensions>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Request_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Verify_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Finished_13> > Botan::TLS::Handshake_State_13<(Botan::TLS::Connection_Side)1, std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::New_Session_Ticket_13, Botan::TLS::Key_Update> >::received(std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>)::{lambda(auto:1)#1}::operator()<Botan::TLS::Encrypted_Extensions>(Botan::TLS::Encrypted_Extensions) const
Unexecuted instantiation: std::__1::variant<std::__1::reference_wrapper<Botan::TLS::Server_Hello_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Server_Hello_12>, {lambda(auto:1)#1}::operator()<Botan::TLS::Hello_Retry_Request>, {lambda(auto:1)#1}::operator()<Botan::TLS::Encrypted_Extensions>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Request_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Verify_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Finished_13> > Botan::TLS::Handshake_State_13<(Botan::TLS::Connection_Side)1, std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::New_Session_Ticket_13, Botan::TLS::Key_Update> >::received(std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>)::{lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_13>(Botan::TLS::Certificate_13) const
Unexecuted instantiation: std::__1::variant<std::__1::reference_wrapper<Botan::TLS::Server_Hello_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Server_Hello_12>, {lambda(auto:1)#1}::operator()<Botan::TLS::Hello_Retry_Request>, {lambda(auto:1)#1}::operator()<Botan::TLS::Encrypted_Extensions>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Request_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Verify_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Finished_13> > Botan::TLS::Handshake_State_13<(Botan::TLS::Connection_Side)1, std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::New_Session_Ticket_13, Botan::TLS::Key_Update> >::received(std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>)::{lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Request_13>(Botan::TLS::Certificate_Request_13) const
Unexecuted instantiation: std::__1::variant<std::__1::reference_wrapper<Botan::TLS::Server_Hello_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Server_Hello_12>, {lambda(auto:1)#1}::operator()<Botan::TLS::Hello_Retry_Request>, {lambda(auto:1)#1}::operator()<Botan::TLS::Encrypted_Extensions>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Request_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Verify_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Finished_13> > Botan::TLS::Handshake_State_13<(Botan::TLS::Connection_Side)1, std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::New_Session_Ticket_13, Botan::TLS::Key_Update> >::received(std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>)::{lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Verify_13>(Botan::TLS::Certificate_Verify_13) const
Unexecuted instantiation: std::__1::variant<std::__1::reference_wrapper<Botan::TLS::Server_Hello_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Server_Hello_12>, {lambda(auto:1)#1}::operator()<Botan::TLS::Hello_Retry_Request>, {lambda(auto:1)#1}::operator()<Botan::TLS::Encrypted_Extensions>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Request_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Certificate_Verify_13>, {lambda(auto:1)#1}::operator()<Botan::TLS::Finished_13> > Botan::TLS::Handshake_State_13<(Botan::TLS::Connection_Side)1, std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::New_Session_Ticket_13, Botan::TLS::Key_Update> >::received(std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>)::{lambda(auto:1)#1}::operator()<Botan::TLS::Finished_13>(Botan::TLS::Finished_13) const
163
0
            std::move(message));
164
0
      }
Unexecuted instantiation: Botan::TLS::Handshake_State_13<(Botan::TLS::Connection_Side)2, std::__1::variant<Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Key_Update> >::received(std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>)
Unexecuted instantiation: Botan::TLS::Handshake_State_13<(Botan::TLS::Connection_Side)1, std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::New_Session_Ticket_13, Botan::TLS::Key_Update> >::received(std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>)
165
166
0
      decltype(auto) received(Post_Handshake_Message_13 message) {
167
0
         return std::visit(
168
0
            [](auto msg) -> Inbound_Post_Handshake_Message_T {
169
0
               if constexpr(std::is_constructible_v<Inbound_Post_Handshake_Message_T, decltype(msg)>) {
170
0
                  return msg;
171
0
               } else {
172
0
                  throw TLS_Exception(AlertType::UnexpectedMessage, "received an unexpected post-handshake message");
173
0
               }
174
0
            },
Unexecuted instantiation: std::__1::variant<Botan::TLS::Key_Update> Botan::TLS::Handshake_State_13<(Botan::TLS::Connection_Side)2, std::__1::variant<Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Key_Update> >::received(std::__1::variant<Botan::TLS::New_Session_Ticket_13, Botan::TLS::Key_Update>)::{lambda(auto:1)#1}::operator()<Botan::TLS::New_Session_Ticket_13>(Botan::TLS::New_Session_Ticket_13) const
Unexecuted instantiation: std::__1::variant<Botan::TLS::Key_Update> Botan::TLS::Handshake_State_13<(Botan::TLS::Connection_Side)2, std::__1::variant<Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Key_Update> >::received(std::__1::variant<Botan::TLS::New_Session_Ticket_13, Botan::TLS::Key_Update>)::{lambda(auto:1)#1}::operator()<Botan::TLS::Key_Update>(Botan::TLS::Key_Update) const
Unexecuted instantiation: std::__1::variant<Botan::TLS::New_Session_Ticket_13, Botan::TLS::Key_Update> Botan::TLS::Handshake_State_13<(Botan::TLS::Connection_Side)1, std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::New_Session_Ticket_13, Botan::TLS::Key_Update> >::received(std::__1::variant<Botan::TLS::New_Session_Ticket_13, Botan::TLS::Key_Update>)::{lambda(auto:1)#1}::operator()<Botan::TLS::New_Session_Ticket_13>(Botan::TLS::New_Session_Ticket_13) const
Unexecuted instantiation: std::__1::variant<Botan::TLS::New_Session_Ticket_13, Botan::TLS::Key_Update> Botan::TLS::Handshake_State_13<(Botan::TLS::Connection_Side)1, std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::New_Session_Ticket_13, Botan::TLS::Key_Update> >::received(std::__1::variant<Botan::TLS::New_Session_Ticket_13, Botan::TLS::Key_Update>)::{lambda(auto:1)#1}::operator()<Botan::TLS::Key_Update>(Botan::TLS::Key_Update) const
175
0
            std::move(message));
176
0
      }
Unexecuted instantiation: Botan::TLS::Handshake_State_13<(Botan::TLS::Connection_Side)2, std::__1::variant<Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Key_Update> >::received(std::__1::variant<Botan::TLS::New_Session_Ticket_13, Botan::TLS::Key_Update>)
Unexecuted instantiation: Botan::TLS::Handshake_State_13<(Botan::TLS::Connection_Side)1, std::__1::variant<Botan::TLS::Client_Hello_13, Botan::TLS::Client_Hello_12, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::Server_Hello_13, Botan::TLS::Server_Hello_12, Botan::TLS::Hello_Retry_Request, Botan::TLS::Encrypted_Extensions, Botan::TLS::Certificate_13, Botan::TLS::Certificate_Request_13, Botan::TLS::Certificate_Verify_13, Botan::TLS::Finished_13>, std::__1::variant<Botan::TLS::New_Session_Ticket_13, Botan::TLS::Key_Update> >::received(std::__1::variant<Botan::TLS::New_Session_Ticket_13, Botan::TLS::Key_Update>)
177
};
178
179
using Client_Handshake_State_13 = Handshake_State_13<Connection_Side::Client,
180
                                                     Client_Handshake_13_Message,
181
                                                     Server_Handshake_13_Message,
182
                                                     Server_Post_Handshake_13_Message>;
183
184
using Server_Handshake_State_13 = Handshake_State_13<Connection_Side::Server,
185
                                                     Server_Handshake_13_Message,
186
                                                     Client_Handshake_13_Message,
187
                                                     Client_Post_Handshake_13_Message>;
188
}  // namespace Botan::TLS
189
190
#endif