__owur SSL *ossl_quic_conn_stream_new(SSL *s, uint64_t flags);
__owur SSL *ossl_quic_get0_connection(SSL *s);
__owur int ossl_quic_get_stream_type(SSL *s);
+__owur uint64_t ossl_quic_get_stream_id(SSL *s);
/*
* Used to override ossl_time_now() for debug purposes. Must be called before
#define SSL_STREAM_TYPE_BIDI (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE)
__owur int SSL_get_stream_type(SSL *s);
+__owur uint64_t SSL_get_stream_id(SSL *s);
+
#define SSL_STREAM_FLAG_UNI (1U << 0)
__owur SSL *SSL_new_stream(SSL *s, uint64_t flags);
return SSL_STREAM_TYPE_WRITE;
}
+/*
+ * SSL_get_stream_id
+ * -----------------
+ */
+uint64_t ossl_quic_get_stream_id(SSL *s)
+{
+ QCTX ctx;
+
+ if (!expect_quic_with_stream(s, /*remote_init=*/-1, &ctx))
+ return UINT64_MAX;
+
+ return ctx.xso->stream->id;
+}
+
/*
* QUIC Front-End I/O API: SSL_CTX Management
* ==========================================
#endif
}
+uint64_t SSL_get_stream_id(SSL *s)
+{
+#ifndef OPENSSL_NO_QUIC
+ if (!IS_QUIC(s))
+ return UINT64_MAX;
+
+ return ossl_quic_get_stream_id(s);
+#else
+ return UINT64_MAX;
+#endif
+}
+
int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk)
{
unsigned char *data = NULL;