Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
404 commits
Select commit Hold shift + click to select a range
3aad0a0
Use `PayloadU16<NonEmpty>` for `DistinguishedName`
ctz Apr 15, 2025
f7522b7
Use `PayloadU16<NonEmpty>` for decoding TLS1.3 tickets
ctz Apr 15, 2025
66ac54f
Use `PayloadU16<NonEmpty>` for PSK identity
ctz Apr 15, 2025
8dc9af9
Use `PayloadU16<NonEmpty>` for HPKE public key
ctz Apr 15, 2025
d7146e4
Use `PayloadU16<NonEmpty>` for ECH HPKE encrypted payload
ctz Apr 15, 2025
b7acce1
Use `PayloadU16<NonEmpty>` for TLS1.3 cookies
ctz Apr 15, 2025
fdf470d
Rename private enum type `PSKKeyExchangeMode`
ctz Apr 17, 2025
841a160
Update Rust crate brotli to v8
renovate-bot Apr 20, 2025
7f26c40
Update Rust crate brotli-decompressor to v5
renovate-bot Apr 20, 2025
72902db
add clarifying comments
elagergren-spideroak Apr 16, 2025
f8eaf83
clarify some field and parameter identifiers
elagergren-spideroak Apr 16, 2025
df8c684
remove unused field
elagergren-spideroak Apr 16, 2025
486de06
Add support for connection-level ALPN protocol configuration
djc Apr 23, 2025
53580f7
Externalise copy of `end_entity_ocsp` return value
ctz Apr 4, 2025
14ff4f3
Extract reading of `ListLength`
ctz Apr 28, 2025
2caa304
Optimize client's SupportedVersions ext repr
ctz Apr 28, 2025
17ef9e3
Simplify ALPN server extension representation
ctz Apr 28, 2025
2fb28bb
Eliminate `ConvertProtocolNameList`
ctz Apr 28, 2025
ffac73a
Simplify SNI client extension representation
ctz Apr 28, 2025
70ed532
Update Rust crate nix to 0.30
renovate-bot Apr 29, 2025
26b8ee3
ci: skip push triggers for most branches
djc May 1, 2025
47ed0c6
ci: enable triggering CI workflow manually
djc May 1, 2025
35c44d2
Extract tls13 expand_secret function out of extract_secrets
swlynch99 Apr 9, 2025
5a12171
Add kernel connection API
swlynch99 Mar 7, 2025
bf9e874
Add test cases for KernelConnection key updates
swlynch99 Mar 8, 2025
9509626
Deprecate dangerous_extract_secrets on unbuffered connections
swlynch99 Apr 4, 2025
06a704e
Update to webpki 0.103.2
djc Apr 13, 2025
a70b0e6
Handle webpki RequiredEkuNotFoundContext errors
djc Apr 13, 2025
2601909
Bump version to 0.23.27
djc Apr 23, 2025
8d46517
fuzz: remove Cargo patch for webpki
cpu May 6, 2025
5fd445f
Update verifybench test data
ctz May 7, 2025
bfa78ba
ci: sync cargo-check-external-types toolchain
cpu May 6, 2025
26726e1
Update semver-compatible dependencies
djc May 7, 2025
e3be538
Upgrade to webpki-roots 1
djc May 7, 2025
97a63bf
manual: add a short howto debugging section
cpu May 6, 2025
73339c2
chore(deps): update dependency go to v1.24.3
renovate-bot May 7, 2025
b30fc9e
SECURITY.md: temporal updates
ctz May 9, 2025
4f09870
Keep ClientHelloPayload impls together
djc May 2, 2025
7f8df89
Reorder ClientHelloPayload impl blocks
djc May 2, 2025
0c0cd2e
build: fix clippy::empty_line_after_doc_comments
cpu May 15, 2025
8015917
ci-bench: fix clippy::io_other_error finding
cpu May 15, 2025
e3d67a7
fix clippy::uninlined_format_args findings
cpu May 15, 2025
f331d5e
Move .clippy.toml to cover just core crate
ctz May 15, 2025
795ae1f
build.yml: simplify clippy use
ctz May 15, 2025
5f8926a
Allow `clippy::if_same_then_else` for logging-only branch
ctz May 19, 2025
f9b859a
Correct `clippy::unused_enumerate_index` allowance
ctz May 19, 2025
2c2dfe6
Address `clippy::manual_let_else` lint
ctz May 19, 2025
24a6231
rustls-bench: address `clippy::uninlined_format_args`
ctz May 19, 2025
e2a6fc7
openssl-tests: address `clippy::uninlined_format_args`
ctz May 19, 2025
1ddc74b
connect-tests: address `clippy::uninlined_format_args`
ctz May 19, 2025
98a4848
ci-bench: address `clippy::uninlined_format_args`
ctz May 19, 2025
8374213
bogo: address `clippy::uninlined_format_args`
ctz May 19, 2025
0004af0
rustls-post-quantum: upgrade to webpki-roots 1
djc May 20, 2025
bf30549
rustls-post-quantum: use workspace dependencies
djc May 20, 2025
e9335c8
Upgrade to criterion 0.6
djc May 20, 2025
902cc50
Introduce server::test for low-level protocol tests
ctz May 19, 2025
70ea0e4
server::test: port `server_ignores_sni_with_ip_address`
ctz May 19, 2025
a81e4d1
server::test: port `server_rejects_sni_with_illegal_dns_name`
ctz May 19, 2025
c332c50
Lower `test_server_rejects_empty_sni_extension`
ctz May 19, 2025
8639c87
Lower `test_server_rejects_duplicate_sni_names`
ctz May 19, 2025
33187f8
Move `test_no_session_ticket_request_on_tls_1_3` into crate
ctz May 19, 2025
c628fae
Make provider explicit in RPK test functions
ctz May 19, 2025
fa52d0c
Make provider explicit in general testing helpers
ctz May 19, 2025
c387ec5
Make provider explicit in AEAD limit tests
ctz May 19, 2025
3f79b17
Make provider explicit in tests using plaintext suite
ctz May 19, 2025
c3496ca
Eliminate final use of webpki crate in rustls tests
ctz May 19, 2025
708a917
Move tests/common/mod.rs to rustls-test crate
ctz May 19, 2025
c6b1469
rustls-bench: use rustls-test keys/certificates
ctz May 19, 2025
34fb672
rustls-test: determine supported keytypes at runtime
ctz May 19, 2025
8bad617
rustls-bench: enable and address more lints
ctz May 21, 2025
5c7975c
rustls-test: enable and address more lints
ctz May 21, 2025
4e78f89
bogo: enable and address more lints
ctz May 21, 2025
7d8c267
rustls-fuzzing-provider: enable and address more lints
ctz May 21, 2025
66a3f3e
provider-example: enable and address more lints
ctz May 21, 2025
997e7be
ci-bench: enable and address more lints
ctz May 21, 2025
70fc076
openssl-test: enable and address more lints
ctz May 21, 2025
7a65fc6
rustfmt: synchronise unstable and stable configs
ctz May 21, 2025
5c96d83
reformat imports with nightly rustfmt
ctz May 21, 2025
91e33db
ci: use latest nightly for nightly formatting
ctz May 21, 2025
b10bb2d
Fix prerelease docs publishing
ctz May 21, 2025
d2fe8ab
rustls-bench: filter all benches by supported key types
ctz Nov 29, 2024
ca7e2b2
rustls-bench: support graviola
ctz Nov 21, 2024
79677ce
README.md: add graviola to providers, and sort
ctz May 22, 2025
9b8f254
Fix bug in crypto::aws_lc_rs::pq::hybrid::Layout
cjpatton May 23, 2025
b2e9c2c
Implement `SECP256R1MLKEM768` hybrid
ctz May 26, 2025
d497219
tlsclient-mio: add option to customise key exchanges
ctz May 26, 2025
29ea6ce
ci: quick interop test for secp256r1mlkem768
ctz May 26, 2025
75f94f0
Exercise each of `ALL_KX_GROUPS` against itself
ctz May 26, 2025
0987991
Convert `test_client_does_not_offer_sha1` into a unit test
ctz May 23, 2025
cd95092
Convert `test_client_rejects_hrr_with_varied_session_id` into unit test
ctz May 23, 2025
e1579fe
Simplify `test_client_sends_share_for_less_preferred_group`
ctz May 23, 2025
fd90780
Convert `test_client_rejects_no_extended_master_secret(...)` to unit …
ctz May 23, 2025
6e0aef6
Convert `test_server_rejects_no_extended_master_secret(...)` to unit …
ctz May 23, 2025
c1c420a
Convert `hybrid_kx_component_share_offered_if_supported_seperately` t…
ctz May 23, 2025
6ad4df5
Convert `hybrid_kx_component_share_not_offered_unless_supported_seper…
ctz May 23, 2025
70d00af
KeyShareEntry: remove test-only accessor
ctz May 27, 2025
5f7c467
Disable `clippy::clone_on_ref_ptr` lint
ctz May 29, 2025
ca468df
Eliminate use of `Arc::clone`
ctz May 29, 2025
01f14c1
feat: expose the number of received TLS1.3 resumption tickets
Frando May 30, 2025
a7bd5c2
Convert `server_picks_ffdhe_group_when_clienthello_(...)` into unit test
ctz May 28, 2025
bbf7245
Convert `server_picks_ffdhe_group_when_(...)` into unit test
ctz May 28, 2025
f48beaa
Convert `server_accepts_client_with_no_ecpoints(..)` into unit test
ctz May 28, 2025
62e2aa4
Convert `cas_extension_in_client_hello_if_(...)` to unit test
ctz May 28, 2025
67d324b
Convert `test_raw_keys::alter_client_hello` into unit tests
ctz May 28, 2025
c975fa2
Convert `test_raw_keys::incorrectly_alter_server_hello` into unit tests
ctz May 28, 2025
91cf9a7
Convert `test_client_with_custom_verifier_can_accept_ecdsa_sha1_signa…
ctz May 29, 2025
f9335b5
tests/api: minor clean-up of ProtocolVersion enum use
ctz May 29, 2025
598f631
Withdraw unnecessary types from `rustls::internals`
ctz May 29, 2025
2e7f326
Promote `CertificateType` enum to public API
ctz May 29, 2025
24957ce
Eliminate redundant `HandshakeMessagePayload::typ` field
ctz Jun 2, 2025
f1a2702
Privatise `HandshakePayload`
ctz Jun 2, 2025
19133f2
Introduce specific error for unsupported signatures
ctz Jun 2, 2025
3cdc0b0
Take semver-compatible updates
ctz Jun 6, 2025
b4aca49
Extract `ClientSessionTicket` codec steps
ctz Jun 9, 2025
34cdce3
Return more specific type from `grease_ext()`
ctz Jun 9, 2025
d882860
Return more specific type from `outer_hello_ext()`
ctz Jun 9, 2025
229dfe2
Allow future customisation of alert sent for `InvalidMessage`
ctz Sep 14, 2023
568b2c6
Use `ProtocolName` for ALPN protocol pervasively
ctz Jun 9, 2025
96d6656
Only include renegotiation SCSV for TLS1.2 attempts
ctz Jun 11, 2025
136e857
fuzzing-provider: make ciphersuites public
ctz Jun 10, 2025
9b452d2
fuzzing-provider: support no-op ticketer
ctz Jun 10, 2025
b9a530a
ci-bench: low-noise benchmarks with rustls-fuzzing-provider
ctz Jun 10, 2025
46ba039
Expose `named_groups` extension in `ClientHello`
ctz Jun 12, 2025
12fe0c1
Prepare 0.23.28
ctz Jun 16, 2025
6584005
Remove no-std ticketer code that didn't compile
ctz Jun 16, 2025
834cb11
ci: extend to check no-std-specific code compiles
ctz Jun 16, 2025
7c1859c
Omit `RSA_PKCS1_3072_8192_SHA384` in calls to webpki
ctz Jun 19, 2025
6509aa1
Add PKCS#1 `_ABSENT_PARAMS` algorithms to webpki calls
ctz Jun 19, 2025
c82b2cf
chore(deps): update rust crate asn1 to 0.22
renovate-bot Jun 21, 2025
ecc68ef
impl Codec for unit type
ctz Sep 14, 2023
4513c69
Introduce `ClientExtensions` type
ctz Sep 14, 2023
54100be
Move desired client ALPN into `ClientExtensionInput`
ctz Jun 3, 2025
467c85c
Move to new extensions repr for HRR
ctz Apr 3, 2025
2eb271f
Move to new extensions repr for TLS1.3 certs
ctz Apr 4, 2025
01ca121
Extract `DuplicateExtensionChecker` helper
ctz Jun 23, 2025
b5f22b5
Move to new extensions repr for cert requests
ctz Apr 4, 2025
cfaf2db
Move to new extensions repr for TLS1.3 tickets
ctz Apr 7, 2025
692f981
Move to new extensions repr for ServerHello/EE
ctz Apr 7, 2025
5d5d26e
Introduce iterator-based TlsList decoding
ctz Jun 17, 2025
7ab492e
Remove duplicate EC point format check
ctz Jun 20, 2025
311ddea
Improve representation of EC point formats extension
ctz Jun 17, 2025
4f362ca
Improve representation of PSK_KE extension
ctz Jun 17, 2025
0af24bd
client: abstract if key share is needed
djc Jun 23, 2025
7766efd
client: generalize early traffic secret derivation
djc Jun 23, 2025
6cc7a45
client: pass all of ClientHelloInput into handle_server_hello()
djc Jun 23, 2025
4b3c053
client: pass all of ClientHelloInput into tls12 handle_server_hello()
djc Jun 24, 2025
fd92882
client: move find_session() to ClientSessionValue::retrieve()
djc Jun 25, 2025
052493b
client: ClientHelloInput initialization out of start_handshake()
djc Jun 25, 2025
9a4e5a7
client: attach start_handshake() to ClientHelloInput
djc Jun 25, 2025
8366265
client: clarify ClientExtensionsInput lifetimes
djc Jun 25, 2025
14f77c2
Simplify the simpleserver example by using rustls::Stream
Ten0 Jun 25, 2025
6f1e6f4
Add designated error for rejecting an OCSP response
ctz Jun 25, 2025
194ea36
bogo: test client use of OCSP stapling
ctz Jun 25, 2025
4a0c0f1
Apply suggestions from clippy 1.88
djc Jun 26, 2025
ed3af05
bogo: document `ConflictingVersionNegotiation` skip
ctz Jun 26, 2025
8f2be1b
bogo: clarify version skips
ctz Jun 26, 2025
f808a96
bogo: prepare for shim to support multiple credentials
ctz Jun 26, 2025
d752d31
bogo: enable `CertificateSelection-Client` tests
ctz Jun 26, 2025
06a5f6a
bogo: replace sleep with orderly TCP closure
ctz Jun 28, 2025
aab9b9b
Add SignatureSchemes for ML-DSA
djc Jun 30, 2025
42d6475
bogo: enable `SendWarningAlerts`
ctz Jun 27, 2025
479b909
bogo: use specific error for `MessageInterleavedWithHandshakeMessage`
ctz Jun 27, 2025
76973c5
bogo: use specific error for `KeyEpochWithPendingFragment`
ctz Jun 27, 2025
41559f2
bogo: enable SendHalfHelloRequest-* tests
ctz Jun 27, 2025
bc81fb9
bogo: enable `ExportTrafficSecrets*` tests
ctz Jun 27, 2025
41be2eb
bogo: further fill-in skip reasons
ctz Jun 27, 2025
f2bbec6
add From<Arc<CertifiedKey>> for SingleCertAndKey
stormshield-gt Jul 1, 2025
0878444
Memoise computation of empty hash
ctz Jul 1, 2025
7bc3052
Take 0.3 version of hpke* crates
ctz Jul 1, 2025
f3b75e3
Upgrade to rcgen 0.14
djc Jul 3, 2025
a5433a1
Correct calculation of ServerHello ECH confirmation
ctz Jul 4, 2025
efa2066
Improve compactness of Debug impl for extensions
ctz Jul 7, 2025
373ad88
tls13::key_schedule: move `SecretKind` down
ctz Jul 1, 2025
9620bec
tls13::key_schedule: move `KeySchedule` struct down
ctz Jul 1, 2025
e5998cd
key_schedule: add state for derivations before finish
ctz Jul 2, 2025
d2c64f0
key_schedule: separate ops not using current secret
ctz Jul 2, 2025
788b0df
key_schedule: erase master secret in traffic state
ctz Jul 2, 2025
c84675e
key_schedule: minimise lifetime of resumption secret
ctz Jul 2, 2025
b854079
Propagate context for webpki signature algorithm errors
djc Jun 30, 2025
4e0b5fe
Bump version to 0.23.29
djc Jun 30, 2025
8b8ba56
Clarify the ambiguous process-level CryptoProvider error
JonathanBrouwer Jul 13, 2025
caf6cbc
conn: tweak style in complete_io()
djc Jul 15, 2025
247fd66
conn: handle blocking at the connection level
djc Jul 14, 2025
6b9df65
sign: make public_key_to_spki() public
djc Jul 26, 2025
4c16f03
Fix: Do not try to call deframer on junk data
schreter Jul 25, 2025
0ccbc63
Cargo: rustls version 0.23.29 -> 0.23.30
cpu Jul 26, 2025
41bfb22
rustls-test: add helper for non-blocking IO tests
ctz Jul 29, 2025
2f487cf
rustls-test: withdraw `FailsReads` helper
ctz Jul 29, 2025
2a852c0
Exit `complete_io` loop as soon as no progress is made
ctz Jul 29, 2025
5e5d629
`complete_io`: make non-blocking error return reachable
ctz Jul 29, 2025
668231f
Improve testing of non-blocking `complete_io()`
ctz Jul 29, 2025
b2831e7
rustls-bench: short circuit single threaded tests
ctz Jul 28, 2025
647ece1
Prepare 0.23.31
ctz Jul 29, 2025
3a92665
Fix docs link errors
ctz Aug 4, 2025
0cb4244
Track 1.89 lint changes
ctz Aug 7, 2025
20f548a
Withdraw use of async-std in example code
ctz Aug 27, 2025
2d03fa7
Remove test of async-std example
ctz Aug 28, 2025
e029d31
cargo-check-external-types: take updated nightly
ctz Aug 10, 2025
1492c95
Fix `clippy::needless_borrows_for_generic_args`
ctz Sep 11, 2025
77a0148
ci-bench: RUSTSEC-2025-0057 fxhash -> rustc-hash
cpu Sep 6, 2025
ef7063d
take webpki 0.103.5
ctz Aug 15, 2025
d3c502e
Improve compatibility of TLS1.2 with ECDSA+SHA512
ctz Aug 15, 2025
5abe33e
Prepare 0.23.32
ctz Sep 19, 2025
6a188a7
Take semver-compatible updates
ctz Sep 19, 2025
48b2fd9
Support encryption for QUIC multipath
flub Apr 8, 2025
667a71d
Reset KeyUpdate counter on AppData
ctz Oct 17, 2025
b4597ca
Prepare 0.23.33
ctz Oct 17, 2025
31ca6af
Avoid use of `docsrs` cfg
ctz Sep 29, 2025
278391e
Remove use of `doc_auto_cfg`
ctz Sep 29, 2025
4cee226
Cargo: rustls v0.23.33 -> v0.23.34
cpu Oct 21, 2025
90e28d6
fix: only add ocsp in `ConfigBuilder::with_single_cert_with_ocsp` if
vuongDang Nov 4, 2025
645095f
Pass through attributes for enum_builder!
ctz Nov 4, 2025
6ed925e
Address nightly `clippy::derivable_impls` lints
ctz Oct 22, 2025
7768cd2
Bump version to 0.23.35
djc Nov 4, 2025
ba00982
Support P256+SHA512 and P384+SHA512 signatures in certificates
ctz Jan 5, 2026
99308d2
Bump nightly toolchain for cargo-check-external-types
djc Dec 12, 2025
b47bf54
Prepare 0.23.36
ctz Jan 5, 2026
132a9aa
tlsserver-mio: fix lint with better style
ctz Jan 22, 2026
ec4ae59
Take hpke-rs* 0.6
ctz Feb 13, 2026
c3a6a11
upgrade to zlib-rs 0.6.0
folkertdev Jan 23, 2026
c91fce0
chore(deps): update taiki-e/cache-cargo-install-action action to v3
renovate-bot Dec 31, 2025
1735677
chore(deps): update actions/upload-artifact action to v6
renovate-bot Dec 13, 2025
3c1841c
chore(deps): update actions/cache action to v5
renovate-bot Dec 12, 2025
ff6f798
ci-bench: "pre-warm" per-thread entropy source
ctz Sep 29, 2025
4df9216
Do not "warm up" aws-lc-rs RNG in other benchmarks
ctz Oct 30, 2025
86ad94b
Refresh verify-bench certificates
djc Feb 4, 2026
e1886fd
Take semver-compatible updates
ctz Feb 24, 2026
245963b
Add ML-KEM-1024 key encapsulation mechanism
DarkmatterVale Feb 23, 2026
4b455b8
Bump version of rustls
DarkmatterVale Feb 23, 2026
7e99b52
Update semver-compatible dependencies
ctz Apr 9, 2026
0f0fbf5
Fix `clippy::result_large_err`
ctz Apr 9, 2026
5b3ef11
Fix ambiguous panic! warning
ctz Apr 10, 2026
a1da268
client: allow skipping selected ALPN validation
TaeHagen Mar 31, 2026
6b116bc
Bump version of rustls
TaeHagen Apr 9, 2026
d4b3ec5
Apply suggestions from clippy 1.95
djc Apr 21, 2026
6134204
Adapt to updated nightly features
djc Apr 21, 2026
7b37468
Take semver-compatible dependency updates
djc Apr 21, 2026
860798e
Cargo: update semver compat deps
cpu Apr 22, 2026
0541605
Cargo: version 0.23.38 -> 0.23.39
cpu Apr 22, 2026
a612901
Default require_ems based on CryptoProvider FIPS status
janrueth Apr 21, 2026
9088004
ech: expand `maximum_name_length` to usize ASAP
ctz Apr 26, 2026
8bf935c
ech: pop comment from match arm
ctz Apr 26, 2026
c574ffd
ech: avoid short-lived allocation for padding
ctz Apr 26, 2026
3e06ef1
ech: add both name and "gross" padding
ctz Apr 26, 2026
4e49529
ech: test inner name padding
ctz Apr 26, 2026
c0005be
ech: base inner name padding on actual extension
ctz Apr 26, 2026
e7a555f
Prefer `Ord::max` to `core::cmp`
ctz Apr 26, 2026
b44c09f
Prepare 0.23.40
ctz Apr 28, 2026
32dc9bc
Merge tag 'v/0.23.40' into merge-latest-0.23
ibigbug May 11, 2026
71016a0
fix: skip session_id_generator when Reality is active
ibigbug May 11, 2026
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
1 change: 0 additions & 1 deletion .clippy.toml

This file was deleted.

2 changes: 2 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,5 @@ A clear and concise description of what you expected to happen.

**Additional context**
Add any other context about the problem here.
For example, consider including verbose logs or a packet capture. For help
with this [see the manual](https://docs.rs/rustls/latest/rustls/manual/_03_howto/index.html#debugging).
82 changes: 60 additions & 22 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@ permissions:

on:
push:
branches-ignore:
- 'gh-readonly-queue/**'
branches: ['main', 'rel-*', 'ci/*']
tags:
- '**'
pull_request:
merge_group:
schedule:
- cron: '0 18 * * *'
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || github.ref }}
Expand Down Expand Up @@ -62,13 +62,13 @@ jobs:

- name: Install ninja-build tool for aws-lc-fips-sys on Windows
if: runner.os == 'Windows'
uses: seanmiddleditch/gha-setup-ninja@v5
uses: seanmiddleditch/gha-setup-ninja@v6

- name: Install golang for aws-lc-fips-sys on macos
if: runner.os == 'MacOS'
uses: actions/setup-go@v5
with:
go-version: "1.22.2"
go-version: "1.24.3"

- name: cargo build (debug; default features)
run: cargo build --locked
Expand Down Expand Up @@ -98,6 +98,9 @@ jobs:
env:
RUST_BACKTRACE: 1

- name: cargo build (debug; no-std)
run: cargo build --locked --lib -p rustls $(admin/all-features-except std,brotli,read_buf rustls)

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

Expand Down Expand Up @@ -207,7 +210,7 @@ jobs:
- name: Install golang toolchain
uses: actions/setup-go@v5
with:
go-version: "1.21"
go-version: "1.24"
cache: false

- name: Run test suite (ring)
Expand Down Expand Up @@ -247,7 +250,9 @@ jobs:
uses: dtolnay/rust-toolchain@nightly

- name: Install cargo fuzz
run: cargo install cargo-fuzz
uses: taiki-e/cache-cargo-install-action@v3
with:
tool: cargo-fuzz

- name: Smoke-test fuzz targets
run: |
Expand Down Expand Up @@ -316,12 +321,14 @@ jobs:
persist-credentials: false

- name: Install rust toolchain
uses: dtolnay/rust-toolchain@stable
uses: dtolnay/rust-toolchain@nightly
with:
components: llvm-tools

- name: Install cargo-llvm-cov
run: cargo install cargo-llvm-cov
uses: taiki-e/cache-cargo-install-action@v3
with:
tool: cargo-llvm-cov

- name: Measure coverage
run: ./admin/coverage --lcov --output-path final.info
Expand Down Expand Up @@ -385,11 +392,20 @@ jobs:

- name: Install rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Install cross (cross-rs) from GitHub
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)
- name: Install cross
uses: taiki-e/cache-cargo-install-action@v3
with:
tool: cross
git: https://github.com/cross-rs/cross
# known-working main in feb 2025, bump as needed
rev: c7dee4d
- name: Install bindgen-cli
uses: taiki-e/cache-cargo-install-action@v3
with:
tool: bindgen-cli
- name: Enable bindgen feature 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@>0.20' --package rustls --verbose && cargo install bindgen-cli --verbose
run: cargo add --dev --features bindgen 'aws-lc-sys@>0.20' --package rustls --verbose
- run: cross test --package rustls --target ${{ matrix.target }}

semver:
Expand Down Expand Up @@ -432,10 +448,9 @@ jobs:
with:
persist-credentials: false
- name: Install rust nightly toolchain
uses: dtolnay/rust-toolchain@master
uses: dtolnay/rust-toolchain@nightly
with:
components: rustfmt
toolchain: nightly-2024-02-21
- name: Check formatting (unstable)
run: cargo fmt --all -- --check --config-path .rustfmt.unstable.toml
continue-on-error: true
Expand Down Expand Up @@ -463,10 +478,7 @@ jobs:
uses: dtolnay/rust-toolchain@stable
with:
components: clippy
# - 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
- run: ./admin/clippy -- --deny warnings

clippy-nightly:
name: Clippy (Nightly)
Expand All @@ -485,7 +497,7 @@ jobs:
uses: dtolnay/rust-toolchain@nightly
with:
components: clippy
# do not deny warnings, as nightly clippy sometimes has false negatives
# Do not deny warnings, as nightly clippy sometimes has false negatives.
- run: ./admin/clippy

check-external-types:
Expand All @@ -499,13 +511,33 @@ jobs:
- name: Install rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly-2024-06-30
toolchain: nightly-2025-10-18
# ^ sync with https://github.com/awslabs/cargo-check-external-types/blob/main/rust-toolchain.toml
- run: cargo install --locked cargo-check-external-types
- name: Install cargo-check-external-types
uses: taiki-e/cache-cargo-install-action@v3
with:
tool: cargo-check-external-types
- name: run cargo-check-external-types for rustls/
working-directory: rustls/
run: cargo check-external-types

taplo:
name: Taplo
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
with:
persist-credentials: false

- name: Install rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Install taplo-cli
uses: taiki-e/cache-cargo-install-action@v3
with:
tool: taplo-cli
- run: taplo format --check

openssl-tests:
name: Run openssl-tests
runs-on: ubuntu-latest
Expand All @@ -521,7 +553,7 @@ jobs:
uses: dtolnay/rust-toolchain@stable

- name: Cache ${{ env.VERSION }}
uses: actions/cache@v4
uses: actions/cache@v5
id: cache-openssl
with:
path: ${{ env.VERSION }}
Expand Down Expand Up @@ -551,3 +583,9 @@ jobs:
run: cargo test --locked -- --include-ignored
env:
RUST_BACKTRACE: 1

audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: EmbarkStudios/cargo-deny-action@v2
2 changes: 1 addition & 1 deletion .github/workflows/cifuzz.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
dry-run: false
language: rust
- name: Upload Crash
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
if: failure() && steps.build.outcome == 'success'
with:
name: artifacts
Expand Down
9 changes: 4 additions & 5 deletions .github/workflows/daily-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ jobs:

- name: Install ninja-build tool for aws-lc-fips-sys on Windows
if: runner.os == 'Windows'
uses: seanmiddleditch/gha-setup-ninja@v5
uses: seanmiddleditch/gha-setup-ninja@v6

- name: Build example programs
run: cargo build --locked -p rustls-examples
Expand Down Expand Up @@ -90,7 +90,7 @@ jobs:

- name: Install ninja-build tool for aws-lc-fips-sys on Windows
if: runner.os == 'Windows'
uses: seanmiddleditch/gha-setup-ninja@v5
uses: seanmiddleditch/gha-setup-ninja@v6

- name: Check simple client
run: cargo run --locked -p rustls-examples --bin simpleclient
Expand All @@ -107,9 +107,6 @@ jobs:
- name: Check unbuffered tokio client
run: cargo run --locked -p rustls-examples --bin unbuffered-async-client

- name: Check unbuffered async-std client
run: cargo run --locked -p rustls-examples --bin unbuffered-async-client --features=async-std

# Test the server_acceptor binary builds - we invoke with --help since it
# will run a server process that doesn't exit when invoked with no args
- name: Check server acceptor
Expand All @@ -131,6 +128,8 @@ jobs:
- name: Check rustls-post-quantum client
run: cargo run --locked -p rustls-post-quantum --example client | grep 'kex=X25519MLKEM768'

- name: Smoke test for secp256r1mlkem768 interop
run: cargo run --locked -p rustls-examples --bin tlsclient-mio -- --http --key-exchange secp256r1mlkem768 --verbose openquantumsafe.org

feature-powerset:
name: Feature Powerset
Expand Down
7 changes: 4 additions & 3 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,14 +41,14 @@ jobs:
# keep features in sync with Cargo.toml `[package.metadata.docs.rs]` section
run: cargo doc --locked --features read_buf,ring --no-deps --package rustls
env:
RUSTDOCFLAGS: -Dwarnings --cfg=docsrs --html-after-content tag.html
RUSTDOCFLAGS: -Dwarnings --cfg=rustls_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
uses: actions/cache@v5
with:
path: .lycheecache
key: cache-lychee-${{ github.sha }}
Expand All @@ -71,7 +71,8 @@ jobs:
# lockfile causes deployment step to go wrong, due to permissions
rm -f target/doc/.lock
# move the result into website root
mv target/doc/rustls target/website/docs
mv target/doc/* target/website/
mv target/website/rustls target/website/docs

- name: Package and upload artifact
uses: actions/upload-pages-artifact@v3
Expand Down
4 changes: 3 additions & 1 deletion .rustfmt.toml
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
chain_width=40
# keep in sync with .rustfmt.unstable.toml
chain_width = 40
style_edition = "2024"
1 change: 1 addition & 0 deletions .rustfmt.unstable.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# keep in sync with .rustfmt.toml
chain_width = 40
style_edition = "2024"

# format imports
group_imports = "StdExternalCrate"
Expand Down
3 changes: 3 additions & 0 deletions .taplo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[formatting]
align_comments = false
column_width = 110
Loading