const BIO_ADDR *peer_addr);
__owur SSL *ossl_quic_conn_stream_new(SSL *s, uint64_t flags);
__owur SSL *ossl_quic_get0_connection(SSL *s);
+__owur SSL *ossl_quic_get0_listener(SSL *s);
__owur int ossl_quic_get_stream_type(SSL *s);
__owur uint64_t ossl_quic_get_stream_id(SSL *s);
__owur int ossl_quic_is_stream_local(SSL *s);
uint64_t *value);
__owur int ossl_quic_set_value_uint(SSL *s, uint32_t class_, uint32_t id,
uint64_t value);
+__owur SSL *ossl_quic_accept_connection(SSL *ssl, uint64_t flags);
+__owur size_t ossl_quic_get_accept_connection_queue_len(SSL *ssl);
+__owur int ossl_quic_listen(SSL *ssl);
__owur int ossl_quic_stream_reset(SSL *ssl,
const SSL_STREAM_RESET_ARGS *args,
__owur SSL *SSL_get0_connection(SSL *s);
__owur int SSL_is_connection(SSL *s);
+__owur int SSL_is_listener(SSL *ssl);
+__owur SSL *SSL_get0_listener(SSL *s);
__owur SSL *SSL_new_listener(SSL_CTX *ctx, uint64_t flags);
+__owur SSL *SSL_accept_connection(SSL *ssl, uint64_t flags);
+__owur size_t SSL_get_accept_connection_queue_len(SSL *ssl);
+__owur int SSL_listen(SSL *ssl);
#define SSL_STREAM_TYPE_NONE 0
#define SSL_STREAM_TYPE_READ (1U << 0)
return &ctx.qc->obj.ssl;
}
+/*
+ * SSL_get0_listener
+ * -----------------
+ */
+SSL *ossl_quic_get0_listener(SSL *s)
+{
+ QCTX ctx;
+
+ if (!expect_quic(s, &ctx))
+ return NULL;
+
+ return NULL; // XXX TODO
+}
+
/*
* SSL_get_stream_type
* -------------------
return NULL;
}
+SSL *ossl_quic_accept_connection(SSL *ssl, uint64_t flags)
+{
+ return NULL; // TODO XXX
+}
+
+size_t ossl_quic_get_accept_connection_queue_len(SSL *ssl)
+{
+ return 0; // TODO XXX
+}
+
+int ossl_quic_listen(SSL *ssl)
+{
+ return 0; // TODO XXX
+}
+
/*
* QUIC Front-End I/O API: SSL_CTX Management
* ==========================================
return SSL_get0_connection(s) == s;
}
+SSL *SSL_get0_listener(SSL *s)
+{
+#ifndef OPENSSL_NO_QUIC
+ if (!IS_QUIC(s))
+ return s;
+
+ return ossl_quic_get0_listener(s);
+#else
+ return s;
+#endif
+}
+
+int SSL_is_listener(SSL *s)
+{
+ return SSL_get0_listener(s) == s;
+}
+
int SSL_get_stream_type(SSL *s)
{
#ifndef OPENSSL_NO_QUIC
#endif
}
+SSL *SSL_accept_connection(SSL *ssl, uint64_t flags)
+{
+#ifndef OPENSSL_NO_QUIC
+ if (!IS_QUIC(ssl))
+ return NULL;
+
+ return ossl_quic_accept_connection(ssl, flags);
+#else
+ return NULL;
+#endif
+}
+
+size_t SSL_get_accept_connection_queue_len(SSL *ssl)
+{
+#ifndef OPENSSL_NO_QUIC
+ if (!IS_QUIC(ssl))
+ return 0;
+
+ return ossl_quic_get_accept_connection_queue_len(ssl);
+#else
+ return 0;
+#endif
+}
+
+int SSL_listen(SSL *ssl)
+{
+#ifndef OPENSSL_NO_QUIC
+ if (!IS_QUIC(ssl))
+ return 0;
+
+ return ossl_quic_listen(ssl);
+#else
+ return 0;
+#endif
+}
+
int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk)
{
unsigned char *data = NULL;