31 const std::shared_ptr<Session_Manager>& session_manager,
32 const std::shared_ptr<Credentials_Manager>& creds,
33 const std::shared_ptr<const Policy>& policy,
34 const std::shared_ptr<RandomNumberGenerator>& rng,
37 const auto max_version = policy->latest_supported_version(is_datagram);
39#if defined(BOTAN_HAS_TLS_13)
40 if(!max_version.is_pre_tls_13()) {
41 m_impl = std::make_unique<Server_Impl_13>(callbacks, session_manager, creds, policy, rng);
43 if(m_impl->expects_downgrade()) {
44 m_impl->set_io_buffer_size(io_buf_sz);
51#if defined(BOTAN_HAS_TLS_12)
52 if(max_version.is_pre_tls_13()) {
53 m_impl = std::make_unique<Server_Impl_12>(callbacks, session_manager, creds, policy, rng, is_datagram, io_buf_sz);
58 BOTAN_UNUSED(max_version, callbacks, session_manager, creds, policy, rng, is_datagram, io_buf_sz);
59 throw Not_Implemented(
"Requested TLS server version is not available in this build");
65 auto read = m_impl->from_peer(data);
67#if defined(BOTAN_HAS_TLS_12)
70 if(m_impl->is_downgrading()) {
71 auto info = m_impl->extract_downgrade_info();
72 m_impl = std::make_unique<Server_Impl_12>(*info);
75 read = m_impl->from_peer(info->peer_transcript);
Server(const std::shared_ptr< Callbacks > &callbacks, const std::shared_ptr< Session_Manager > &session_manager, const std::shared_ptr< Credentials_Manager > &creds, const std::shared_ptr< const Policy > &policy, const std::shared_ptr< RandomNumberGenerator > &rng, bool is_datagram=false, size_t reserved_io_buffer_size=TLS::Channel::IO_BUF_DEFAULT_SIZE)