typedef struct quic_tserver_args_st {
OSSL_LIB_CTX *libctx;
const char *propq;
+ SSL_CTX *ctx;
BIO *net_rbio, *net_wbio;
OSSL_TIME (*now_cb)(void *arg);
void *now_cb_arg;
BIO *ossl_quic_tserver_get0_rbio(QUIC_TSERVER *srv);
+SSL_CTX *ossl_quic_tserver_get0_ssl_ctx(QUIC_TSERVER *srv);
+
/*
* Returns 1 if the peer has sent a STOP_SENDING frame for a stream.
* app_error_code is written if this returns 1.
goto err;
#endif
- srv->ctx = SSL_CTX_new_ex(srv->args.libctx, srv->args.propq, TLS_method());
+ if (args->ctx != NULL)
+ srv->ctx = args->ctx;
+ else
+ srv->ctx = SSL_CTX_new_ex(srv->args.libctx, srv->args.propq,
+ TLS_method());
if (srv->ctx == NULL)
goto err;
err:
if (srv != NULL) {
+ if (args->ctx == NULL)
+ SSL_CTX_free(srv->ctx);
+ SSL_free(srv->tls);
ossl_quic_channel_free(srv->ch);
#if defined(OPENSSL_THREADS)
ossl_crypto_mutex_free(&srv->mutex);
return srv->args.net_rbio;
}
+SSL_CTX *ossl_quic_tserver_get0_ssl_ctx(QUIC_TSERVER *srv)
+{
+ return srv->ctx;
+}
+
int ossl_quic_tserver_stream_has_peer_stop_sending(QUIC_TSERVER *srv,
uint64_t stream_id,
uint64_t *app_error_code)
tserver_args.net_rbio = sbio;
tserver_args.net_wbio = fisbio;
tserver_args.alpn = NULL;
+ tserver_args.ctx = NULL;
if ((flags & QTEST_FLAG_FAKE_TIME) != 0) {
fake_now = ossl_time_zero();
tserver_args.now_cb = fake_now_cb;
s_args.alpn = NULL;
s_args.now_cb = get_time;
s_args.now_cb_arg = h;
+ s_args.ctx = NULL;
if (!TEST_ptr(h->s = ossl_quic_tserver_new(&s_args, certfile, keyfile)))
goto err;
tserver_args.net_rbio = s_net_bio;
tserver_args.net_wbio = s_net_bio;
tserver_args.alpn = NULL;
+ tserver_args.ctx = NULL;
if (use_fake_time)
tserver_args.now_cb = fake_now;
tserver_args.net_wbio = bio;
tserver_args.alpn = alpn;
tserver_args.alpnlen = sizeof(alpn);
+ tserver_args.ctx = NULL;
qtserv = ossl_quic_tserver_new(&tserver_args, certfile, keyfile);
if (qtserv == NULL) {