Name Description Size
asio_async_ops.h Base class for asynchronous stream operations. Asynchronous operations, used for example to implement an interface for boost::asio::async_read_some and boost::asio::async_write_some, are based on boost::asio::coroutines. Derived operations should implement a call operator and invoke it with the correct parameters upon construction. The call operator needs to make sure that the user-provided handler is not called directly. Typically, yield / reenter is used for this in the following fashion: ``` void operator()(boost::system::error_code ec, std::size_t bytes_transferred, bool isContinuation = true) { reenter(this) { // operation specific logic, repeatedly interacting with the stream_core and the next_layer (socket) // make sure intermediate initiating function is called if(!isContinuation) { yield next_layer.async_operation(empty_buffer, this); } // call the completion handler complete_now(error_code, bytes_transferred); } } ``` Once the operation is completed and ready to call the completion handler it checks if an intermediate initiating function has been called using the `isContinuation` parameter. If not, it will call an asynchronous operation, such as `async_read_some`, with and empty buffer, set the object itself as the handler, and `yield`. As a result, the call operator will be invoked again, this time as a continuation, and will jump to the location where it yielded before using `reenter`. It is now safe to call the handler function via `complete_now`. \tparam Handler Type of the completion handler \tparam Executor1 Type of the asio executor (usually derived from the lower layer) \tparam Allocator Type of the allocator to be used 17071
asio_compat.h @brief minimum supported boost version for the TLS ASIO wrapper BOOST_VERSION % 100 is the patch level BOOST_VERSION / 100 % 1000 is the minor version BOOST_VERSION / 100000 is the major version Botan may still work with older versions of boost. Though, the asio TLS wrapper won't work with versions older than the one specified below. Also note the changelog with rationales for the required versions: until Botan 3.2.0 1.66.0 - first version to be compatible with Networking TS (N4656) and boost::beast as of Botan 3.3.0 1.73.0 - first version supporting the C++20 concepts syntax 1366
asio_context.cpp A Credentials_Manager that provides the system's certificate store as trust store, if available. Otherwise it defaults to "no trusted certificates". 1712
asio_context.h A helper class to initialize and configure Botan::TLS::Stream 3950
asio_error.h This file defines Botan-specific subclasses of boost::system::error_category. In addition to the class definition, each category class is accompanied by function `make_error_code` used to create a `boost::system::error_code` of the category from some other kind of error in Botan (for example, a TLS alert). Since error_category instances should be singletons, there's also a method to get/create the instance for each class. 3701
asio_stream.h @brief Specialization of TLS::Callbacks for the ASIO Stream Applications may decide to derive from this for fine-grained customizations of the TLS::Stream's behaviour. Examples may be OCSP integration, custom certificate validation or user-defined key exchange mechanisms. By default, this class provides all necessary customizations for the ASIO integration. The methods required for that are `final` and cannot be overridden. Each instance of TLS::Stream must have their own instance of this class. A future major version of Botan will therefor consume instances of this class as a std::unique_ptr. The current usage of std::shared_ptr is erratic. 42765
info.txt 328