SSL_new_domain3ssl
Ssl object interface for managing quic event domains
Usage
#include <openssl/ssl.h>SSL *SSL_new_domain(SSL_CTX *ctx, uint64_t flags);int SSL_is_domain(SSL *ssl);SSL *SSL_get0_domain(SSL *ssl);
Overview
The SSL_new_domain() function creates a new QUIC event domain, represented as an SSL object. This is known as a QUIC domain SSL object (QDSO). The concept of a QUIC event domain is discussed in detail in openssl-quic-concurrency(7).
The flags argument to SSL_new_domain() specifies a set of domain flags. If the flags argument to SSL_new_domain() does not specify one of the flags SSL_DOMAIN_FLAG_SINGLE_THREAD, SSL_DOMAIN_FLAG_MULTI_THREAD or SSL_DOMAIN_FLAG_THREAD_ASSISTED, the domain flags configured on the SSL_CTX are inherited as a default and any other flags in flags are added to the set of inherited flags. Otherwise, the domain flags in flags are used. See SSL_CTX_set_domain_flags(3) for details of the available domain flags and how they can be configured on a SSL_CTX.
A QUIC domain SSL object can be managed in the same way as any other SSL object, in that it can be refcounted and freed normally. A QUIC domain SSL object is the parent of a number of child objects such as QUIC listener SSL objects. Once a QUIC domain SSL object has been created, a listener can be created under it using SSL_new_listener_from(3).
SSL_is_domain() returns 1 if a SSL object is a QUIC domain SSL object.
SSL_get0_domain() obtains a pointer to the QUIC domain SSL object in a SSL object hierarchy (if any).
All SSL objects in a QUIC event domain use the same domain flags, and the domain flags for a QUIC domain cannot be changed after construction.
Supported Operations
A QUIC domain SSL object exists to contain other QUIC SSL objects and provide unified event handling. As such, it supports only the following operations:
- •
-
Standard reference counting and free operations, such as SSL_up_ref(3) and SSL_free(3);
- •
-
Event processing and polling enablement APIs such as SSL_handle_events(3), and SSL_get_event_timeout(3).
- •
-
Creating listeners under the domain using SSL_new_listener_from(3).
The basic workflow of using a domain object is as follows:
- •
-
Create a new domain object using
SSL_new_domain()using aSSL_CTXwhich uses a supportedSSL_METHOD(such as OSSL_QUIC_server_method(3));
- •
-
Create listeners under the domain using SSL_new_listener_from(3).
Refer to SSL_new_listener_from(3) for details on using listeners.
Currently, domain SSL objects are only supported for QUIC usage via any QUIC SSL_METHOD.
Return values
SSL_new_domain() returns a new domain SSL object or NULL on failure.
SSL_is_domain() returns 0 or 1 depending on the type of the SSL object on which it is called.
SSL_get0_domain() returns an SSL object pointer (potentially to the same object on which it is called) or NULL.
Releases
2 releases since Debian 13 (Trixie); the text changed 1 time.