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
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
263 commits
Select commit Hold shift + click to select a range
6e79697
examples/tlsserver-mio: process received early data if it is present
tahmid-23 Sep 3, 2024
64582a9
examples/simple_0rtt_client: allow connection with arbitrary endpoint…
tahmid-23 Sep 3, 2024
641e26e
examples: add simple_0rtt_server
tahmid-23 Sep 3, 2024
a4dbf73
chore(deps): lock file maintenance
renovate-bot Sep 16, 2024
391a0ac
server/tls12: send first flight in one message
ctz Sep 11, 2024
ecfb33a
server/tls13: send first flight in one message
ctz Sep 11, 2024
bfb7665
client/tls13: send second flight in one message
ctz Sep 13, 2024
81d45dc
common_state: feature gate TLS 1.2 HS flight alias
cpu Sep 19, 2024
fa4242c
connect-tests: update cloudflare ECH domain
cpu Sep 19, 2024
4a00cf2
Fix links in howto section of manual
ctz Sep 20, 2024
78f280b
ci-bench: eliminate CryptoProvider-sourced randomness
ctz Sep 13, 2024
cd29101
Use callgrind instead of cachegrind
ctz Sep 16, 2024
7d08edb
Reduce instruction counting scope to minimum
ctz Sep 16, 2024
d85b165
Remove code that marks certain tests as noisy
ctz Sep 16, 2024
5c17f43
Remove code for subtracting benchmark case costs
ctz Sep 13, 2024
1d099fb
Make double-sure resumption tests are successful
ctz Sep 16, 2024
4479d4e
Remove unnecessary calibration run
ctz Sep 19, 2024
9efb04c
README.md: update to track recent changes
ctz Sep 19, 2024
d57db74
Remove example interface description from the README
djc Sep 19, 2024
3855965
examples: convert tlsserver-mio from docopt to clap
djc Sep 19, 2024
a92dd8f
examples: clarify types in server example
djc Sep 19, 2024
1aebb54
misc: small refactors (#2130)
liujustin604 Sep 21, 2024
e16c197
chore(deps): lock file maintenance
renovate-bot Sep 23, 2024
7d003f1
examples: convert ech-client to clap
ctz Sep 24, 2024
8dad52a
examples: convert server_acceptor to clap
ctz Sep 24, 2024
659e876
examples: convert tlsclient-mio
ctz Sep 24, 2024
163a241
Avoid excess copying of client identity
ctz Sep 12, 2024
39455e1
Avoid excess copying of tickets
ctz Sep 12, 2024
211eabf
Eliminate allocation in signature verification
ctz Sep 13, 2024
e52853a
chore(deps): lock file maintenance
renovate-bot Sep 30, 2024
df96abd
Fix tls13_packed_handshake test bitrot
ctz Oct 1, 2024
e8bbcd0
bogo: switch to pki-types pem decoding
ctz Sep 30, 2024
c1361b2
rustls: use pki-types pem decoder in tests
ctz Sep 30, 2024
7eff54b
ci-bench: use pki-types pem decoder
ctz Sep 30, 2024
5a04f5e
openssl-tests: use pki-types pem decoder
ctz Sep 30, 2024
ce10e59
examples: use pki-types pem decoder
ctz Sep 30, 2024
a101286
Cargo: hashbrown 0.14 -> 0.15
cpu Oct 1, 2024
58a5891
fix(deps): update rust crate brotli to v7
renovate-bot Oct 2, 2024
e7dd2fd
fips.rs: reflect certificate issuance for aws-lc 2.0.0
ctz Oct 2, 2024
bcc295d
Fix new `cargo doc` warnings in examples
ctz Oct 2, 2024
2d3b7ab
default crypto provider improvements
brody4hire Oct 2, 2024
d752eb2
Send `illegal_parameter` alert on invalid key share
ctz Oct 3, 2024
7bf82dc
Send `illegal_parameter` alert on illegal group
ctz Oct 3, 2024
0560938
Take latest bogo release
ctz Oct 3, 2024
c9f5734
Take aws-lc-rs 1.10
ctz Oct 4, 2024
262ae99
Accept kyber deprecation
ctz Oct 4, 2024
cf736e3
Prepare 0.23.14
ctz Oct 4, 2024
21a5bc5
chore(deps): lock file maintenance
renovate-bot Oct 7, 2024
a191da2
chore(deps): lock file maintenance
renovate-bot Oct 14, 2024
e2e2d9c
fix: renamed structs to correct naming inconsistency
tharun-kumar-16675 Oct 13, 2024
ed9372b
compress: remove 'pub' from 'mod tests'
ctz Oct 14, 2024
9663d79
ticketer: fix warning for release builds
ctz Oct 15, 2024
18b9398
bench: ensure maximal-sized plaintext reads
ctz Oct 14, 2024
e029f51
bench: use vec for temporary buffers
ctz Oct 15, 2024
554752c
vecbuf: update stale documentation
ctz Oct 14, 2024
726a864
vecbuf: benchmark partial reads
ctz Oct 14, 2024
adb5be2
vecbuf: make len() idiomatic
ctz Oct 15, 2024
916494a
vecbuf: add bookkeeping to avoid `drain()` expense
ctz Oct 15, 2024
aaeff17
docs: update cpu project time allotment
cpu Oct 15, 2024
422a0c5
manual: include mention of client-side ECH
cpu Oct 15, 2024
51e783a
clippy: address nightly empty_line_after_doc_comments
cpu Oct 15, 2024
25f1e4f
outbound: replace manual arithmetic check
cpu Oct 15, 2024
0254d00
clippy: needless_lifetimes fixes
cpu Oct 15, 2024
494f4da
Use re-exported pki-types everywhere
djc Oct 16, 2024
e653618
bench: decrease bench allocator traffic
ctz Oct 14, 2024
d58f86d
bench-measure.mk: rebuild bench each time
ctz Oct 16, 2024
9a19b59
Take pki-types 1.10
ctz Oct 15, 2024
3099020
Prepare 0.23.15
ctz Oct 15, 2024
09885c2
ci: update ECH daily-test configuration
cpu Oct 16, 2024
82b292e
Install openssl 3.2 in workflow to run interop tests
holodorum Sep 30, 2024
d9695d5
Refactor: move `MockClientCertVerifier` to common test module
holodorum Sep 30, 2024
c695e9b
tls13: prep. to promote derive_traffic* visibility
holodorum Oct 1, 2024
b830756
Refactor: make `ServerExtension::extensions` public.
holodorum Oct 1, 2024
9944795
Impl. RFC 7250: Support Raw Public Keys in TLS1.3
holodorum Oct 1, 2024
75ecfff
Add server and client example for rpk
holodorum Jun 28, 2024
6d655e8
ci: restore defo.ie ECH daily test
cpu Oct 17, 2024
13144a0
bench: avoid debug_assert
ctz Oct 17, 2024
9af5a44
client/tls12: remove stale ref to SCT verification
cpu Oct 17, 2024
44f89de
Remove crossbuilds and coverage from merge_checks
ctz Oct 16, 2024
b553880
bench: match default BoringSSL/OpenSSL ticket count
ctz Oct 17, 2024
8014f56
Hoist up repeated computation of `ResumptionMasterSecret`
ctz Oct 17, 2024
9249b61
server::tls13: send tickets in one flight
ctz Oct 17, 2024
deed3d9
fips: fix external links
ctz Oct 21, 2024
3890cd7
tlsvulns: fix regressed table formatting
ctz Oct 21, 2024
271d510
Change link to the NSS Key Log Format
yedayak Oct 21, 2024
e3ec1c7
consistent APIs for connection FIPS indicator
cpu Oct 21, 2024
035bf24
enum_builder: make syntax less weird
ctz Oct 21, 2024
ed75bb7
enum_builder: make Debug impl explicit
ctz Oct 21, 2024
10061f7
Reduce size of `<CipherSuite as Debug>::fmt`
ctz Oct 21, 2024
32d4f70
Fix unstable rustfmt
ctz Oct 21, 2024
fa78233
Fix unstable rustfmt in test macros
ctz Oct 21, 2024
1cd50e4
docs: fix unbuffered example links
cpu Oct 21, 2024
20936a5
docs: fix some broken tlsvuln manual links
cpu Oct 21, 2024
6fa1838
ci: allow manual docs workflow dispatch
cpu Oct 21, 2024
a4758dd
ci: add lychee linkchecking to docs workflow
cpu Oct 21, 2024
2b24f2b
ci: fix lychee arg globs
cpu Oct 22, 2024
6065901
bogo: fix broken links
cpu Oct 22, 2024
f7c9c30
ci: move lychee step before dir mv
cpu Oct 22, 2024
28ec955
ci: loosen lychee-action version
cpu Oct 22, 2024
6264243
fix(deps): update rust crate asn1 to 0.18
renovate-bot Oct 24, 2024
eb2a1c4
Move from kyber768 to ML-KEM768
ctz Oct 3, 2024
121d813
Avoid feature unification for bogo
ctz Oct 22, 2024
aebe2c3
builder: store providers directly into ConfigBuilder
djc Oct 25, 2024
75e5503
builder: expose ConfigBuilder::crypto_provider()
djc Oct 25, 2024
a5d6350
chore(deps): lock file maintenance
renovate-bot Oct 28, 2024
e07bdc9
Don't warn on UserCanceled alerts
djc Oct 27, 2024
276eb74
Bump version to 0.23.16 (#2183)
djc Oct 28, 2024
8256c61
Add note about ed25519 browser support
ctz Oct 28, 2024
44297fb
doc(no_inline) rustls::pki_types re-export
ctz Oct 30, 2024
5199db3
server: default send_tls13_tickets 4 -> 2
cpu Oct 30, 2024
9a1cfa0
build: bump nightly for cargo-check-external-types
ctz Nov 1, 2024
b8c0671
CONTRIBUTING: architectural musings
ctz Aug 28, 2024
bb9398e
msgs: add design principle to private docs
ctz Oct 23, 2024
8286744
Add note about custom TLS extension support
ctz Oct 17, 2024
293df5e
cancel-in-progress github action runs keyed on action/PR/ref
ctz Nov 6, 2024
a51a26f
build.yml: ignore pushes of merge queue branches
ctz Nov 6, 2024
abc9a90
minor improvements to internal test imports
brody4hire Nov 7, 2024
f67cfa4
lock.rs: cleanups
ctz Oct 31, 2024
eddac26
TicketRotator: improved TicketSwitcher with RwLock
ctz Oct 31, 2024
a5d510e
bench: support threaded handshake tests
ctz Oct 29, 2024
44522ad
Fix unreliablity of multithreaded TLS1.3 resumption
ctz Oct 29, 2024
d1c33f8
bench: support threaded bulk tests
ctz Nov 1, 2024
a5b53b3
add landing page, using zola
ctz Nov 11, 2024
42be020
publish performance notes
ctz Nov 11, 2024
af0229b
deploy static landing page
ctz Nov 7, 2024
b66efdd
lychee: ignore http responses beyond our control
ctz Nov 7, 2024
271170c
add arm performance results
ctz Nov 12, 2024
a9472cf
StoresServerSessions: guarantee keys are high entropy
ctz Oct 30, 2024
1d0e38c
fix(deps): update rust crate zlib-rs to 0.4
renovate-bot Nov 14, 2024
52d7c30
chore(deps): update codecov/codecov-action action to v5
renovate-bot Nov 14, 2024
5c5cdcc
Prepare 0.23.17
ctz Nov 15, 2024
13055ba
ci: enable bindgen feature on in-use aws-lc-sys
ctz Nov 18, 2024
fd88639
fix(deps): update rust crate asn1 to 0.19
renovate-bot Nov 18, 2024
9103dc2
Upgrade hickory-resolver to alpha 3
djc Nov 18, 2024
9e572fa
split bench tool into its own workspace crate
ctz Nov 13, 2024
460362e
bench: runtime selection of provider
ctz Nov 13, 2024
e3a8fb8
bench: refactor benchmark parameters
ctz Nov 14, 2024
0fec2fd
raw_key_openssl_interop.rs: reformat imports
ctz Nov 18, 2024
20de568
openssl-tests: use pki-types reexport
ctz Nov 18, 2024
12b640e
Avoid inefficient aws-lc-rs `open_within()`
ctz Nov 18, 2024
0a15f37
Move MSRV to 1.71
ctz Nov 18, 2024
07b9a65
take env_logger 0.11
ctz Nov 18, 2024
debd31c
Prefer to use `std::sync::OnceLock` where possible
ctz Nov 18, 2024
516e8de
`try_split_at`: note required MSRV
ctz Nov 18, 2024
b9d3b46
ech: use let-else now available
ctz Nov 18, 2024
6da51eb
rustls-post-quantum: state MSRV
ctz Nov 18, 2024
39fab07
rustls-post-quantum: let-else-ify
ctz Nov 18, 2024
d6a78c0
rustls/server: let-else-ify
ctz Nov 18, 2024
359763e
rustls/client: let-else-ify
ctz Nov 18, 2024
790d3ce
rustls/msgs: let-else-ify
ctz Nov 18, 2024
2943be8
rustls: let-else-ify & warn on clippy::manual_let_else
ctz Nov 18, 2024
0072aaa
tests: let-else-ify
ctz Nov 18, 2024
e91e6e5
fuzzers: let-else-ify
ctz Nov 18, 2024
d138a0c
refactor complex let-else scrutinees
ctz Nov 19, 2024
d12f423
fix(deps): update rust crate asn1 to 0.20
renovate-bot Nov 21, 2024
faca289
chore(deps): lock file maintenance
renovate-bot Nov 21, 2024
499d797
fix: do not send session_ticket(35) extension for TLS 1.3
link2xt Nov 9, 2024
7d74de2
tests: linearize new test code helper
djc Nov 21, 2024
a01bd6b
rustls-bench: fix warnings with no features
ctz Nov 21, 2024
092a164
Manage dependencies via the workspace
djc Nov 22, 2024
4ef3532
Upgrade to mio 1
djc Nov 22, 2024
69b6f74
Record and restore the processed cursor in first_handshake_message
kvinwang Nov 22, 2024
ffe646d
Add reproducer for bug 2227
ctz Nov 22, 2024
33af2c3
Prepare 0.23.18
ctz Nov 22, 2024
fa90405
fix codecov.io upload
ctz Nov 23, 2024
43ead21
bench: record individual handshake latencies
ctz Nov 20, 2024
7c06ae4
bench: allow test case selection by key type
ctz Nov 20, 2024
fc6b4a1
Reduce wasted time in benchmarks
ctz Nov 20, 2024
cbc52c2
CI: enable doc tests on all CI hosts (and update CI doc test comments)
brody4hire Nov 26, 2024
3abca76
replace unnecessary use of .map_or() with .is_some_and()
brody4hire Nov 26, 2024
84075a3
Document an MSRV policy
ctz Nov 25, 2024
7623bba
SECURITY: use GFM note
ctz Nov 26, 2024
82e4e4a
key_log_file_env: simplify `serialized` impl
ctz Nov 27, 2024
6bc1dc9
ci-bench: elide some lifetimes
ctz Nov 27, 2024
20023ee
Normalise syntax of `test_for_each_provider!`
ctz Nov 19, 2024
9864dae
openssl-tests: fix `clippy::zombie_processes` warnings
ctz Nov 28, 2024
bcdbd9f
performance headlines / landing page
ctz Nov 21, 2024
84af4d7
multithreading & latency performance report
ctz Nov 12, 2024
4c227cb
fix internal links using zola "internal link" format
ctz Nov 29, 2024
0abeaf3
README: add reference to symcrypt provider
ctz Nov 29, 2024
bf75664
README: add rustls-openssl link
ctz Nov 29, 2024
0246413
Prepare 0.23.19
ctz Nov 25, 2024
5223b30
Lock file maintenance
renovate-bot Dec 2, 2024
c5e35b0
Design API and impl in rustls-post-quantum
ctz Sep 26, 2024
2753d16
Implement hybrid KX optimisation
ctz Sep 26, 2024
2e746d7
bogo: enable NotJustMLKEMKeyShare test
ctz Sep 26, 2024
d5c4a8b
Tests for new hybrid KX behaviour
ctz Oct 23, 2024
546f853
style.css: fix <pre> blowing out page width
ctz Dec 2, 2024
00da0e7
docs: reduce permission scope
cpu Dec 6, 2024
46ed22d
Lock file maintenance
renovate-bot Dec 9, 2024
2812302
rustls-post-quantum: require aws-lc-rs 1.10
ctz Dec 5, 2024
deda48b
NamedGroup: add post-quantum algorithms
ctz Dec 5, 2024
25ef1f1
`SharedSecret`: support `From<Vec<u8>>`
ctz Dec 5, 2024
a4ee8ef
Bump rustls to 0.23.20
ctz Dec 5, 2024
353e0c9
rustls-post-quantum: require rustls 0.23.20
ctz Dec 5, 2024
d7d9580
rustls-post-quantum: use new NamedGroup values
ctz Dec 5, 2024
b7cf04f
Generalise hybrid key exchange, and support MLKEM768 alone
dconnolly Oct 28, 2024
c77e8aa
rustls-post-quantum: bump to 0.3.0
ctz Dec 5, 2024
9fd25dc
fuzzers/server: cover Acceptor API
ctz Nov 29, 2024
a103a34
fuzzers/client: support multiple read_tls calls
ctz Nov 29, 2024
aee2722
fuzz: support unbuffered API
ctz Dec 2, 2024
58fbe9e
Track `BufferProgress` in once place
ctz Dec 3, 2024
43cbebb
unbuffered: add regression tests for fragmented handshakes
ctz Dec 3, 2024
e232bca
openssl-tests: install openssl from source
ctz Dec 9, 2024
f5aeb39
examples: use inner hostname in HTTPS DNS query
cpu Dec 10, 2024
3ba5167
ci: adjust ech-client daily tests
cpu Dec 10, 2024
2f74c3d
server: remove ClientHello constructor
djc Dec 11, 2024
00a3ddb
fix rustls-provider-example hpke no-std support
brody4hire Dec 11, 2024
ef3fc21
nit: remove trailing space from doc comments
brody4hire Dec 11, 2024
179592f
verifybench.rs: nightly fmt
ctz Dec 11, 2024
24d08f3
rustls-post-quantum: adjust head doc
ctz Dec 11, 2024
b4628c7
rustls-post-quantum: revert version to 0.2.0
ctz Dec 11, 2024
7b7c5dd
rustls-post-quantum: fix readme
ctz Dec 11, 2024
d06ab26
rustls-post-quantum: bump 0.2.1
ctz Dec 11, 2024
deb04c2
improve provider-example CI testing & coverage testing
brody4hire Dec 12, 2024
6f8239f
Adopt benchmarking docs to new rustls-bench crate
sbernauer Dec 12, 2024
ca5570e
Remove ceremony from `KeyType::ca_distinguished_name()` impl in tests
Dec 11, 2024
9045f10
Support `certificate_authorities` extension in ClientHello
Dec 12, 2024
4a58cb2
Clarify ordering of module items
djc Dec 11, 2024
6ad2fef
examples/ech-client: return Result from main
cpu Dec 12, 2024
998fb3a
examples/ech-client: make read_ech() return Result
cpu Dec 12, 2024
a21d2ac
examples/ech-client: make lookup_ech_config return Result
cpu Dec 12, 2024
3e9e9ec
examples/ech-client: avoid opaque Into::into
cpu Dec 12, 2024
d42d202
examples/ech-client: reduce scope of DNS bits
cpu Dec 12, 2024
23ee399
examples/ech-client: process all HTTPS records
cpu Dec 12, 2024
ff027c2
examples/ech-client: reduce rightward drift
cpu Dec 13, 2024
49fe8de
examples/ech-client: improve rustdoc intro comment
cpu Dec 13, 2024
7ef5c49
docs: fix CONTRIBUTING.md broken link
cpu Dec 15, 2024
db9da2a
Add env_logger to complex fuzzers
ctz Dec 10, 2024
c3a14c7
Introduce rustls-fuzzing-provider CryptoProvider
ctz Dec 3, 2024
b620906
rustls-fuzzing-provider tests emit fuzz corpus
ctz Dec 11, 2024
9aa2b69
chore(deps): lock file maintenance
renovate-bot Dec 16, 2024
23b32e2
rustls-post-quantum: benchmarks
ctz Dec 12, 2024
7780b0f
rustls-bench: support rustls-post-quantum
ctz Dec 13, 2024
de8e612
rustls-post-quantum: optimization writeup
ctz Dec 12, 2024
bbb09ea
take aws-lc-rs 1.12
ctz Dec 18, 2024
4fa6853
rustls-post-quantum: use stable KEM API
ctz Dec 18, 2024
e945935
re-admit rustls-post-quantum to workspace
ctz Dec 18, 2024
f98484b
chore(deps): lock file maintenance
renovate-bot Dec 23, 2024
b873e4c
fuzzers/server: fix reachable unwrap
ctz Dec 30, 2024
16a0726
fuzzers/server: cover post-Accepted connections
ctz Dec 30, 2024
dc1f92c
chore(deps): update rust crate itertools to 0.14
renovate-bot Dec 31, 2024
3751e24
cleanup: use more parens when calculating ECH seed
brody4hire Dec 31, 2024
49b5edc
chore(deps): lock file maintenance
renovate-bot Jan 6, 2025
fe6a0d1
docs: update @cpu maintainer status
cpu Jan 8, 2025
12b2276
Update `RELEASING.md` with instructions about `fuzz/Cargo.lock`
Jan 9, 2025
1338caa
Update Cargo.lock
Jan 9, 2025
d1bd2c8
Prepare v0.23.21
Jan 9, 2025
b74a41d
Merge tag 'v/0.23.21' into merge-0.23.21
ibigbug Jan 24, 2025
cd79a85
up
ibigbug Jan 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
99 changes: 73 additions & 26 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,19 @@ permissions:

on:
push:
branches-ignore:
- 'gh-readonly-queue/**'
tags:
- '**'
pull_request:
merge_group:
schedule:
- cron: '0 18 * * *'

concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
build:
name: Build+test
Expand Down Expand Up @@ -73,10 +81,9 @@ jobs:
env:
RUST_BACKTRACE: 1

# nb. this is separate so it can be skipped on macOS & windows, where
# doctests don't work: https://github.com/rust-lang/cargo/issues/8531
# nb. this is separate since `--doc` option cannot be combined with other target option(s) ref:
# - https://doc.rust-lang.org/cargo/commands/cargo-test.html
- name: cargo test --doc (release; all-features)
if: ${{ runner.os != 'macOS' && runner.os != 'Windows' }}
run: cargo test --release --locked --all-features --doc
env:
RUST_BACKTRACE: 1
Expand All @@ -97,9 +104,15 @@ jobs:
- name: cargo build (debug; rustls-provider-example lib in no-std mode)
run: cargo build --locked -p rustls-provider-example --no-default-features

- name: cargo test (debug; rustls-provider-example; all features)
run: cargo test --all-features -p rustls-provider-example

- name: cargo build (debug; rustls-provider-test)
run: cargo build --locked -p rustls-provider-test

- name: cargo test (debug; rustls-provider-test; all features)
run: cargo test --all-features -p rustls-provider-test

- name: cargo package --all-features -p rustls
run: cargo package --all-features -p rustls

Expand All @@ -114,7 +127,7 @@ jobs:

- uses: dtolnay/rust-toolchain@master
with:
toolchain: "1.63"
toolchain: "1.71"

# zlib-rs is optional and requires a later MSRV
- run: cargo check --locked --lib $(admin/all-features-except zlib rustls) -p rustls
Expand Down Expand Up @@ -215,6 +228,12 @@ jobs:
env:
BOGO_SHIM_PROVIDER: aws-lc-rs-fips

- name: Run test suite (post-quantum)
working-directory: bogo
run: ./runme
env:
BOGO_SHIM_PROVIDER: post-quantum

fuzz:
name: Smoke-test fuzzing targets
runs-on: ubuntu-latest
Expand Down Expand Up @@ -250,13 +269,13 @@ jobs:
uses: dtolnay/rust-toolchain@nightly

- name: Smoke-test benchmark program (ring)
run: cargo run -p rustls --profile=bench --locked --example bench $(admin/all-features-except aws_lc_rs,aws-lc-rs,fips rustls) -- --multiplier 0.1
run: cargo run -p rustls-bench --profile=bench --locked --features ring -- --multiplier 0.1

- name: Smoke-test benchmark program (aws-lc-rs)
run: cargo run -p rustls --profile=bench --locked --example bench $(admin/all-features-except ring,fips rustls) -- --multiplier 0.1
run: cargo run -p rustls-bench --profile=bench --locked --features aws-lc-rs -- --multiplier 0.1

- name: Smoke-test benchmark program (fips)
run: cargo run -p rustls --profile=bench --locked --example bench $(admin/all-features-except aws_lc_rs,aws-lc-rs,ring rustls) -- --multiplier 0.1
run: cargo run -p rustls-bench --profile=bench --locked --features fips -- --provider aws-lc-rs-fips --multiplier 0.1

- name: Run micro-benchmarks
run: cargo bench --locked --all-features
Expand Down Expand Up @@ -284,12 +303,12 @@ jobs:
run: |
cargo build --locked --all-features
./admin/pull-readme
./admin/pull-usage
git diff --exit-code

coverage:
name: Measure coverage
runs-on: ubuntu-latest
if: github.event_name != 'merge_group'
steps:
- name: Checkout sources
uses: actions/checkout@v4
Expand All @@ -308,9 +327,9 @@ jobs:
run: ./admin/coverage --lcov --output-path final.info

- name: Report to codecov.io
uses: codecov/codecov-action@v4
uses: codecov/codecov-action@v5
with:
file: final.info
files: final.info
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false

Expand Down Expand Up @@ -340,6 +359,7 @@ jobs:
cross:
name: cross-target testing
runs-on: ubuntu-latest
if: github.event_name != 'merge_group'
strategy:
matrix:
target:
Expand Down Expand Up @@ -369,7 +389,7 @@ jobs:
run: cargo install cross --git https://github.com/cross-rs/cross
- name: Install bindgen feature & CLI for aws-lc-sys (as needed for many cross targets)
if: ${{ matrix.target != 'i686-unknown-linux-gnu' }}
run: cargo add --dev --features bindgen aws-lc-sys --package rustls --verbose && cargo install bindgen-cli --verbose
run: cargo add --dev --features bindgen 'aws-lc-sys@>0.20' --package rustls --verbose && cargo install bindgen-cli --verbose
- run: cross test --package rustls --target ${{ matrix.target }}

semver:
Expand Down Expand Up @@ -429,26 +449,24 @@ jobs:
clippy:
name: Clippy
runs-on: ubuntu-latest
env:
# - we want to be free of any warnings, so deny them
# - disable incompatible_msrv as it does not understand that we apply our
# MSRV to the just the core crate.
CLIPPY_PARAMS: --deny warnings --allow clippy::incompatible_msrv
steps:
- name: Checkout sources
uses: actions/checkout@v4
with:
persist-credentials: false

- name: Install valgrind
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y valgrind

- name: Install rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: clippy
# because examples enable rustls' features, `--workspace --no-default-features` is not
# the same as `--package rustls --no-default-features` so run it separately
- run: cargo clippy --locked --package rustls --no-default-features --all-targets -- $CLIPPY_PARAMS
- run: cargo clippy --locked --workspace --all-features --all-targets -- $CLIPPY_PARAMS
# not part of the workspace
- run: cargo clippy --locked --manifest-path=fuzz/Cargo.toml --all-features --all-targets -- $CLIPPY_PARAMS
# - we want to be free of any warnings, so deny them
# - disable incompatible_msrv as it does not understand that we apply our
# MSRV to the just the core crate.
- run: ./admin/clippy -- --deny warnings --allow clippy::incompatible_msrv

clippy-nightly:
name: Clippy (Nightly)
Expand All @@ -458,13 +476,17 @@ jobs:
uses: actions/checkout@v4
with:
persist-credentials: false

- name: Install valgrind
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y valgrind

- name: Install rust toolchain
uses: dtolnay/rust-toolchain@nightly
with:
components: clippy
- run: cargo clippy --locked --package rustls --no-default-features --all-targets
- run: cargo clippy --locked --workspace --all-features --all-targets
- run: cargo clippy --locked --manifest-path=fuzz/Cargo.toml --all-features --all-targets
# do not deny warnings, as nightly clippy sometimes has false negatives
- run: ./admin/clippy

check-external-types:
name: Validate external types appearing in public API
Expand All @@ -477,7 +499,7 @@ jobs:
- name: Install rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly-2024-05-01
toolchain: nightly-2024-06-30
# ^ sync with https://github.com/awslabs/cargo-check-external-types/blob/main/rust-toolchain.toml
- run: cargo install --locked cargo-check-external-types
- name: run cargo-check-external-types for rustls/
Expand All @@ -487,6 +509,8 @@ jobs:
openssl-tests:
name: Run openssl-tests
runs-on: ubuntu-latest
env:
VERSION: openssl-3.4.0
steps:
- name: Checkout sources
uses: actions/checkout@v4
Expand All @@ -496,6 +520,29 @@ jobs:
- name: Install stable toolchain
uses: dtolnay/rust-toolchain@stable

- name: Cache ${{ env.VERSION }}
uses: actions/cache@v4
id: cache-openssl
with:
path: ${{ env.VERSION }}
key: ${{ env.VERSION }}

- name: Fetch and build ${{ env.VERSION }}
if: steps.cache-openssl.outputs.cache-hit != 'true'
run: |
wget https://github.com/openssl/openssl/releases/download/$VERSION/$VERSION.tar.gz
tar -xzf $VERSION.tar.gz
cd $VERSION/
./Configure --prefix=$(pwd)/built/ --libdir=lib
make -j$(nproc)
make install

- name: Use ${{ env.VERSION }}
run: |
path=$(pwd)/$VERSION/built/
echo "$path/bin" >> $GITHUB_PATH
echo "LD_LIBRARY_PATH=$path/lib" >> $GITHUB_ENV

- name: openssl version
run: openssl version

Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/cifuzz.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
name: CIFuzz
on: [pull_request]

concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
Fuzzing:
runs-on: ubuntu-latest
Expand Down
13 changes: 9 additions & 4 deletions .github/workflows/daily-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -115,16 +115,21 @@ jobs:
- name: Check server acceptor
run: cargo run --locked -p rustls-examples --bin server_acceptor -- --help

- name: Check ech-client
- name: Check ech-client (research.cloudflare.com)
run: >
cargo run --locked -p rustls-examples --bin ech-client -- --host defo.ie defo.ie www.defo.ie |
grep 'SSL_ECH_STATUS: success'
cargo run --locked -p rustls-examples --bin ech-client -- cloudflare-ech.com research.cloudflare.com --path /cdn-cgi/trace |
grep 'sni=encrypted'

- name: Check ech-client (defo.ie)
run: >
cargo run --locked -p rustls-examples --bin ech-client -- --host min-ng.test.defo.ie --path "echstat.php?format=json" public.test.defo.ie min-ng.test.defo.ie |
grep '"SSL_ECH_STATUS": "success"'

- name: Check provider-example client
run: cargo run --locked -p rustls-provider-example --example client

- name: Check rustls-post-quantum client
run: cargo run --locked -p rustls-post-quantum --example client | grep 'kex=X25519Kyber768Draft00'
run: cargo run --locked -p rustls-post-quantum --example client | grep 'kex=X25519MLKEM768'


feature-powerset:
Expand Down
43 changes: 36 additions & 7 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,9 @@ name: documentation

permissions:
contents: read
pages: write
id-token: write

on:
workflow_dispatch:
push:
branches:
- main
Expand All @@ -25,6 +24,11 @@ jobs:
- name: Install rust toolchain
uses: dtolnay/rust-toolchain@nightly

- name: Install zola
uses: taiki-e/install-action@v2
with:
tool: [email protected]

- name: Generate version information
run: |
echo >tag.html \
Expand All @@ -39,28 +43,53 @@ jobs:
env:
RUSTDOCFLAGS: -Dwarnings --cfg=docsrs --html-after-content tag.html

- name: Generate other pages
run: |
cd website && zola build --output-dir ../target/website/

- name: Restore lychee cache
uses: actions/cache@v4
with:
path: .lycheecache
key: cache-lychee-${{ github.sha }}
restore-keys: cache-lychee-

- name: Check links
uses: lycheeverse/lychee-action@v2
with:
args: >
--accept 200..=204,403,429,500
--cache
--max-cache-age 1d
--exclude-path 'website/content/'
'**/*.md'
'target/doc/**/*.html'
fail: true

- name: Massage rustdoc output
run: |
# lockfile causes deployment step to go wrong, due to permissions
rm -f target/doc/.lock
# make resulting url be more sensible
mv target/doc/rustls target/doc/prerelease
# move the result into website root
mv target/doc/rustls target/website/docs

- name: Package and upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: ./target/doc/
path: ./target/website/

deploy:
name: Deploy
runs-on: ubuntu-latest
if: github.repository == 'rustls/rustls'
needs: generate
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}prerelease/
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4

3 changes: 3 additions & 0 deletions .lycheeignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
^file\:\/\/\/.*\/target\/doc\/index\.html$
^http:\/\/www\.isg\.rhul\.ac\.uk\/tls\/Lucky13.html$
^http:\/\/www\.adobe\.com/$
11 changes: 5 additions & 6 deletions BENCHMARKING.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,12 @@ benchmarks](https://github.com/ctz/openssl-bench), which produce similar measure

#### Building

The benchmarks are implemented in the form of "example code" in `rustls/examples/internal/bench.rs`.
Use `cargo build --profile=bench -p rustls --example bench` to obtain the corresponding binary (you can
toggle conditionally compiled code with the `--no-default-features` and `--features` flags) or simply run below, which will build and run the benchmark.
The benchmarks are implemented in `rustls-bench/src/main.rs`.
Use `cargo build --profile=bench -p rustls-bench --features aws-lc-rs` to obtain the corresponding
binary (you can toggle conditionally compiled code with the `--no-default-features` and `--features`
flags) or simply run below, which will build and run the benchmark.

Note: while `cargo build --release --example bench` also works, it results in surprises when used
together with `--no-default-features` because of how Cargo's feature unification works (some
features get enabled automatically by other subcrates). It is also less performant than `--profile=bench`.
Note: The usage of `--release` instead of `--profile=bench` also works, but it is less performant.

#### Running

Expand Down
Loading
Loading