=pod

=head1 NAME

OSSL_QUIC_client_method, OSSL_QUIC_client_thread_method, OSSL_QUIC_server_method, OSSL_QUIC_method
- Provide SSL_METHOD objects for QUIC enabled functions

=head1 SYNOPSIS

 #include <openssl/quic.h>

 const SSL_METHOD *OSSL_QUIC_client_method(void);
 const SSL_METHOD *OSSL_QUIC_client_thread_method(void);
 const SSL_METHOD *OSSL_QUIC_server_method(void);
 const SSL_METHOD *OSSL_QUIC_method(void);

=head1 DESCRIPTION

The OSSL_QUIC_client_method(), OSSL_QUIC_client_thread_method(), and
OSSL_QUIC_server_method() functions provide methods for the
L<SSL_CTX_new_ex(3)> function to provide QUIC protocol support.

The OSSL_QUIC_client_thread_method() uses threads to allow for a blocking
mode of operation and avoid the need to return control to the
OpenSSL library for processing time based events.
The OSSL_QUIC_client_method() does not use threads and depends on
nonblocking mode of operation and the application periodically calling SSL
functions.

The OSSL_QUIC_server_method() provides server-side QUIC protocol support and
must be used with the L<SSL_new_listener(3)> API. Attempting to use
OSSL_QUIC_server_method() with L<SSL_new(3)> will result in an error.

The OSSL_QUIC_method() provides generic QUIC protocol support when a user wishes to
defer selection of server or client protocol functionality until such time as a
connection is made.  This is similar to the functionality provided by
L<DTLS_method(3)>, and can be used with the SSL_listen_ex() call, which behaves
similarly to L<DTLSv1_listen(3)>.

=head1 RETURN VALUES

These functions return pointers to the constant method objects.

=head1 SEE ALSO

L<SSL_CTX_new_ex(3)>, L<SSL_new_listener(3)>, L<SSL_listen_ex(3)>

=head1 HISTORY

OSSL_QUIC_client_method() and OSSL_QUIC_client_thread_method() were added in
OpenSSL 3.2.

OSSL_QUIC_server_method() was added in OpenSSL 3.5.

OSSL_QUIC_method() was added in OpenSSL 4.0.

=head1 COPYRIGHT

Copyright 2022-2025 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the Apache License 2.0 (the "License").  You may not use
this file except in compliance with the License.  You can obtain a copy
in the file LICENSE in the source distribution or at
L<https://www.openssl.org/source/license.html>.

=cut
