Skip to content

Migrate to rustls 0.24.0-dev.0 - #24

Merged
janrueth merged 1 commit into
mainfrom
rustls-0.24
Apr 21, 2026
Merged

Migrate to rustls 0.24.0-dev.0#24
janrueth merged 1 commit into
mainfrom
rustls-0.24

Conversation

@janrueth

Copy link
Copy Markdown
Owner

Adapt boring-rustls-provider to the rustls 0.24 API. Key changes:

  • CryptoProvider: cipher_suites split into tls12_cipher_suites/tls13_cipher_suites, new ticketer_factory field, kx_groups uses Cow
  • fips() returns FipsStatus enum instead of bool across all trait impls
  • SupportedKxGroup::start() returns StartedKeyExchange enum (Single/Hybrid)
  • HybridKeyExchange: new trait replacing hybrid_component/complete_hybrid_component on ActiveKeyExchange; X25519MlKem768 now implements both traits
  • Prf: for_secret() replaced by new_secret() returning Box
  • SigningKey: algorithm() removed, public_key() added
  • Signer::sign() now takes Box instead of &self
  • KeyProvider::load_private_key() returns Box instead of Arc
  • Cipher message types renamed (OutboundOpaqueMessage -> EncodedMessage, etc.)
  • Nonce/Iv API changes (no more tuple field access, Iv::copy -> Iv::new)
  • QUIC PacketKey: encrypt/decrypt_in_place take path_id: Option
  • Tls12/Tls13CipherSuite: new protocol_version field
  • Many types relocated (NamedGroup, CipherSuite, SignatureScheme, etc. moved under crypto::)
  • tls12 feature no longer forwards to rustls (feature removed from rustls)

Bumps crate version to 6.0.0-dev.0. E2e tests not yet updated.

@janrueth
janrueth force-pushed the rustls-0.24 branch 10 times, most recently from 956fbcc to d809ecd Compare April 21, 2026 10:20
Adapt boring-rustls-provider to the rustls 0.24 API, bumping the crate
version to 6.0.0-dev.0.

rustls API changes:
- CryptoProvider: cipher_suites split into tls12_cipher_suites/tls13_cipher_suites,
  new ticketer_factory field, kx_groups uses Cow
- fips() returns FipsStatus enum (Pending/Unvalidated) instead of bool
- SupportedKxGroup::start() returns StartedKeyExchange enum (Single/Hybrid)
- HybridKeyExchange: new trait replacing hybrid_component/complete_hybrid_component
  on ActiveKeyExchange; X25519MlKem768 now implements both traits
- Prf: for_secret() replaced by new_secret() returning Box<dyn PrfSecret>
- SigningKey: algorithm() removed, public_key() added
- Signer::sign() now takes Box<Self> instead of &self
- KeyProvider::load_private_key() returns Box instead of Arc
- Cipher message types renamed (OutboundOpaqueMessage -> EncodedMessage<OutboundOpaque>, etc.)
- Nonce/Iv API changes (no more tuple field access, Iv::copy -> Iv::new)
- QUIC PacketKey: encrypt/decrypt_in_place take path_id for multipath support,
  nonce derivation uses Nonce::quic() to incorporate path_id
- Tls12/Tls13CipherSuite: new protocol_version field
- Many types relocated under crypto:: (NamedGroup, CipherSuite, SignatureScheme,
  SignatureAlgorithm, ActiveKeyExchange, SharedSecret, etc.)
- builder_with_provider renamed to builder, with_single_cert takes Arc<Identity>
- tls12 feature removed from rustls (no longer forwarded)

Dependency updates:
- spki 0.7 -> 0.8 (updated RSA DER decoding to use reader.sequence() API)
- rcgen 0.12 -> 0.14 (CertifiedIssuer/signed_by API, KeyPair::generate_for)
- Dropped tokio and tokio-rustls dev-dependencies

Test changes:
- E2e TLS handshake tests rewritten using synchronous in-memory
  ClientConnection/ServerConnection (no network, no tokio)
@janrueth
janrueth merged commit 3a47286 into main Apr 21, 2026
9 checks passed
@janrueth
janrueth deleted the rustls-0.24 branch April 21, 2026 11:25
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.

1 participant