[WIP] HTTP/3 (QUIC) foundation: Phase 0 (build risk) + Phase 1 (primitives)#27680
Draft
quaesitor-scientiam wants to merge 1 commit into
Draft
[WIP] HTTP/3 (QUIC) foundation: Phase 0 (build risk) + Phase 1 (primitives)#27680quaesitor-scientiam wants to merge 1 commit into
quaesitor-scientiam wants to merge 1 commit into
Conversation
…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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.mdon 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
builds/tests
crypto.ecdsaagainst OpenSSL on all 3 platforms (no newopt-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 QUICfrom 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).
net.quicpackage 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.ecdsaand a newcrypto.rsa_pssmodule, both needed for the TLS1.3 handshake landing in Phase 2.
/vreviewpass on this diff found and fixed two real bugs before itlanded: a wire-integer truncation in header parsing and a minor OpenSSL
leak — both have regression tests.
Test plan
./vnew test <path>./vnew fmt -wapplied to all touched.vfiles./vnew check-mdpasses on the newPROGRESS.md/README.mdPROGRESS.mdchecklist🧙 Built with WOZCODE