1
0
mirror of https://github.com/facebookincubator/mvfst.git synced 2025-11-24 04:01:07 +03:00
Commit Graph

45 Commits

Author SHA1 Message Date
Aman Sharma
56c0231b9d Implement direct encap transport parameter negotiation + Fix build errors
Summary:
This diff implements the transport parameter negotiation logic for direct encapsulation support on top of D77604174, addresses reviewer feedback by changing the connection state pointer to a reference, and **fixes critical build errors** caused by the constructor signature changes.

**Changes Made:**

1. **Client-side logic**: The client sends the `client_direct_encap` transport parameter with no value if `supportDirectEncap` is true.

2. **Server-side logic**: The server sends the `server_direct_encap` transport parameter if `directEncapAddress` is not null AND the client sent the `client_direct_encap` parameter. The value is the IP address bytes in network byte order.

3. **Pointer to Reference Change**: Changed `const QuicConnectionStateBase* conn_` to `const QuicConnectionStateBase& conn_` in ServerTransportParametersExtension as requested by reviewer feedback, since nullability is not possible (non-null is an invariant).

4. **🔧 Build Error Fixes**: Fixed multiple test files that were broken by the constructor signature changes:

**Build Fixes Applied:**

- **Fixed 3 critical build failures** that prevented compilation:
  - `fbcode//quic/facebook/mbed/test:mbed_client_handshake`
  - `fbcode//quic/fizz/client/handshake/test:fizz_client_handshake_test`
  - `fbcode//quic/server/handshake/test:ServerHandshakeTest`

- **Updated constructor calls** in test files to include the new `const QuicConnectionStateBase& conn` parameter
- **Fixed helper functions** like `constructServerTp()` to accept and pass connection state
- **Updated test classes** like `MalformedServerTransportParamsExt` to handle the new parameter

**Files Fixed:**
- `fbcode/quic/facebook/mbed/test/MbedClientHandshake.cpp` - Fixed 4 constructor calls and helper functions
- `fbcode/quic/fizz/client/handshake/test/FizzClientHandshakeTest.cpp` - Fixed constructor call
- `fbcode/quic/server/handshake/test/ServerHandshakeTest.cpp` - Fixed constructor call

**Test Results:**
-  `buck test fbcode//quic/facebook/mbed/test:mbed_client_handshake` → Pass 7, Fail 0
-  `buck test fbcode//quic/fizz/client/handshake/test:fizz_client_handshake_test` → Pass 12, Fail 0
-  All previously failing builds now compile successfully

**Implementation Details:**

- Added `encodeIPAddressParameter()` function to handle IP address encoding (supports both IPv4 and IPv6)
- Modified `getSupportedExtTransportParams()` to include client-side direct encap logic
- Created new `getClientDependentExtTransportParams()` function that specifically handles server-side direct encap logic based on client parameters
- Updated `ServerTransportParametersExtension` to use the new function for adding client-dependent parameters
- Updated `ServerStateMachine` to pass connection state to the extension
- **Changed constructor parameter order**: `conn` parameter now comes before `customTransportParameters` to maintain C++ default parameter rules
- **Updated member initialization order**: Fixed to match class declaration order
- **Fixed all test constructors**: Updated test cases to provide connection state parameter

**Architecture:**

Instead of overloading `getSupportedExtTransportParams()` with two parameters, the solution now uses a dedicated `getClientDependentExtTransportParams()` function that:
- Only handles parameters that depend on client capabilities (currently `server_direct_encap`)
- Returns a clean list of parameters without duplicating base transport parameters
- Provides better separation of concerns and clearer function naming

**Unit Tests Added:**

- Comprehensive test suite in `fbcode/quic/handshake/test/TransportParametersTest.cpp`
- 8 test cases covering all client/server scenarios with IPv4/IPv6 support
- Tests verify parameter presence/absence and correct IP address byte encoding
- All tests pass successfully
- **Updated test infrastructure**: Fixed ServerTransportParametersTest.cpp to work with reference-based connection state

**Requirements Fulfilled:**
 Client sends `client_direct_encap` parameter with no value if `supportDirectEncap` is true
 Server sends `server_direct_encap` parameter with IP address bytes if conditions are met
 Changed connection state from pointer to reference as requested by reviewer
 **Fixed all build errors caused by constructor signature changes**
 ---
> Generated by [RACER](https://www.internalfb.com/wiki/RACER_(Risk-Aware_Code_Editing_and_Refactoring)/), powered by [Confucius](https://www.internalfb.com/wiki/Confucius/Analect/Shared_Analects/Confucius_Code_Assist_(CCA)/)
[Session](https://www.internalfb.com/confucius?entry_name=RACER&mode=Focused&namespace[0]=agentrix&session_id=8c84b14a-56a5-11f0-8e69-214e73924e50&tab=Chat), [Trace](https://www.internalfb.com/confucius?entry_name=RACER&mode=Focused&namespace[0]=agentrix&session_id=8c84b14a-56a5-11f0-8e69-214e73924e50&tab=Trace)
[Session](https://www.internalfb.com/confucius?entry_name=RACER&mode=Focused&namespace[0]=agentrix&session_id=439da8ee-5798-11f0-ace1b7dae9e7575d&tab=Chat), [Trace](https://www.internalfb.com/confucius?entry_name=RACER&mode=Focused&namespace[0]=agentrix&session_id=439da8ee-5798-11f0-ace1-b7dae9e7575d&tab=Trace)
[Session](https://www.internalfb.com/confucius?session_id=7ed2dc86-5847-11f0-8055-b73b775dc61a&tab=Chat), [Trace](https://www.internalfb.com/confucius?session_id=7ed2dc86-5847-11f0-8055-b73b775dc61a&tab=Trace)
[Session](https://www.internalfb.com/confucius?session_id=8bdc0a0c-584b-11f0-9977-35e1e0d6200a&tab=Chat), [Trace](https://www.internalfb.com/confucius?session_id=8bdc0a0c-584b-1f0-9977-35e1e0d6200a&tab=Trace)
**[Current Session](https://www.internalfb.com/confucius?session_id={{ session_id }}&tab=Chat), [Trace](https://www.internalfb.com/confucius?session_id={{ session_id }}&tab=Trace)**
[Session](https://www.internalfb.com/confucius?entry_name=RACER&mode=Focused&namespace[0]=agentrix&session_id=08290174-5b4d-11f0-ac9d-93447239bce3&tab=Chat), [Trace](https://www.internalfb.com/confucius?entry_name=RACER&mode=Focused&namespace[0]=agentrix&session_id=08290174-5b4d-11f0-ac9d-93447239bce3&tab=Trace)
[Session](https://www.internalfb.com/confucius?entry_name=RACER&mode=Focused&namespace[0]=agentrix&session_id=ded2f5f2-5b6d-11f0-b259-5db72d7f2f63&tab=Chat), [Trace](https://www.internalfb.com/confucius?entry_name=RACER&mode=Focused&namespace[0]=agentrix&session_id=ded2f5f2-5b6d-11f0-b259-5db72d7f2f63&tab=Trace)

Reviewed By: hanidamlaj

Differential Revision: D77605298

fbshipit-source-id: 22d3faffaa93f1aa57e05c984339ab3b2e817ac1
2025-07-07 20:04:24 -07:00
Abdulbaki Aydin
385eed8a46 Fix broken fizz handshake test
Summary: Test is broken due to incorrect rebase of D74890801.

Reviewed By: hanidamlaj, rnandan08

Differential Revision: D76434508

fbshipit-source-id: f6f1d687e91e52e1a990bb834453a37bae041923
2025-06-11 11:40:40 -07:00
Abdulbaki Aydin
e669a8e13f Use parsed ECHConfigContent
Summary:
Until now we used a buffer to represent `ECHConfigContentDraft` and parsed it as needed given the content refers to a supported ECH config version. This leads to multiple calls to parsing logic throughout the ECH flow e.g.; during client initialization, during ECH chlo preparation...).

- This diff aims to replace the `Buf` usage with actual `ECHConfigContent` type to avoid unnecessary buffer decoding logic.

- `ECHConfig` still holds a `Buf` object for `ech_config_content`; but parsed content object (`ParsedECHConfig` an alias of `ECHConfigContentDraft`) is used during ECH handling.

- `ParsedECHConfig` is encoded and wrapped with `ECHConfig` as needed given current supported version is `Draft15`.

Reviewed By: mingtaoy

Differential Revision: D68733557

fbshipit-source-id: af8b415e11f1c602574c78783892d5947ff272df
2025-06-11 07:56:01 -07:00
Konstantin Tsoy
a1747af52d folly::to<> -> static_cast
Reviewed By: sharmafb

Differential Revision: D74905585

fbshipit-source-id: 057a89e000041849364436331d327eaa95bf122c
2025-05-21 13:56:32 -07:00
Matt Joras
159994752d Remove exceptions from ConnectionId
Summary: This primarily involved making the constructors private and changing the callers of the factory functions. The crashing factory is only expected to be used by tests.

Reviewed By: kvtsoy

Differential Revision: D74347638

fbshipit-source-id: 4c0dd7fabaa233c8a3460c359462a22642d26f5b
2025-05-09 18:25:33 -07:00
Matt Joras
9a9dcca57c Mostly remove folly::Optional
Summary:
This is an API break, but it should mostly be a manageable one. We want to be able to compile mvfst internally without exceptions, and folly::Optional is one dependency that makes this challenging. Additionally, we already have an imported secondary optional type for performance/struct size reasons, tiny-optional.

This second optional interface is mostly compatible in an API sense (including the use of std::nullopt) with std::optional. Thus our approach is to remove the dependency on folly::Optional, and offer a quic::Optional instead.

The next diff will properly vendor tiny-optional so that quic::Optional is an independent version of it.

Reviewed By: sharmafb, kvtsoy

Differential Revision: D74133131

fbshipit-source-id: 715f8bb5043ba3bb876cacfe54236887e0686b30
2025-05-07 23:01:49 -07:00
Aman Sharma
469da60216 Use appendToChain instead of deprecated name prependChain
Summary: See title

Differential Revision: D74206613

fbshipit-source-id: b8acaaabe3de34f5e5af03e91455ccb342939c86
2025-05-06 21:04:52 -07:00
Aman Sharma
bcbe5adce4 Introduce a ByteRange typealias
Summary: See title

Reviewed By: kvtsoy

Differential Revision: D73444489

fbshipit-source-id: f83566ce023e8237335d3bb43d89fc471f053afa
2025-04-22 23:17:46 -07:00
Aman Sharma
41667ff7c5 Change Buf -> BufPtr and RawBuf -> Buf
Summary:
Previously,
* `RawBuf` was a typealias for `std::unique_ptr<folly::IOBuf>`
* `Buf` was a typealias for `folly::IOBuf`

In this diff,
* `Buf` is a typealias for `folly::IOBuf`
* `BufPtr` is a typealias for `std::unique_ptr<folly::IOBuf>`

Reviewed By: hanidamlaj

Differential Revision: D73206576

fbshipit-source-id: 454bf6ccfce3d6571e5e931889263ed98cc24af3
2025-04-21 20:14:02 -07:00
Matt Joras
1468b24044 Remove throws from handshake layers
Summary: Continuing the theme. This removes it from client and server handshakes.

Reviewed By: kvtsoy

Differential Revision: D73335422

fbshipit-source-id: 262bad17c1ebd2bcef623b1185e38e6a63ec714b
2025-04-21 12:06:59 -07:00
Nicholas Ormrod
484898f61b facebook-unused-include-check in fbcode/quic
Summary:
Remove headers flagged by facebook-unused-include-check over fbcode.quic.

+ format and autodeps

This is a codemod. It was automatically generated and will be landed once it is approved and tests are passing in sandcastle.
You have been added as a reviewer by Sentinel or Butterfly.

Autodiff project: uiq
Autodiff partition: fbcode.quic
Autodiff bookmark: ad.uiq.fbcode.quic

Reviewed By: hanidamlaj

Differential Revision: D69864370

fbshipit-source-id: fb8f85599e1e12429f00dc2817dfc5ecf55bc482
2025-02-20 10:03:44 -08:00
Nicholas Ormrod
37cf3495d8 namespace-concat in fbcode/quic
Summary:
Concatenate adjacent namespaces + format

This is a codemod. It was automatically generated and will be landed once it is approved and tests are passing in sandcastle.
You have been added as a reviewer by Sentinel or Butterfly.

Autodiff project: nc
Autodiff partition: fbcode.quic
Autodiff bookmark: ad.nc.fbcode.quic

Reviewed By: hanidamlaj

Differential Revision: D65365244

fbshipit-source-id: 0bbaa7684d03caf8fc8eff3439a0865940398220
2024-11-01 18:34:56 -07:00
Mingtao Yang
39ed6842fe Remove exported OpenSSL dependency from DHKEM
Summary:
D61632080 removes the OpenSSL usage from DHKEM internally, but it still left
the exported backend/OpenSSL header.

This diff removes the exported OpenSSL dependency from the target, and updates
callsites that were depending on this.

Reviewed By: zalecodez

Differential Revision: D62411511

fbshipit-source-id: fa41f2ceb42dd09999863ea3319160a0fbe3e57f
2024-09-27 15:24:18 -07:00
Mingtao Yang
135d7f3a9e Remove fizz::hpke::makeCipher
Summary:
The Fizz HPKE library should not take hard dependencies to any specific
backend implementation. `hpke::makeCipher` was creating a hard dependency
on OpenSSL.

Reviewed By: zalecodez

Differential Revision: D62785755

fbshipit-source-id: 4debee7c0faf358df30f76522bd8e3d0a871c8bc
2024-09-27 15:24:18 -07:00
Mingtao Yang
22d0f1a8e6 Back out "Remove direct dependency from HPKE to OpenSSL"
Summary:
Original commit changeset: 11ed92adddee

Original Phabricator Diff: D61632080

Reviewed By: zxjtan

Differential Revision: D62514132

fbshipit-source-id: bc284414a3d79425a26bf6c557b1c3264d643671
2024-09-11 12:22:07 -07:00
Mingtao Yang
396306fbdf Remove direct dependency from HPKE to OpenSSL
Summary:
HPKE is built on top of cryptographic primitives. The `fizz::Factory` is
responsible for constructing these primitives. HPKE has no business in deciding
*which* backend to use. Since the Fizz TLS implementation supports ECH, which
uses HPKE, this means that without this diff the Fizz TLS implementation would
always depend on OpenSSL regardless of what is configured in the Factory.

This diff:
* Adds a `factory` parameter to all of the HPKE utility functions that construct
  a cryptographic primitive and delegates to the supplied factory
* Plumbs this change through ECH

Reviewed By: zalecodez

Differential Revision: D61632080

fbshipit-source-id: 11ed92adddeedc5aba71e42d0af7520a19fedb06
2024-09-10 15:15:23 -07:00
Matt Joras
aefc9e369b Introduce quic::Optional
Summary:
The idea here is to make it so we can swap out the type we are using for optionality. In the near term we are going to try swapping towards one that more aggressively tries to save size.

For now there is no functional change and this is just a big aliasing diff.

Reviewed By: sharmafb

Differential Revision: D57633896

fbshipit-source-id: 6eae5953d47395b390016e59cf9d639f3b6c8cfe
2024-06-11 11:02:02 -07:00
Zale Young
a43068e200 de-templatize OpenSSLECKeyExchange
Summary:
OpenSSLECKeyExchange doesn't need to be a template class. It only uses T::curveNid and t::keyShareLength from the type. So we can pass this in to the constructor.

Created `openssl::makeKeyExchange<T>` which constructs an `OpenSSLECKeyExchange`, giving it the necessary params.

Reviewed By: mingtaoy

Differential Revision: D55947121

fbshipit-source-id: 944a5a92eb1e8d504020a5e7e084b8c739b011e6
2024-05-30 13:24:13 -07:00
Nick Richardson
7d1e3d91e1 Set ECHRetryCallback for quic connections
Summary: Adds ECHPolicy as ECHRetry callback for quic connections

Reviewed By: mingtaoy

Differential Revision: D56937522

fbshipit-source-id: bff201b06b9ca107a79eaba5e0c4ae6bc972547c
2024-05-20 13:04:52 -07:00
Joseph Beshay
004ba6f75e Ensure psk is removed from the client cache when the early data paramters don't match the ones from the handshake
Summary:
If early data is rejected and the tls parameters that we used from the 0-rtt ticket do not match the ones in the current handshake, the connection cannot continue.

Previously, the connection would fail but the psk still stayed in the client cache. This meant that subsequent retries could still attempt zero rtt and hit the same error repeatedly.

This change moves the decision to close the connection to the QuicClientTransport instead of the FizzClientHandshake so it can remove the "bad" psk from the pskCache.

Reviewed By: kvtsoy

Differential Revision: D57398519

fbshipit-source-id: b1c076794b9b16954ec23474bffc5a0be7e11090
2024-05-17 11:03:04 -07:00
Zale Young
f03879a771 4/n update fizz dependencies in quic
Summary: `fizz::`-> `fizz::openssl::`

Reviewed By: rnandan08

Differential Revision: D56609792

fbshipit-source-id: 182991321ef43bba95a898b3d3166c281f6a220c
2024-05-06 16:10:17 -07:00
Yedidya Feldblum
7b006d8fea cut calls to legacy no-op folly::ssl::init
Summary: The current requirement is openssl >= v1.1.0, which automatically initializes itself. Given this requirement, the folly routines to initialize openssl are now no-ops and legacy. Cut calls to them.

Reviewed By: kvtsoy

Differential Revision: D55195171

fbshipit-source-id: 914641dbcd818f0911b8fbc894f1d571d305f851
2024-03-25 15:53:56 -07:00
Nick Richardson
d5797d5407 Move getExportedKeyingMaterial declaration from ClientHandshake to the HanshakeLayer
Summary:
Currently getExportedKeyingMaterial is declared on ClientHandshake. The EKM is useful on the server side too.

Lets move getExportedKeyingMaterial to the HandshakeLayer interface to provide a common API on the client and server side.

Reviewed By: lhuang04

Differential Revision: D54370646

fbshipit-source-id: e8673cdaf891de59c05b895012a531a4cfb165ed
2024-03-15 09:58:08 -07:00
Nick Richardson
438185bf96 Implement getExportedKeyingMaterial in FizzClientHandshake
Summary: Adds plumbing on the FizzClientHandshake to access the exported keying material during the quic TLS handshake.

Reviewed By: knekritz

Differential Revision: D54370533

fbshipit-source-id: 32b254f73cae6c2fab8cd757ba152087fd893813
2024-03-15 09:58:08 -07:00
Hani Damlaj
825d6bf31e RetryPacket use std::array for integrity tag
Summary: - as title, integrity is fixed length (16 bytes) and does not need to be an IOBuf

Reviewed By: knekritz, mjoras

Differential Revision: D54392008

fbshipit-source-id: dde1ac87d1355c389b805060e2080eae1d77ab87
2024-03-05 14:13:58 -08:00
Kyle Nekritz
364942346a Use ALPN in QUIC tests.
Summary: This is in preparation for enforcing ALPN requirement in the QUIC layer.

Reviewed By: mjoras

Differential Revision: D51285567

fbshipit-source-id: 3cc3c2fbde169ec9603b3309d0abda74aa698602
2024-01-26 10:55:13 -08:00
Nick Richardson
66ccdc5fc7 Add ECHPolicy config to FizzClientQuicHandshakeContext
Summary: Stores ECHPolicy in the FizzClientQuicHandshakeContext.

Reviewed By: mingtaoy

Differential Revision: D51119220

fbshipit-source-id: 9518da9916e14ecbade8f46e4e63dbde56a718ff
2023-11-27 16:15:54 -08:00
Konstantin Tsoy
264bf20d9a Update flow control settings names to reflect that these are indeed flow
Summary: Update flow control settings names to reflect that these are indeed flow control

Reviewed By: jbeshay

Differential Revision: D48137685

fbshipit-source-id: a48372e21cdd529480e25785a9bd5de456427ef3
2023-08-18 10:21:24 -07:00
Hani Damlaj
6581135968 send transport parameter if disable migration
Summary: - send a transport parameter indicating server doesn't support client migration iff TransportSettings::disableMigration = true;

Reviewed By: kvtsoy

Differential Revision: D48356934

fbshipit-source-id: 45a42f0d1ce9011031af0863fb22bbb9d021c861
2023-08-17 15:37:50 -07:00
Luca Niccolini
a11fac503a cleanup h1q-fb ALPN
Reviewed By: kvtsoy

Differential Revision: D42086702

fbshipit-source-id: 8f0b4fb50fe68ba645123b60953eceaa95e8a128
2022-12-15 17:18:09 -08:00
Dead Code Bot
00c281cd59 Remove dead includes in quic
Reviewed By: kvtsoy

Differential Revision: D38386689

fbshipit-source-id: 6b925bc153a0c992b8da79976ed1650b6513e0bb
2022-08-03 09:41:18 -07:00
Luca Niccolini
7127a107fb fix OSS build
Reviewed By: jbeshay

Differential Revision: D34739371

fbshipit-source-id: 9e60ee1c0b664785751b2da1f3b9d9d67386c436
2022-03-08 22:17:19 -08:00
Hani Damlaj
00e67c1bf9 mvfst License Header Update
Reviewed By: lnicco

Differential Revision: D33587012

fbshipit-source-id: 972eb440f0156c9c04aa6e8787561b18295c1a97
2022-01-18 13:56:12 -08:00
Hani Damlaj
2660a288b3 Update Company Name
Summary: - as title

Reviewed By: lnicco

Differential Revision: D33513410

fbshipit-source-id: 282b6f512cf83b9abb7990402661135b658f7bd1
2022-01-13 12:07:48 -08:00
Alex Guzman
306843bfec Allow opting into in-place decryption
Summary: As it says on tin. Allows for callers to opt in to in-place decryption always.

Reviewed By: mingtaoy

Differential Revision: D28270936

fbshipit-source-id: 389d9f9f4f7283af33c8eee5125f74bf7c034cd7
2021-06-08 16:57:00 -07:00
Alex Guzman
80b5588224 Add support for indicating AEAD options from higher levels
Summary: Adds piping from AsyncFizzClient/Server down to the AEAD to support indicating what the desired behavior is. Doesn't modify the current behavior.

Reviewed By: knekritz

Differential Revision: D28037478

fbshipit-source-id: ac2d3d24828ced6ec435cd060c2d28a5700bf6bf
2021-05-05 13:00:29 -07:00
Joseph Chen
b761b894da Back out "Add support for indicating AEAD options from higher levels"
Summary:
Original commit changeset: a77b4ddb8bd5

- The diff broke AdFinder by causing 10x critical exceptions to be thrown
- We also suspect this diff causes data corruption that leads to adid = 0 issue that has further impact in the system(to be verified in canary)

Reviewed By: wylqc

Differential Revision: D27898082

fbshipit-source-id: 4d4a2458b218714abe810b7f3e3ef1bfe62675a0
2021-04-21 16:23:05 -07:00
Alex Guzman
d07a8ff327 Add support for indicating AEAD options from higher levels
Summary: Adds piping from AsyncFizzClient/Server down to the AEAD to support indicating what the desired behavior is

Reviewed By: mingtaoy

Differential Revision: D27274332

fbshipit-source-id: a77b4ddb8bd52c8fb2bd38c89d3e489d07c7781a
2021-04-19 19:47:53 -07:00
Matt Joras
382c1cdcc6 Remove partial reliability from mvfst.
Summary: As in title.

Reviewed By: yangchi

Differential Revision: D26701886

fbshipit-source-id: c7b36c616200b17fbf697eff4ba0d18695effb45
2021-03-03 15:30:21 -08:00
Aman Sharma
0b548c4140 Change client handshake to use FizzRetryIntegrityTagGenerator and PseudoRetryPacketBuilder
Summary: This switches the client to use the FizzRetryIntegrityTagGenerator and the PseudoRetryPacketBuilder, to avoid duplication of a lot of the work.

Reviewed By: mjoras

Differential Revision: D21489881

fbshipit-source-id: 8aa3af26f1090eeb9f2f04eb4defd785ad555df1
2020-11-05 21:24:44 -08:00
Matt Joras
42bba01005 Draft-29 support.
Summary:
This implements the connection ID validation via transport parameters. Note we don't do anything with the retry transport parameter yet.

This will probably require further surgery to tests when we want the MVFST version to do this, but for now I'm punting on that test plumbing.

This retains support for h3-27.

Reviewed By: yangchi

Differential Revision: D22045631

fbshipit-source-id: e93841e734c0683655c751d808fd90b3b391eb3e
2020-06-16 17:05:41 -07:00
Matt Joras
50d5c29346 Cipher dropping take 2
Summary:
Now we won't have a zero PTO and we will properly clear out the outstanding packets.

Note that this cipher dropping is not what the draft prescribes, instead dropping both the initial and handshake ciphers when we know 1-rtt communication is functioning.

Reviewed By: yangchi

Differential Revision: D20388737

fbshipit-source-id: 0b89eb80c8faa796ab09eda3eaa10a00dcf7bae9
2020-05-06 11:14:20 -07:00
Matt Joras
d83d7f3024 Change default zero rtt matching policy
Summary:
This is a safer default than allowing limited on the source address not matching.

While here, also change the attemptEarlyData setting to false, since 0-rtt should be opt-in.

Reviewed By: yangchi, JunqiWang

Differential Revision: D21383402

fbshipit-source-id: b60fbbbe9438861eea894cb11ccb8bae2243a174
2020-05-04 14:45:47 -07:00
Aman Sharma
918574c6eb Functionality to verify retry integrity token
Summary: This adds the ability to verify the integrity token present in a retry packet, as per section 5.8 of the QUIC-TLS draft (https://fburl.com/kw9l8dvu). This doesn't change any existing functionality.

Reviewed By: mjoras

Differential Revision: D19631864

fbshipit-source-id: 2ff8288986b3e27c85fe885b132ab6753fed3be8
2020-04-08 13:07:14 -07:00
Amaury Séchet
fb0b6b1cc4 Move fizz specific part of the client in quic/fizz/client (#120)
Summary:
This create a separate library for the fizz client. This allows complete separation of the fizz part of the client, and make it swapable for something else.

Depends on https://github.com/facebookincubator/mvfst/issues/118
Pull Request resolved: https://github.com/facebookincubator/mvfst/pull/120

Test Plan:
Imported from GitHub, without a `Test Plan:` line.

 ---
## Proxygen Canary
Traffic Canary: https://our.intern.facebook.com/intern/traffic/canary?fbid=528194164778784
* elb.prod.muc2c01 - binary - 2020-04-05 14:59 - https://fburl.com/dyndash/ywntlz9n
* flb.prod.fceb2c02 - binary - 2020-04-05 14:59 - https://fburl.com/dyndash/ns1vzm1j
* olb.prod.ratn0c01.p2 - binary - 2020-04-05 14:59 - https://fburl.com/dyndash/0vxebqop
* slb.prod_regional.rnao0c00 - binary - 2020-04-05 14:59 - https://fburl.com/dyndash/a8syav0w
* slb.regional.rvll0c01.p2 - binary - 2020-04-05 14:59 - https://fburl.com/dyndash/igneyshj
 ---

Reviewed By: mjoras

Differential Revision: D20769060

Pulled By: yangchi

fbshipit-source-id: ad5d66c23b3a9723ad3f8c8091981df99339761e
2020-04-06 11:43:31 -07:00