Skip to content

[WIP] HTTP/3 (QUIC) foundation: Phase 0 (build risk) + Phase 1 (primitives)#27680

Draft
quaesitor-scientiam wants to merge 1 commit into
vlang:masterfrom
quaesitor-scientiam:http3-quic-foundation
Draft

[WIP] HTTP/3 (QUIC) foundation: Phase 0 (build risk) + Phase 1 (primitives)#27680
quaesitor-scientiam wants to merge 1 commit into
vlang:masterfrom
quaesitor-scientiam:http3-quic-foundation

Conversation

@quaesitor-scientiam

Copy link
Copy Markdown
Contributor

Summary

Draft PR tracking early progress on HTTP/3/QUIC support (#27675). This is a
work-in-progress foundation, not ready to merge — opened as a draft so
the work is visible/discoverable and anyone can pick it up or contribute
while I'm away.

See vlib/net/quic/PROGRESS.md
on this branch for an exact phase-by-phase checklist of what's done, what's
deliberately deferred (and to which later phase), and what's next — that's
the best starting point for anyone continuing this.

What's in this PR

  • Phase 0 (cross-platform build risk): confirmed Windows CI already
    builds/tests crypto.ecdsa against OpenSSL on all 3 platforms (no new
    opt-out flag needed for the new P-256/RSA-PSS dependency), and confirmed
    mbedTLS's X.509 parse/verify functions work standalone with no
    mbedtls_ssl_context (needed since this repo implements TLS 1.3 for QUIC
    from scratch in pure V rather than patching vendored mbedTLS — see HTTP/3 (QUIC) support for net.http #27675
    for why: mbedTLS has no QUIC support in any released version).
  • Phase 1 (primitives): new net.quic package with a QUIC varint codec,
    packet number encode/reconstruct (RFC 9000 §17.1 + Appendix A), and
    long/short header parsing (RFC 9000 §17.2/17.3). Plus P-256 ECDH added to
    crypto.ecdsa and a new crypto.rsa_pss module, both needed for the TLS
    1.3 handshake landing in Phase 2.
  • A /vreview pass on this diff found and fixed two real bugs before it
    landed: a wire-integer truncation in header parsing and a minor OpenSSL
    leak — both have regression tests.

Test plan

  • All new/modified code has passing tests under ./vnew test <path>
  • ./vnew fmt -w applied to all touched .v files
  • ./vnew check-md passes on the new PROGRESS.md/README.md
  • Phase 2+ still to come — see PROGRESS.md checklist

🧙 Built with WOZCODE

…ves)

Adds QUIC varint codec, packet number encode/reconstruct (RFC 9000 §17.1 +
Appendix A), and long/short header parsing (RFC 9000 §17.2/17.3) as the first
buildable pieces of an HTTP/3 implementation (tracking issue vlang#27675).

Adds P-256 ECDH to crypto.ecdsa and a new crypto.rsa_pss module (RSA-PSS
sign/verify), both needed for the QUIC-scoped TLS 1.3 handshake landing in
Phase 2 — this repo implements that handshake from scratch in pure V rather
than patching vendored mbedTLS, which has no QUIC support in any released
version (see the tracking issue for the full comparison).

Confirms mbedTLS's X.509 parse/verify functions work standalone (no
mbedtls_ssl_context), and that the existing Windows CI OpenSSL coverage
already exercises the exact dependency this work adds.

/vreview caught and fixed two real bugs before this landed: a wire-integer
truncation in parse_long_header's token_len handling, and a minor OpenSSL
leak in the new PublicKey.from_uncompressed_bytes.

See vlib/net/quic/PROGRESS.md for exact phase-by-phase status and what's
next, for anyone continuing this work.

Co-Authored-By: WOZCODE <contact@withwoz.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant