Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: master QUIC support #8797

Closed
wants to merge 32 commits into from
Closed

Commits on Jan 12, 2021

  1. Add support for BoringSSL QUIC APIs

    This adds a compatible API for BoringSSL's QUIC support, based
    on the current |draft-ietf-quic-tls|.
    
    Based on BoringSSL commit 3c034b2cf386b3131f75520705491871a2e0cafe
    Based on BoringSSL commit c8e0f90f83b9ec38ea833deb86b5a41360b62b6a
    Based on BoringSSL commit 3cbb0299a28a8bd0136257251a78b91a96c5eec8
    Based on BoringSSL commit cc9d935256539af2d3b7f831abf57c0d685ffd81
    Based on BoringSSL commit e6eef1ca16a022e476bbaedffef044597cfc8f4b
    Based on BoringSSL commit 6f733791148cf8a076bf0e95498235aadbe5926d
    Based on BoringSSL commit 384d0eaf1930af1ebc47eda751f0c78dfcba1c03
    Based on BoringSSL commit a0373182eb5cc7b81d49f434596b473c7801c942
    Based on BoringSSL commit b1b76aee3cb43ce11889403c5334283d951ebd37
    tmshort committed Jan 12, 2021
    Configuration menu
    Copy the full SHA
    f5d0a9c View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    3432dcc View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    ea00895 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    a76e5ba View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    d2b7f45 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    df08303 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    0f4b66d View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    0ba4eaa View commit details
    Browse the repository at this point in the history
  9. Fix duplicate word in docs

    tmshort committed Jan 12, 2021
    Configuration menu
    Copy the full SHA
    320f4bc View commit details
    Browse the repository at this point in the history
  10. Configuration menu
    Copy the full SHA
    8f0a2e6 View commit details
    Browse the repository at this point in the history
  11. Configuration menu
    Copy the full SHA
    c8290eb View commit details
    Browse the repository at this point in the history
  12. Configuration menu
    Copy the full SHA
    b05295e View commit details
    Browse the repository at this point in the history
  13. Configuration menu
    Copy the full SHA
    aff5fbc View commit details
    Browse the repository at this point in the history
  14. Configuration menu
    Copy the full SHA
    cb01453 View commit details
    Browse the repository at this point in the history
  15. Add OPENSSL_NO_QUIC wrapper

    tmshort committed Jan 12, 2021
    Configuration menu
    Copy the full SHA
    00cf3ff View commit details
    Browse the repository at this point in the history
  16. Configuration menu
    Copy the full SHA
    9e7c41c View commit details
    Browse the repository at this point in the history
  17. Move QUIC code out of tls13_change_cipher_state()

    Create quic_change_cipher_state() that does the minimal required
    to generate the QUIC secrets. (e.g. encryption contexts are not
    initialized).
    tmshort committed Jan 12, 2021
    Configuration menu
    Copy the full SHA
    b98c9fc View commit details
    Browse the repository at this point in the history
  18. Configuration menu
    Copy the full SHA
    4ff8254 View commit details
    Browse the repository at this point in the history
  19. Add support for more secrets

    tmshort committed Jan 12, 2021
    Configuration menu
    Copy the full SHA
    cdcc973 View commit details
    Browse the repository at this point in the history
  20. Fix resumption secret

    tmshort committed Jan 12, 2021
    Configuration menu
    Copy the full SHA
    809ae19 View commit details
    Browse the repository at this point in the history
  21. Configuration menu
    Copy the full SHA
    2f22820 View commit details
    Browse the repository at this point in the history
  22. Configuration menu
    Copy the full SHA
    3a4a7a8 View commit details
    Browse the repository at this point in the history
  23. Fall-through for 0RTT

    tmshort committed Jan 12, 2021
    Configuration menu
    Copy the full SHA
    44575d9 View commit details
    Browse the repository at this point in the history
  24. Some cleanup for the main QUIC changes

    Try to reduce unneeded whitespace changes and wrap new code to 80 columns.
    Reword documentation to attempt to improve clarity.
    Add some more sanity checks and clarifying comments to the code.
    Update referenced I-D versions.
    kaduk authored and tmshort committed Jan 12, 2021
    Configuration menu
    Copy the full SHA
    c44fbbf View commit details
    Browse the repository at this point in the history
  25. Prevent KeyUpdate for QUIC

    QUIC does not use the TLS KeyUpdate message/mechanism, and indeed
    it is an error to generate or receive such a message.  Add the
    necessary checks (noting that the check for receipt should be
    redundant since SSL_provide_quic_data() is the only way to provide
    input to the TLS layer for a QUIC connection).
    kaduk authored and tmshort committed Jan 12, 2021
    Configuration menu
    Copy the full SHA
    dc6a2e1 View commit details
    Browse the repository at this point in the history
  26. Test KeyUpdate rejection

    For now, just test that we don't generate any, since we don't really
    expose the mechanics for encrypting one and the QUIC API is not
    integrated into the TLSProxy setup.
    kaduk authored and tmshort committed Jan 12, 2021
    Configuration menu
    Copy the full SHA
    0b88010 View commit details
    Browse the repository at this point in the history
  27. Fix out-of-bounds read when TLS msg is split up into multiple chunks

    Previously, SSL_provide_quic_data tried to handle this kind of
    situation, but it failed when the length of input data is less than
    SSL3_HM_HEADER_LENGTH.  If that happens, the code might get wrong
    message length by reading value from out-of-bounds region.
    tatsuhiro-t authored and tmshort committed Jan 12, 2021
    Configuration menu
    Copy the full SHA
    187e7ec View commit details
    Browse the repository at this point in the history
  28. Revert "Fix out-of-bounds read when TLS msg is split up into multiple…

    … chunks"
    
    This reverts commit d7ddc33b323540ae2bb21327ba44f10881e6a9ce.
    tmshort committed Jan 12, 2021
    Configuration menu
    Copy the full SHA
    e168f71 View commit details
    Browse the repository at this point in the history
  29. Buffer all provided quic data

    Make all data supplied via SSL_provide_quic_data() pass through an
    internal buffer, so that we can handle data supplied with arbitrary
    framing and only parse complete TLS records onto the list of QUIC_DATA
    managed by quic_input_data_head/quic_input_data_tail.
    
    This lets us remove the concept of "incomplete" QUIC_DATA structures,
    and the 'offset' field needed to support them.
    
    However, we've already moved the provided data onto the buffer by
    the time we can check for KeyUpdate messages, so defer that check
    to quic_get_message() (where it is adjacent to the preexisting
    ChangeCipherSpec check).
    
    To avoid extra memory copies, we also make the QUIC_DATA structures
    just store offsets into the consolidated buffer instead of having copies
    of the TLS handshake messages themselves.
    kaduk authored and tmshort committed Jan 12, 2021
    Configuration menu
    Copy the full SHA
    52873c6 View commit details
    Browse the repository at this point in the history
  30. Enforce consistent encryption level for handshake messages

    The QUIC-TLS spec requires that TLS handshake messages do not cross
    encryption level boundaries, but we were not previously enforcing this.
    kaduk authored and tmshort committed Jan 12, 2021
    Configuration menu
    Copy the full SHA
    714b289 View commit details
    Browse the repository at this point in the history
  31. Configuration menu
    Copy the full SHA
    3d026f4 View commit details
    Browse the repository at this point in the history
  32. Configuration menu
    Copy the full SHA
    d60a8fb View commit details
    Browse the repository at this point in the history