typedef struct quic_urxe_st QUIC_URXE;
typedef struct quic_engine_st QUIC_ENGINE;
typedef struct quic_obj_st QUIC_OBJ;
+typedef struct quic_conn_st QUIC_CONNECTION;
# endif
--- /dev/null
+/*
+ * Copyright 2024 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
+ * https://www.openssl.org/source/license.html
+ */
+
+#ifndef OSSL_QUIC_TRACE_H
+# define OSSL_QUIC_TRACE_H
+
+# ifndef OPENSSL_NO_QUIC
+
+int ossl_quic_trace(int write_p, int version, int content_type,
+ const void *buf, size_t msglen, SSL *ssl, void *arg);
+
+# endif
+
+#endif
--- /dev/null
+/*
+ * Copyright 2024 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
+ * https://www.openssl.org/source/license.html
+ */
+
+#ifndef OSSL_SSL_UNWRAP_H
+# define OSSL_SSL_UNWRAP_H
+
+# include <openssl/ssl.h>
+# include "internal/quic_predef.h"
+
+# define SSL_CONNECTION_FROM_SSL_ONLY_int(ssl, c) \
+ ((ssl) == NULL ? NULL \
+ : ((ssl)->type == SSL_TYPE_SSL_CONNECTION \
+ ? (c SSL_CONNECTION *)(ssl) \
+ : NULL))
+# define SSL_CONNECTION_NO_CONST
+# define SSL_CONNECTION_FROM_SSL_ONLY(ssl) \
+ SSL_CONNECTION_FROM_SSL_ONLY_int(ssl, SSL_CONNECTION_NO_CONST)
+# define SSL_CONNECTION_FROM_CONST_SSL_ONLY(ssl) \
+ SSL_CONNECTION_FROM_SSL_ONLY_int(ssl, const)
+# define SSL_CONNECTION_GET_CTX(sc) ((sc)->ssl.ctx)
+# define SSL_CONNECTION_GET_SSL(sc) (&(sc)->ssl)
+# ifndef OPENSSL_NO_QUIC
+struct ssl_connection_st *ossl_quic_obj_get0_handshake_layer(QUIC_OBJ *obj);
+# define SSL_CONNECTION_FROM_SSL_int(ssl, c) \
+ ((ssl) == NULL ? NULL \
+ : ((ssl)->type == SSL_TYPE_SSL_CONNECTION \
+ ? (c SSL_CONNECTION *)(ssl) \
+ : (SSL_TYPE_IS_QUIC((ssl)->type) \
+ ? (c SSL_CONNECTION *)ossl_quic_obj_get0_handshake_layer((QUIC_OBJ *)(ssl)) \
+ : NULL)))
+# define SSL_CONNECTION_FROM_SSL(ssl) \
+ SSL_CONNECTION_FROM_SSL_int(ssl, SSL_CONNECTION_NO_CONST)
+# define SSL_CONNECTION_FROM_CONST_SSL(ssl) \
+ SSL_CONNECTION_FROM_SSL_int(ssl, const)
+# else
+# define SSL_CONNECTION_FROM_SSL(ssl) \
+ SSL_CONNECTION_FROM_SSL_ONLY_int(ssl, SSL_CONNECTION_NO_CONST)
+# define SSL_CONNECTION_FROM_CONST_SSL(ssl) \
+ SSL_CONNECTION_FROM_SSL_ONLY_int(ssl, const)
+# endif
+
+# ifndef OPENSSL_NO_QUIC
+
+# define IS_QUIC_METHOD(m) \
+ ((m) == OSSL_QUIC_client_method() || \
+ (m) == OSSL_QUIC_client_thread_method())
+
+# define IS_QUIC_CTX(ctx) IS_QUIC_METHOD((ctx)->method)
+
+# define QUIC_CONNECTION_FROM_SSL_int(ssl, c) \
+ ((ssl) == NULL ? NULL \
+ : ((ssl)->type == SSL_TYPE_QUIC_CONNECTION \
+ ? (c QUIC_CONNECTION *)(ssl) \
+ : NULL))
+
+# define QUIC_XSO_FROM_SSL_int(ssl, c) \
+ ((ssl) == NULL \
+ ? NULL \
+ : (((ssl)->type == SSL_TYPE_QUIC_XSO \
+ ? (c QUIC_XSO *)(ssl) \
+ : ((ssl)->type == SSL_TYPE_QUIC_CONNECTION \
+ ? (c QUIC_XSO *)((QUIC_CONNECTION *)(ssl))->default_xso \
+ : NULL))))
+
+# define SSL_CONNECTION_FROM_QUIC_SSL_int(ssl, c) \
+ ((ssl) == NULL ? NULL \
+ : ((ssl)->type == SSL_TYPE_QUIC_CONNECTION \
+ ? (c SSL_CONNECTION *)((c QUIC_CONNECTION *)(ssl))->tls \
+ : NULL))
+
+# define QUIC_LISTENER_FROM_SSL_int(ssl, c) \
+ ((ssl) == NULL \
+ ? NULL \
+ : ((ssl)->type == SSL_TYPE_QUIC_LISTENER \
+ ? (c QUIC_LISTENER *)(ssl) \
+ : NULL))
+
+# define IS_QUIC_CS(ssl) ((ssl) != NULL \
+ && ((ssl)->type == SSL_TYPE_QUIC_CONNECTION \
+ || (ssl)->type == SSL_TYPE_QUIC_XSO))
+
+# define IS_QUIC(ssl) \
+ ((ssl) != NULL && SSL_TYPE_IS_QUIC((ssl)->type))
+
+# else
+
+# define QUIC_CONNECTION_FROM_SSL_int(ssl, c) NULL
+# define QUIC_XSO_FROM_SSL_int(ssl, c) NULL
+# define QUIC_LISTENER_FROM_SSL_int(ssl, c) NULL
+# define SSL_CONNECTION_FROM_QUIC_SSL_int(ssl, c) NULL
+# define IS_QUIC(ssl) 0
+# define IS_QUIC_CS(ssl) 0
+# define IS_QUIC_CTX(ctx) 0
+# define IS_QUIC_METHOD(m) 0
+
+# endif
+
+# define QUIC_CONNECTION_FROM_SSL(ssl) \
+ QUIC_CONNECTION_FROM_SSL_int(ssl, SSL_CONNECTION_NO_CONST)
+# define QUIC_CONNECTION_FROM_CONST_SSL(ssl) \
+ QUIC_CONNECTION_FROM_SSL_int(ssl, const)
+# define QUIC_XSO_FROM_SSL(ssl) \
+ QUIC_XSO_FROM_SSL_int(ssl, SSL_CONNECTION_NO_CONST)
+# define QUIC_XSO_FROM_CONST_SSL(ssl) \
+ QUIC_XSO_FROM_SSL_int(ssl, const)
+# define QUIC_LISTENER_FROM_SSL(ssl) \
+ QUIC_LISTENER_FROM_SSL_int(ssl, SSL_CONNECTION_NO_CONST)
+# define QUIC_LISTENER_FROM_CONST_SSL(ssl) \
+ QUIC_LISTENER_FROM_SSL_int(ssl, const)
+# define SSL_CONNECTION_FROM_QUIC_SSL(ssl) \
+ SSL_CONNECTION_FROM_QUIC_SSL_int(ssl, SSL_CONNECTION_NO_CONST)
+# define SSL_CONNECTION_FROM_CONST_QUIC_SSL(ssl) \
+ SSL_CONNECTION_FROM_CONST_QUIC_SSL_int(ssl, const)
+
+#endif
#include "internal/bio.h"
#include <openssl/err.h>
#include "ssl_local.h"
+#include "internal/ssl_unwrap.h"
+#include "internal/sockets.h"
static int ssl_write(BIO *h, const char *buf, size_t size, size_t *written);
static int ssl_read(BIO *b, char *buf, size_t size, size_t *readbytes);
#include <openssl/rand.h>
#include "ssl_local.h"
#include "internal/time.h"
+#include "internal/ssl_unwrap.h"
static int dtls1_handshake_write(SSL_CONNECTION *s);
static size_t dtls1_link_min_mtu(void);
*/
#include "ssl_local.h"
+#include "internal/ssl_unwrap.h"
int dtls1_write_app_data_bytes(SSL *s, uint8_t type, const void *buf_,
size_t len, size_t *written)
#include <stdio.h>
#include <openssl/objects.h>
#include "ssl_local.h"
-#include "quic/quic_local.h"
+#include "internal/ssl_unwrap.h"
#ifndef OPENSSL_NO_SRTP
#include <openssl/rand.h>
#include <openssl/err.h>
+#include "internal/ssl_unwrap.h"
#include "internal/quic_channel.h"
#include "internal/quic_error.h"
#include "internal/quic_rx_depack.h"
#include "internal/quic_lcidm.h"
#include "internal/quic_srtm.h"
#include "internal/qlog_event_helpers.h"
+#include "internal/quic_txp.h"
+#include "internal/quic_tls.h"
#include "../ssl_local.h"
#include "quic_channel_local.h"
#include "quic_port_local.h"
#include <openssl/sslerr.h>
#include <crypto/rand.h>
#include "quic_local.h"
+#include "internal/ssl_unwrap.h"
#include "internal/quic_tls.h"
#include "internal/quic_rx_depack.h"
#include "internal/quic_error.h"
* state required by the libssl API personality.
*/
struct quic_xso_st {
- /* SSL object common header. */
- struct ssl_st ssl;
+ /* QUIC_OBJ common header, including SSL object common header. */
+ QUIC_OBJ obj;
/* The connection this stream is associated with. Always non-NULL. */
QUIC_CONNECTION *conn;
*/
struct quic_conn_st {
/*
- * ssl_st is a common header for ordinary SSL objects, QUIC connection
- * objects and QUIC stream objects, allowing objects of these different
- * types to be disambiguated at runtime and providing some common fields.
+ * QUIC_OBJ is a common header for QUIC APL objects, allowing objects of
+ * these different types to be disambiguated at runtime and providing some
+ * common fields.
*
* Note: This must come first in the QUIC_CONNECTION structure.
*/
- struct ssl_st ssl;
+ QUIC_OBJ obj;
SSL *tls;
* layer for QLSO objects, wrapping the QUIC-native QUIC_PORT object.
*/
struct quic_listener_st {
- /* Common header for SSL objects. */
- struct ssl_st ssl;
+ /* QUIC_OBJ common header, including SSL object common header. */
+ QUIC_OBJ obj;
};
/* Internal calls to the QUIC CSM which come from various places. */
void ossl_quic_conn_on_remote_conn_close(QUIC_CONNECTION *qc,
OSSL_QUIC_FRAME_CONN_CLOSE *f);
-int ossl_quic_trace(int write_p, int version, int content_type,
- const void *buf, size_t msglen, SSL *ssl, void *arg);
-
# define OSSL_QUIC_ANY_VERSION 0xFFFFF
-# define IS_QUIC_METHOD(m) \
- ((m) == OSSL_QUIC_client_method() || \
- (m) == OSSL_QUIC_client_thread_method())
-# define IS_QUIC_CTX(ctx) IS_QUIC_METHOD((ctx)->method)
-
-# define QUIC_CONNECTION_FROM_SSL_int(ssl, c) \
- ((ssl) == NULL ? NULL \
- : ((ssl)->type == SSL_TYPE_QUIC_CONNECTION \
- ? (c QUIC_CONNECTION *)(ssl) \
- : NULL))
-
-# define QUIC_XSO_FROM_SSL_int(ssl, c) \
- ((ssl) == NULL \
- ? NULL \
- : (((ssl)->type == SSL_TYPE_QUIC_XSO \
- ? (c QUIC_XSO *)(ssl) \
- : ((ssl)->type == SSL_TYPE_QUIC_CONNECTION \
- ? (c QUIC_XSO *)((QUIC_CONNECTION *)(ssl))->default_xso \
- : NULL))))
-
-# define SSL_CONNECTION_FROM_QUIC_SSL_int(ssl, c) \
- ((ssl) == NULL ? NULL \
- : ((ssl)->type == SSL_TYPE_QUIC_CONNECTION \
- ? (c SSL_CONNECTION *)((c QUIC_CONNECTION *)(ssl))->tls \
- : NULL))
-
-# define QUIC_LISTENER_FROM_SSL_int(ssl, c) \
- ((ssl) == NULL \
- ? NULL \
- : ((ssl)->type == SSL_TYPE_QUIC_LISTENER \
- ? (c QUIC_LISTENER *)(ssl) \
- : NULL))
-
-# define IS_QUIC_CS(ssl) ((ssl) != NULL \
- && ((ssl)->type == SSL_TYPE_QUIC_CONNECTION \
- || (ssl)->type == SSL_TYPE_QUIC_XSO))
-
-# define IS_QUIC(ssl) \
- ((ssl) != NULL && SSL_TYPE_IS_QUIC((ssl)->type))
-# else
-# define QUIC_CONNECTION_FROM_SSL_int(ssl, c) NULL
-# define QUIC_XSO_FROM_SSL_int(ssl, c) NULL
-# define QUIC_LISTENER_FROM_SSL_int(ssl, c) NULL
-# define SSL_CONNECTION_FROM_QUIC_SSL_int(ssl, c) NULL
-# define IS_QUIC(ssl) 0
-# define IS_QUIC_CS(ssl) 0
-# define IS_QUIC_CTX(ctx) 0
-# define IS_QUIC_METHOD(m) 0
# endif
-# define QUIC_CONNECTION_FROM_SSL(ssl) \
- QUIC_CONNECTION_FROM_SSL_int(ssl, SSL_CONNECTION_NO_CONST)
-# define QUIC_CONNECTION_FROM_CONST_SSL(ssl) \
- QUIC_CONNECTION_FROM_SSL_int(ssl, const)
-# define QUIC_XSO_FROM_SSL(ssl) \
- QUIC_XSO_FROM_SSL_int(ssl, SSL_CONNECTION_NO_CONST)
-# define QUIC_XSO_FROM_CONST_SSL(ssl) \
- QUIC_XSO_FROM_SSL_int(ssl, const)
-# define QUIC_LISTENER_FROM_SSL(ssl) \
- QUIC_LISTENER_FROM_SSL_int(ssl, SSL_CONNECTION_NO_CONST)
-# define QUIC_LISTENER_FROM_CONST_SSL(ssl) \
- QUIC_LISTENER_FROM_SSL_int(ssl, const)
-# define SSL_CONNECTION_FROM_QUIC_SSL(ssl) \
- SSL_CONNECTION_FROM_QUIC_SSL_int(ssl, SSL_CONNECTION_NO_CONST)
-# define SSL_CONNECTION_FROM_CONST_QUIC_SSL(ssl) \
- SSL_CONNECTION_FROM_CONST_QUIC_SSL_int(ssl, const)
-
# define IMPLEMENT_quic_meth_func(version, func_name, q_accept, \
q_connect, enc_data) \
const SSL_METHOD *func_name(void) \
#include "quic_obj_local.h"
#include "quic_local.h"
+#include "internal/ssl_unwrap.h"
static int obj_update_cache(QUIC_OBJ *obj);
#include "internal/quic_channel.h"
#include "internal/quic_lcidm.h"
#include "internal/quic_srtm.h"
+#include "internal/ssl_unwrap.h"
#include "quic_port_local.h"
#include "quic_channel_local.h"
#include "quic_engine_local.h"
#include "internal/quic_tls.h"
#include "../ssl_local.h"
#include "internal/quic_error.h"
+#include "internal/ssl_unwrap.h"
#define QUIC_TLS_FATAL(rl, ad, err) \
do { \
#include <openssl/bio.h>
#include "../ssl_local.h"
+#include "internal/quic_trace.h"
#include "internal/quic_wire_pkt.h"
+#include "internal/quic_wire.h"
+#include "internal/ssl_unwrap.h"
static const char *packet_type(int type)
{
#include "record_local.h"
#include "internal/packet.h"
#include "internal/cryptlib.h"
+#include "internal/ssl_unwrap.h"
int DTLS_RECORD_LAYER_new(RECORD_LAYER *rl)
{
#include "record_local.h"
#include "internal/packet.h"
#include "internal/comp.h"
+#include "internal/ssl_unwrap.h"
void RECORD_LAYER_init(RECORD_LAYER *rl, SSL_CONNECTION *s)
{
#include <openssl/md5.h>
#include <openssl/core_names.h>
#include "internal/cryptlib.h"
+#include "internal/ssl_unwrap.h"
static int ssl3_generate_key_block(SSL_CONNECTION *s, unsigned char *km, int num)
{
#include <openssl/x509v3.h>
#include <openssl/core_names.h>
#include "internal/cryptlib.h"
+#include "internal/ssl_unwrap.h"
#define TLS13_NUM_CIPHERS OSSL_NELEM(tls13_ciphers)
#define SSL3_NUM_CIPHERS OSSL_NELEM(ssl3_ciphers)
*/
#include "ssl_local.h"
+#include "internal/ssl_unwrap.h"
int ssl3_do_change_cipher_spec(SSL_CONNECTION *s)
{
#include "ssl_local.h"
#include "ssl_cert_table.h"
#include "internal/thread_once.h"
+#include "internal/ssl_unwrap.h"
#ifndef OPENSSL_NO_POSIX_IO
# include <sys/stat.h>
# ifdef _WIN32
#include "internal/thread_once.h"
#include "internal/cryptlib.h"
#include "internal/comp.h"
+#include "internal/ssl_unwrap.h"
/* NB: make sure indices in these tables match values above */
#include <openssl/decoder.h>
#include <openssl/core_dispatch.h>
#include "internal/nelem.h"
+#include "internal/ssl_unwrap.h"
/*
* structure holding name tables. This is used for permitted elements in lists
#include "internal/refcount.h"
#include "internal/ktls.h"
#include "internal/to_hex.h"
+#include "internal/ssl_unwrap.h"
#include "quic/quic_local.h"
static int ssl_undefined_function_3(SSL_CONNECTION *sc, unsigned char *r,
# include "internal/time.h"
# include "internal/ssl.h"
# include "internal/cryptlib.h"
+# include "internal/quic_predef.h"
# include "record/record.h"
# ifdef OPENSSL_BUILD_SHLIBSSL
size_t server_cert_type_len;
};
-# define SSL_CONNECTION_FROM_SSL_ONLY_int(ssl, c) \
- ((ssl) == NULL ? NULL \
- : ((ssl)->type == SSL_TYPE_SSL_CONNECTION \
- ? (c SSL_CONNECTION *)(ssl) \
- : NULL))
-# define SSL_CONNECTION_NO_CONST
-# define SSL_CONNECTION_FROM_SSL_ONLY(ssl) \
- SSL_CONNECTION_FROM_SSL_ONLY_int(ssl, SSL_CONNECTION_NO_CONST)
-# define SSL_CONNECTION_FROM_CONST_SSL_ONLY(ssl) \
- SSL_CONNECTION_FROM_SSL_ONLY_int(ssl, const)
-# define SSL_CONNECTION_GET_CTX(sc) ((sc)->ssl.ctx)
-# define SSL_CONNECTION_GET_SSL(sc) (&(sc)->ssl)
-# ifndef OPENSSL_NO_QUIC
-# include "quic/quic_local.h"
-# define SSL_CONNECTION_FROM_SSL_int(ssl, c) \
- ((ssl) == NULL ? NULL \
- : ((ssl)->type == SSL_TYPE_SSL_CONNECTION \
- ? (c SSL_CONNECTION *)(ssl) \
- : ((ssl)->type == SSL_TYPE_QUIC_CONNECTION \
- ? (c SSL_CONNECTION *)((c QUIC_CONNECTION *)(ssl))->tls \
- : NULL)))
-# define SSL_CONNECTION_FROM_SSL(ssl) \
- SSL_CONNECTION_FROM_SSL_int(ssl, SSL_CONNECTION_NO_CONST)
-# define SSL_CONNECTION_FROM_CONST_SSL(ssl) \
- SSL_CONNECTION_FROM_SSL_int(ssl, const)
-# else
-# define SSL_CONNECTION_FROM_SSL(ssl) \
- SSL_CONNECTION_FROM_SSL_ONLY_int(ssl, SSL_CONNECTION_NO_CONST)
-# define SSL_CONNECTION_FROM_CONST_SSL(ssl) \
- SSL_CONNECTION_FROM_SSL_ONLY_int(ssl, const)
-# endif
-
/*
* Structure containing table entry of values associated with the signature
* algorithms (signature scheme) extension
#include <stdio.h>
#include "ssl_local.h"
#include "internal/packet.h"
+#include "internal/ssl_unwrap.h"
#include <openssl/bio.h>
#include <openssl/objects.h>
#include <openssl/evp.h>
#include <openssl/engine.h>
#include "internal/refcount.h"
#include "internal/cryptlib.h"
+#include "internal/ssl_unwrap.h"
#include "ssl_local.h"
#include "statem/statem_local.h"
#include <stdio.h>
#include "ssl_local.h"
+#include "internal/ssl_unwrap.h"
const char *SSL_state_string_long(const SSL *s)
{
#include <string.h>
#include "internal/nelem.h"
#include "internal/cryptlib.h"
+#include "internal/ssl_unwrap.h"
#include "../ssl_local.h"
#include "statem_local.h"
#include <openssl/ocsp.h>
#include "../ssl_local.h"
#include "internal/cryptlib.h"
+#include "internal/ssl_unwrap.h"
#include "statem_local.h"
EXT_RETURN tls_construct_ctos_renegotiate(SSL_CONNECTION *s, WPACKET *pkt,
#include <openssl/ct.h>
#include "../ssl_local.h"
#include "internal/cryptlib.h"
+#include "internal/ssl_unwrap.h"
#include "statem_local.h"
typedef struct {
#include "../ssl_local.h"
#include "statem_local.h"
#include "internal/cryptlib.h"
+#include "internal/ssl_unwrap.h"
#define COOKIE_STATE_FORMAT_VERSION 1
#endif
#include "internal/cryptlib.h"
+#include "internal/ssl_unwrap.h"
#include <openssl/rand.h>
#include "../ssl_local.h"
#include "statem_local.h"
#include <openssl/param_build.h>
#include "internal/cryptlib.h"
#include "internal/comp.h"
+#include "internal/ssl_unwrap.h"
static MSG_PROCESS_RETURN tls_process_as_hello_retry_request(SSL_CONNECTION *s,
PACKET *pkt);
#include "../ssl_local.h"
#include "statem_local.h"
#include "internal/cryptlib.h"
+#include "internal/ssl_unwrap.h"
#include <openssl/buffer.h>
#include <openssl/objects.h>
#include <openssl/evp.h>
#include "../ssl_local.h"
#include "statem_local.h"
#include "internal/cryptlib.h"
+#include "internal/ssl_unwrap.h"
#include <openssl/buffer.h>
#include <openssl/objects.h>
#include <openssl/evp.h>
#include "statem_local.h"
#include "internal/constant_time.h"
#include "internal/cryptlib.h"
+#include "internal/ssl_unwrap.h"
#include <openssl/buffer.h>
#include <openssl/rand.h>
#include <openssl/objects.h>
#include "record/record_local.h"
#include "internal/ktls.h"
#include "internal/cryptlib.h"
+#include "internal/ssl_unwrap.h"
#include <openssl/comp.h>
#include <openssl/evp.h>
#include <openssl/kdf.h>
#include "internal/nelem.h"
#include "internal/sizes.h"
#include "internal/tlsgroups.h"
+#include "internal/ssl_unwrap.h"
#include "ssl_local.h"
#include "quic/quic_local.h"
#include <openssl/ct.h>
/* Packet trace support for OpenSSL */
#include "internal/nelem.h"
+#include "internal/ssl_unwrap.h"
+#include "internal/quic_predef.h"
+#include "internal/quic_trace.h"
+#include "quic/quic_local.h"
typedef struct {
int num;
#include "internal/ktls.h"
#include "record/record_local.h"
#include "internal/cryptlib.h"
+#include "internal/ssl_unwrap.h"
#include <openssl/evp.h>
#include <openssl/kdf.h>
#include <openssl/core_names.h>
#include <openssl/engine.h>
#include "ssl_local.h"
+#include "internal/ssl_unwrap.h"
/*
* Engine APIs are only used to support applications that still use ENGINEs.
#include <openssl/rand.h>
#include <openssl/err.h>
#include "ssl_local.h"
+#include "internal/ssl_unwrap.h"
#ifndef OPENSSL_NO_SRP
# include <openssl/srp.h>
/* for SSL_READ_ETM() */
#include "../ssl/ssl_local.h"
+#include "internal/ssl_unwrap.h"
static int debug = 0;
#include <openssl/core_names.h>
#include "../../ssl/ssl_local.h"
+#include "internal/ssl_unwrap.h"
#include "internal/sockets.h"
#include "internal/nelem.h"
#include "handshake.h"
#include "internal/ktls.h"
#include "../ssl/ssl_local.h"
#include "../ssl/statem/statem_local.h"
+#include "internal/ssl_unwrap.h"
static OSSL_LIB_CTX *libctx = NULL;
static char *cert = NULL;
#include "internal/nelem.h"
#include "internal/tlsgroups.h"
#include "internal/ktls.h"
+#include "internal/ssl_unwrap.h"
#include "../ssl/ssl_local.h"
#include "../ssl/record/methods/recmethod_local.h"
#include "filterprov.h"
#include <openssl/err.h>
#include <openssl/engine.h>
+#ifndef OPENSSL_NO_QUIC
+/* This test does not link libssl so avoid pulling in QUIC unwrappers. */
+# define OPENSSL_NO_QUIC
+#endif
+
/* We include internal headers so we can check if the buffers are allocated */
#include "../ssl/ssl_local.h"
#include "../ssl/record/record_local.h"
#include "internal/recordmethod.h"
#include "../ssl/record/methods/recmethod_local.h"
+#include "internal/ssl_unwrap.h"
#include "internal/packet.h"
#include <openssl/evp.h>
#include "../ssl/ssl_local.h"
+#include "internal/ssl_unwrap.h"
#include "testutil.h"
#define IVLEN 12