Skip to content

Releases: rustls/webpki

0.103.12

14 Apr 09:38
@ctz ctz

Choose a tag to compare

This release fixes two bugs in name constraint enforcement:

  • GHSA-965h-392x-2mh5: name constraints for URI names were ignored and therefore accepted. URI name constraints are now rejected unconditionally. Note this library does not provide an API for asserting URI names, and URI name constraints are otherwise not implemented.
  • GHSA-xgp8-3hg3-c2mh: permitted subtree name constraints for DNS names were accepted for certificates asserting a wildcard name. This was incorrect because, given a name constraint of accept.example.com, *.example.com could feasibly allow a name of reject.example.com which is outside the constraint. This is very similar to CVE-2025-61727.

Since name constraints are restrictions on otherwise properly-issued certificates, these bugs are reachable only after signature verification and require misissuance to exploit.

What's Changed

Full Changelog: v/0.103.11...v/0.103.12

0.103.11

10 Apr 12:49
@djc djc
v/0.103.11

Choose a tag to compare

In response to #464, we've slightly relaxed requirements for anchor_from_trust_cert() to ignore unknown extensions even if they're marked as critical. This only affects parsing a TrustAnchor from DER, for which most extensions are ignored anyway.

What's Changed

  • Backport parsing trust anchors with unknown critical extensions to 0.103 by @djc in #466

0.103.10

20 Mar 21:11
@ctz ctz

Choose a tag to compare

Correct selection of candidate CRLs by Distribution Point and Issuing Distribution Point. If a certificate had more than one distributionPoint, then only the first distributionPoint would be considered against each CRL's IssuingDistributionPoint distributionPoint, and then the certificate's subsequent distributionPoints would be ignored.

The impact was that correctly provided CRLs would not be consulted to check revocation. With UnknownStatusPolicy::Deny (the default) this would lead to incorrect but safe Error::UnknownRevocationStatus. With UnknownStatusPolicy::Allow this would lead to inappropriate acceptance of revoked certificates.

This vulnerability is thought to be of limited impact. This is because both the certificate and CRL are signed -- an attacker would need to compromise a trusted issuing authority to trigger this bug. An attacker with such capabilities could likely bypass revocation checking through other more impactful means (such as publishing a valid, empty CRL.)

More likely, this bug would be latent in normal use, and an attacker could leverage faulty revocation checking to continue using a revoked credential.

This vulnerability is identified by GHSA-pwjx-qhcg-rvj4. Thank you to @1seal for the report.

What's Changed

Full Changelog: v/0.103.9...v/0.103.10

0.104.0-alpha.5

20 Mar 21:19
@ctz ctz

Choose a tag to compare

0.104.0-alpha.5 Pre-release
Pre-release

Correct selection of candidate CRLs by Distribution Point and Issuing Distribution Point. If a certificate had more than one distributionPoint, then only the first distributionPoint would be considered against each CRL's IssuingDistributionPoint distributionPoint, and then the certificate's subsequent distributionPoints would be ignored.

The impact was that correct provided CRLs would not be consulted to check revocation. With UnknownStatusPolicy::Deny (the default) this would lead to incorrect but safe Error::UnknownRevocationStatus. With UnknownStatusPolicy::Allow this would lead to inappropriate acceptance of revoked certificates.

This vulnerability is thought to be of limited impact. This is because both the certificate and CRL are signed -- an attacker would need to compromise a trusted issuing authority to trigger this bug. An attacker with such capabilities could likely bypass revocation checking through other more impactful means (such as publishing a valid, empty CRL.)

More likely, this bug would be latent in normal use, and an attacker could leverage faulty revocation checking to continue using a revoked credential.

This vulnerability is identified by GHSA-pwjx-qhcg-rvj4. Thank you to @1seal for the report.

What's Changed

  • Take semver-compatible dependency updates by @djc in #448
  • fix rust 1.94 ambiguous panic macro warnings by @cpu in #449
  • avoid std::prelude imports by @cpu in #450
  • Take semver-compatible dependency updates by @djc in #451
  • Tweak SECURITY.md to provide guidance to sloperators by @djc in #454
  • Fix formatting by @ctz in #456
  • Take semver-compatible updates by @ctz in #459
  • Prepare 0.104.0-alpha.5 by @ctz in #457

Full Changelog: v/0.104.0-alpha.4...v/0.104.0-alpha.5

0.104.0-alpha.4

20 Mar 21:18
@ctz ctz

Choose a tag to compare

0.104.0-alpha.4 Pre-release
Pre-release

What's Changed

  • tests: port client auth revocation tests to Rust by @djc in #442
  • Drop dependency on crypto crates by @djc in #444
  • Implement StdError for sct::Error by @djc in #446

Full Changelog: v/0.104.0-alpha.3...v/0.104.0-alpha.4

0.104.0-alpha.3

22 Jan 13:40
@ctz ctz

Choose a tag to compare

0.104.0-alpha.3 Pre-release
Pre-release

What's Changed

  • build(deps): bump actions/checkout from 5 to 6 by @dependabot[bot] in #415
  • Skip over issuerUniqueID and subjectUniqueID by @ctz in #419
  • Align lints with rustls by @djc in #424
  • ci: sync cargo-check-external-types nightly by @cpu in #425
  • build(deps): bump taiki-e/cache-cargo-install-action from 2 to 3 by @dependabot[bot] in #430
  • tests: port tls_server_certs tests to Rust by @djc in #434
  • Tie lifetime of valid_dns_names/valid_uri_names to struct lifetime by @alex in #435
  • generate.py: reformat for black 2026.1.0 by @ctz in #438
  • tests: port signature tests to Rust by @djc in #440
  • tests: group signature tests by algorithm by @djc in #441
  • Start basic SCT support by @djc in #423

Full Changelog: v/0.104.0-alpha.2...v/0.104.0-alpha.3

0.103.9

16 Jan 16:34
@djc djc
v/0.103.9

Choose a tag to compare

What's Changed

  • [backport] ci: avoid denying warnings on nightly toolchains by @alex in #437
  • Backport lifetime change and bump version for release by @alex in #436

0.104.0-alpha.2

28 Oct 18:09
@ctz ctz

Choose a tag to compare

What's Changed

  • Move verify_signed_data() to SignedData::verify() by @djc in #397
  • Correct OidDecoder output; test signature algorithm IDs by @ctz in #401
  • impl Hash for revocation types by @ctz in #406
  • Refactoring of parsing/matching extension identifiers by @ctz in #407
  • Add valid_uri_names() method to Cert by @alex in #404
  • Prepare 0.104.0-alpha.2 by @ctz in #409

Full Changelog: v/0.104.0-alpha.1...v/0.104.0-alpha.2

0.103.8

28 Oct 18:13
@ctz ctz

Choose a tag to compare

What's Changed

Full Changelog: v/0.103.7...v/0.103.8

0.104.0-alpha.1

02 Oct 12:03
@djc djc
v/0.104.0-alpha.1

Choose a tag to compare

What's Changed

  • 0.104.0: Take MSRV of 1.83 by @ctz in #388
  • Remove deprecated Error variants by @djc in #391
  • ci: use cargo-deny-action directly by @djc in #393
  • Simplify/clarify extended key usage validation API by @djc in #392
  • Change version to 0.104.0-alpha.1 for now by @djc in #394