-
Notifications
You must be signed in to change notification settings - Fork 726
Take upstream bogo changes, and expand testing using it #2057
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
Conversation
Requires golang 1.21
Benchmark resultsInstruction countsSignificant differencesThere are no significant instruction count differences Other differencesClick to expand
Wall-timeSignificant differencesClick to expand
Other differencesClick to expand
Additional informationCheckout details:
|
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #2057 +/- ##
==========================================
+ Coverage 94.29% 94.38% +0.09%
==========================================
Files 97 98 +1
Lines 21913 23263 +1350
==========================================
+ Hits 20663 21957 +1294
- Misses 1250 1306 +56 ☔ View full report in Codecov by Sentry. |
1f7bbb2
to
ac411d7
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice!
This relies on the `negotiated_key_exchange_group()` API introduced recently.
Transition to `KxState::Complete` at exactly the point `start_and_complete` finishes. This changes behaviour: resumed TLS1.3 connections now report their `negotiated_key_exchange_group()`. This fixes the bogo `CurveID-Resume-Server-TLS13` test.
To do this in the future, do `./runme | python check.py`
Rediscover and write down how this works.
If there are any specified, use to filter the groups supported by the provider.
Remove all feature gates, and temporarily fix it on aws-lc-rs.
Reuse the (existing) `BOGO_SHIM_PROVIDER` environment variable.
The purpose of these CI jobs is to ensure the benchmarks build and don't panic. Nobody looks at the results, so it is not really needed to spend a lot of time running them. In CI this job spends about 17 minutes, this should reduce it to around 4-5 minutes.
This is mysterious: ``` error: failed to select a version for `log`. ... required by package `env_logger v0.10.0` ... which satisfies dependency `env_logger = "^0.10"` of package `bogo v0.1.0 (/home/jbp/src/rustls/bogo)` versions that meet the requirements `^0.4.8` are: 0.4.22, 0.4.21, 0.4.20, 0.4.19, 0.4.18, 0.4.17, 0.4.16, 0.4.15, 0.4.14, 0.4.13, 0.4.11, 0.4.8 all possible versions conflict with previously selected packages. previously selected package `log v0.4.4` ... which satisfies dependency `log = "^0.4.4"` of package `rustls v0.23.12 (/home/jbp/src/rustls/rustls)` ... which satisfies path dependency `rustls` of package `bogo v0.1.0 (/home/jbp/src/rustls/bogo)` failed to select a version for `log` which could resolve this conflict error: process didn't exit successfully: `rustup run nightly cargo update -Z direct-minimal-versions` (exit status: 101) ``` First, why is the `bogo` crate even being considered? This command is purposefully run in `rustls/` and no other workspace members should be involved. Second, why is 0.4.4 not considered? That is because `env_logger==0.10.0` requires ^0.4.8. Third, why is it important that the minimal version of `env_logger` wants something later than our specified minimal version? `direct-minimal-versions` should be the opposite of caring about the versions specified by second-order dependencies.
Going to merge this, as I think the one functional change is pretty uncontroversial and the remainder is test-only. |
This takes a new bogo version, and extends testing to cover key exchange group negotiation & the rustls-post-quantum crate, and a smattering of other changes along the way.
Note: the "Correct
negotiated_key_exchange_group
for TLS1.3 servers" is a change to the core library, the remainder of this PR is test-only.