30 const std::shared_ptr<Session_Manager>& session_manager,
31 const std::shared_ptr<Credentials_Manager>& creds,
32 const std::shared_ptr<const Policy>& policy,
33 const std::shared_ptr<RandomNumberGenerator>& rng,
36 const auto max_version = policy->latest_supported_version(is_datagram);
38#if defined(BOTAN_HAS_TLS_13)
39 if(!max_version.is_pre_tls_13()) {
40 m_impl = std::make_unique<Server_Impl_13>(callbacks, session_manager, creds, policy, rng);
42 if(m_impl->expects_downgrade()) {
43 m_impl->set_io_buffer_size(io_buf_sz);
50#if defined(BOTAN_HAS_TLS_12)
51 if(max_version.is_pre_tls_13()) {
52 m_impl = std::make_unique<Server_Impl_12>(callbacks, session_manager, creds, policy, rng, is_datagram, io_buf_sz);
57 BOTAN_UNUSED(max_version, callbacks, session_manager, creds, policy, rng, is_datagram, io_buf_sz);
58 throw Not_Implemented(
"Requested TLS server version is not available in this build");
64 auto read = m_impl->from_peer(data);
66#if defined(BOTAN_HAS_TLS_12)
69 if(m_impl->is_downgrading()) {
70 auto info = m_impl->extract_downgrade_info();
71 m_impl = std::make_unique<Server_Impl_12>(*info);
74 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)