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

Merge 0.23.21 #2

Merged
merged 263 commits into from
Jan 27, 2025
Merged

Merge 0.23.21 #2

merged 263 commits into from
Jan 27, 2025

Conversation

ibigbug
Copy link
Member

@ibigbug ibigbug commented Jan 24, 2025

No description provided.

tahmid-23 and others added 30 commits September 11, 2024 10:29
This will only have any positive effect with client auth.
The `HandshakeFlightTls12` type alias is only used when the tls12
feature is enabled. This commit adds a `cfg` gate to avoid a dead code
warning on builds without the feature enabled.
For some reason the `crypto.cloudflare.com` DNS zone's HTTPS record no
longer contains an `ech` config, breaking our ECH record deserialization
connect-test.

The domain that `crypto.cloudflare.com` redirects to in a browser,
`research.cloudflare.com`, does include an `ech` value in the HTTPS
record, so let's use that instead.
This main effect here appears to be due to fixing the
extension randomisation seed.
callgrind also allows instruction counting, but also collects
call trees.  We turned off cache emulation in cachegrind, so
callgrind should work alike.

This regresses diffing of output, leave a TODO for later.
This eliminates:

- for resumption and transfer tests, the full handshake
- for all tests, one-time setup costs (eg, RSA private key validation)
This covered server tests that validated an RSA private key,
when using the aws-lc-rs provider.
Previously, this would subtract a base case benchmark
(the cost of the full handshake) but that adds the noise
of that benchmark.

It is no longer necessary now we are more precise about
the instructions that are counted.
Now we are precise about when we count instructions, this
measured precisely 0 instructions.
Small refactors and tidying.
That is the last one. Drop docopt dependency.
This reduces the cost of ClientSessionCommon::clone, which is
inherent in every `ClientSessionStore` probe operation.
These can be large (hundreds of bytes),  and even larger
(thousands of bytes) if the server decides to include
the client's identity.

Parse them into an Arc, and then maintain that on
the path to the session store.
The signed message has a pretty tight upper bound,
so we can avoid a Vec allocation here.
cpu and others added 28 commits December 13, 2024 16:23
Move the `resolver_config` into the match arm that uses it. Inline the
`Resolver` since it isn't used anywhere except as an arg to
`lookup_ech_configs()`.
Previously we only looked at the first HTTPS record's ech-config SCVB
param. We should instead collect up the `EchConfigListBytes` from all
available HTTPS records.

With the list of config lists in hand we should only error if none of
the ECH configs across the whole set are compatible.
This updates the documentation to match the more realistic invocation
being used in the CI daily-tests.yml job.

It also adds a bit more prose to clarify the overall process and where
the outer/inner hostnames are used.
This aids manual evaluation of how deep these get.
This is intended to be a deterministic and cryptography-free
CryptoProvider, so that fuzzing can reach further into the library.

Things like HMAC and hashing ignore input and produces fixed output.

Signing produces fixed output, verification accepts the same fixed
signature which allows clients to accept the certificate in the
corpus file, and should allow libfuzzer to explore branches around
there.

There is a test that checks this can talk to itself, and outputs
transcripts into the fuzzing corpus.

This is used by the client and server fuzzing harnesses.
This means fuzzing starts at a successful full handshake.
Prior to this, we gave up after `accept()` succeeded.  Now
we take the connection to its conclusion.
(with help from `cargo clippy --fix ...`)

as suggested by nightly Clippy precedence rule:

- https://rust-lang.github.io/rust-clippy/master/index.html#precedence
All good things come to an end :)
@ibigbug ibigbug merged commit a7d217b into utls-0.23 Jan 27, 2025
1 check passed
@ibigbug ibigbug deleted the merge-0.23.21 branch January 27, 2025 14:17
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.