From e58cd2d5cd819ae11e3071eb744882ca34545ff1 Mon Sep 17 00:00:00 2001 From: Dirkjan Ochtman Date: Wed, 9 Sep 2026 14:10:43 +0200 Subject: [PATCH 1/4] ci: only check libraries for clippy with WASM --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2e85965f..3f7a6d2a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -80,7 +80,7 @@ jobs: if: matrix.os == 'ubuntu-latest' run: | rustup target add wasm32-wasip1 - cargo clippy-ci --target wasm32-wasip1 + cargo clippy --lib --target wasm32-wasip1 -- -D warnings # Update any flexible dependencies that may have SemVer applicable changes # to ensure the project keeps building with the whole version range. This is: From 106e65a81fc97a11a37055ba84be56e3dd55f155 Mon Sep 17 00:00:00 2001 From: Dirkjan Ochtman Date: Wed, 9 Sep 2026 12:57:54 +0200 Subject: [PATCH 2/4] Switch to using aws-lc-rs by default --- Cargo.lock | 84 ++++++++++++++++++++++- README.md | 8 +-- rustls-platform-verifier/Cargo.toml | 4 +- rustls-platform-verifier/src/tests/mod.rs | 2 +- 4 files changed, 89 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a604aa36..616d9f2c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -28,6 +28,29 @@ dependencies = [ "log", ] +[[package]] +name = "aws-lc-rs" +version = "1.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b281d307588d634de920874890732659e2e7672f72b5e10e81badc1a8a83621e" +dependencies = [ + "aws-lc-sys", + "zeroize", +] + +[[package]] +name = "aws-lc-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bff6c3b54fad79a2e60b8102caf565819711497c1f5f092f49508e2f5c31b27" +dependencies = [ + "cc", + "cmake", + "dunce", + "fs_extra", + "pkg-config", +] + [[package]] name = "base64" version = "0.22.1" @@ -53,6 +76,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d16d90359e986641506914ba71350897565610e87ce0ad9e6f28569db3dd5c6d" dependencies = [ "find-msvc-tools", + "jobserver", + "libc", "shlex", ] @@ -62,6 +87,15 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" +[[package]] +name = "cmake" +version = "0.1.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678" +dependencies = [ + "cc", +] + [[package]] name = "combine" version = "4.6.7" @@ -88,6 +122,12 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + [[package]] name = "env_filter" version = "0.1.4" @@ -104,6 +144,12 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + [[package]] name = "getrandom" version = "0.2.17" @@ -115,6 +161,17 @@ dependencies = [ "wasi", ] +[[package]] +name = "getrandom" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" +dependencies = [ + "cfg-if", + "libc", + "r-efi", +] + [[package]] name = "jni" version = "0.22.4" @@ -164,6 +221,16 @@ dependencies = [ "syn", ] +[[package]] +name = "jobserver" +version = "0.1.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3" +dependencies = [ + "getrandom 0.4.3", + "libc", +] + [[package]] name = "libc" version = "0.2.186" @@ -194,6 +261,12 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" +[[package]] +name = "pkg-config" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6b464fbc74e149a392436b17d523f769e057cb6877f6a5c4618bc6f11800548" + [[package]] name = "proc-macro2" version = "1.0.106" @@ -212,6 +285,12 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + [[package]] name = "regex" version = "1.12.3" @@ -249,7 +328,7 @@ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom", + "getrandom 0.2.17", "libc", "untrusted", "windows-sys 0.52.0", @@ -270,8 +349,8 @@ version = "0.23.40" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef86cd5876211988985292b91c96a8f2d298df24e75989a43a3c73f2d4d8168b" dependencies = [ + "aws-lc-rs", "once_cell", - "ring", "rustls-pki-types", "rustls-webpki", "subtle", @@ -330,6 +409,7 @@ version = "0.103.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" dependencies = [ + "aws-lc-rs", "ring", "rustls-pki-types", "untrusted", diff --git a/README.md b/README.md index 4e2ef919..614ff992 100644 --- a/README.md +++ b/README.md @@ -73,13 +73,13 @@ will make it to production faster and any possibly used trust root is static by Even though platform verifiers are sometimes implemented in memory-unsafe languages, it is very unlikely that Rust apps using this library will become a point of weakness. This is due to either using a smaller set of servers or just being less exposed then other critical functions of the operating system, default web browser, etc. -But if your activity is identical or close to one of the following examples that process large amounts of untrusted input, a 100% Rust option like `webpki` is a more secure option: +But if your activity is identical or close to one of the following examples that process large amounts of untrusted input, a 100% Rust option like `webpki` is a more secure option: - Seeing how many TLS servers `rustls` with a specific configuration can connect to. - Harvesting data from various untrusted TLS endpoints exposed on the internet. - Extracting info from a known-evil endpoint. - Scanning all TLS certificates on the open internet. -`rustls-platform-verifier` is widely deployed by several applications that use the `rustls` stack, such as 1Password, Bitwarden, Signal, and `rustup`, on a wide set of OSes. +`rustls-platform-verifier` is widely deployed by several applications that use the `rustls` stack, such as 1Password, Bitwarden, Signal, and `rustup`, on a wide set of OSes. This means that it has received lots of exposure to edge cases and has real-world experience/expertise invested into it to ensure optimal compatibility and security. ## Installation and setup @@ -101,7 +101,7 @@ This crate will use the [rustls process-default crypto provider](https://docs.rs ```rust use rustls::ClientConfig; use rustls_platform_verifier::BuilderVerifierExt; -let arc_crypto_provider = std::sync::Arc::new(rustls::crypto::ring::default_provider()); +let arc_crypto_provider = std::sync::Arc::new(rustls::crypto::aws_lc_rs::default_provider()); let config = ClientConfig::builder_with_provider(arc_crypto_provider) .with_safe_default_protocol_versions() .unwrap() @@ -166,7 +166,7 @@ implementation "rustls:rustls-platform-verifier:latest.release"
Library Snippets - + ```groovy import groovy.json.JsonSlurper diff --git a/rustls-platform-verifier/Cargo.toml b/rustls-platform-verifier/Cargo.toml index e4030665..6e8f46b6 100644 --- a/rustls-platform-verifier/Cargo.toml +++ b/rustls-platform-verifier/Cargo.toml @@ -15,7 +15,7 @@ name = "rustls_platform_verifier" # Enables a C interface to use for testing where `cargo` can't be used. # This feature is not stable, nor is the interface exported when it is enabled. # Do not rely on this or use it in production. -ffi-testing = ["android_logger", "rustls/ring"] +ffi-testing = ["android_logger", "rustls/aws-lc-rs"] # Enables APIs that expose lower-level verifier types for debugging purposes. dbg = [] # Enables `log::debug` base64-encoded logging of all end-entity certificates processed @@ -56,7 +56,7 @@ security-framework-sys = "2.15" windows-sys = { version = ">=0.52.0, <0.62.0", default-features = false, features = ["Win32_Foundation", "Win32_Security_Cryptography"] } [dev-dependencies] -rustls = { version = "0.23", default-features = false, features = ["ring"] } +rustls = { version = "0.23", default-features = false, features = ["aws-lc-rs"] } webpki-root-certs = "1" [package.metadata.docs.rs] diff --git a/rustls-platform-verifier/src/tests/mod.rs b/rustls-platform-verifier/src/tests/mod.rs index 687993eb..f464a75e 100644 --- a/rustls-platform-verifier/src/tests/mod.rs +++ b/rustls-platform-verifier/src/tests/mod.rs @@ -56,5 +56,5 @@ pub fn assert_cert_error_eq( } fn test_provider() -> Arc { - Arc::new(rustls::crypto::ring::default_provider()) + Arc::new(rustls::crypto::aws_lc_rs::default_provider()) } From b9ec66e7ec6bfeb1a4a7fd6ecfd498a24d0a35b9 Mon Sep 17 00:00:00 2001 From: Dirkjan Ochtman Date: Wed, 9 Sep 2026 15:34:01 +0200 Subject: [PATCH 3/4] admin: fix typo in filename --- admin/{MAINTAINENCE.md => MAINTENANCE.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename admin/{MAINTAINENCE.md => MAINTENANCE.md} (100%) diff --git a/admin/MAINTAINENCE.md b/admin/MAINTENANCE.md similarity index 100% rename from admin/MAINTAINENCE.md rename to admin/MAINTENANCE.md From d421acfb8564f64009c4ffb5827f2f28e51da776 Mon Sep 17 00:00:00 2001 From: Dirkjan Ochtman Date: Wed, 9 Sep 2026 12:40:32 +0200 Subject: [PATCH 4/4] Generate Android network-security-config with CRL hosts --- .github/workflows/ci.yml | 3 + Cargo.lock | 1382 ++++++++++++++++- admin/MAINTENANCE.md | 11 + android-release-support/Cargo.toml | 6 + android-release-support/tests/codegen.rs | 62 + .../main/res/xml/network_security_config.xml | 382 +++++ 6 files changed, 1839 insertions(+), 7 deletions(-) create mode 100644 android-release-support/tests/codegen.rs create mode 100644 android/rustls-platform-verifier/src/main/res/xml/network_security_config.xml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3f7a6d2a..a05d1122 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -148,6 +148,9 @@ jobs: - name: Test (${{ matrix.os }}) run: cargo test + - name: Update Android security manifest + if: matrix.os == 'ubuntu-latest' + run: cargo test --manifest-path android-release-support/Cargo.toml --test codegen -- --ignored test_android: name: "Test (Android)" diff --git a/Cargo.lock b/Cargo.lock index 616d9f2c..4d4825d1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -28,6 +28,66 @@ dependencies = [ "log", ] +[[package]] +name = "android_system_properties" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae221649c9976a6f6c56ae1facf410f3ddb33cc661c4b7b61020a912d4237fbc" +dependencies = [ + "libc", +] + +[[package]] +name = "asn1-rs" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7f43a50ac4fdca5df8e885c21b835997f0a1cdee65494a6847694a98652d9d8" +dependencies = [ + "asn1-rs-derive", + "asn1-rs-impl", + "displaydoc", + "nom", + "num-traits", + "rusticata-macros", + "thiserror", + "time", +] + +[[package]] +name = "asn1-rs-derive" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", + "synstructure", +] + +[[package]] +name = "asn1-rs-impl" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" + [[package]] name = "aws-lc-rs" version = "1.18.1" @@ -57,12 +117,35 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +[[package]] +name = "base64" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac07cdecf99051d9a5238b80f35af32cdeba5b336e55d957b318b50137e18da5" + [[package]] name = "bitflags" version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" +[[package]] +name = "bstr" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bb31b46c14244e20ee9984b11bf5c992b91fb6939fea616e3512c8baecdbe5f" +dependencies = [ + "memchr", + "regex-automata", + "serde_core", +] + +[[package]] +name = "bumpalo" +version = "3.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" + [[package]] name = "bytes" version = "1.11.1" @@ -87,6 +170,35 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" +[[package]] +name = "cfg_aliases" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527" + +[[package]] +name = "chacha20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65c35e4b699c7e15ccbe7ee35c005e4fc0a278d22238a2857e6ce2dadeda1b06" +dependencies = [ + "cfg-if", + "cpufeatures", + "rand_core", +] + +[[package]] +name = "chrono" +version = "0.4.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" +dependencies = [ + "iana-time-zone", + "num-traits", + "serde", + "windows-link", +] + [[package]] name = "cmake" version = "0.1.58" @@ -106,6 +218,17 @@ dependencies = [ "memchr", ] +[[package]] +name = "console" +version = "0.16.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fe5f465a4f6fee88fad41b85d990f84c835335e85b5d9e6e63e0d06d28cba7c" +dependencies = [ + "encode_unicode", + "libc", + "windows-sys 0.61.2", +] + [[package]] name = "core-foundation" version = "0.10.1" @@ -122,12 +245,85 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" +[[package]] +name = "cpufeatures" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566" +dependencies = [ + "libc", +] + +[[package]] +name = "csv" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52cd9d68cf7efc6ddfaaee42e7288d3a99d613d4b50f76ce9827ae0c6e14f938" +dependencies = [ + "csv-core", + "itoa", + "ryu", + "serde_core", +] + +[[package]] +name = "csv-core" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "704a3c26996a80471189265814dbc2c257598b96b8a7feae2d31ace646bb9782" +dependencies = [ + "memchr", +] + +[[package]] +name = "data-encoding" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4583a4551df46e2792f82ceeac45e850d2e2d5debba0b91f102385cda5b11f06" + +[[package]] +name = "der-parser" +version = "10.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07da5016415d5a3c4dd39b11ed26f915f52fc4e0dc197d87908bc916e51bc1a6" +dependencies = [ + "asn1-rs", + "displaydoc", + "nom", + "num-bigint", + "num-traits", + "rusticata-macros", +] + +[[package]] +name = "deranged" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" + +[[package]] +name = "displaydoc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.5", +] + [[package]] name = "dunce" version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" +[[package]] +name = "encode_unicode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" + [[package]] name = "env_filter" version = "0.1.4" @@ -144,12 +340,54 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + [[package]] name = "fs_extra" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" +[[package]] +name = "futures-channel" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f9e3d69d39e4862ffed03ed071a76f9a13ba1d9109d355b0f0aa6b15e393c4" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e" + +[[package]] +name = "futures-task" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd" + +[[package]] +name = "futures-util" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc" +dependencies = [ + "futures-core", + "futures-task", + "pin-project-lite", + "slab", +] + [[package]] name = "getrandom" version = "0.2.17" @@ -157,8 +395,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" dependencies = [ "cfg-if", + "js-sys", "libc", "wasi", + "wasm-bindgen", ] [[package]] @@ -168,10 +408,256 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi", + "rand_core", + "wasm-bindgen", +] + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "http" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "918d3568bebf352712bc2ef3d46a8bcf1a75b373be6539de198e9105cbbf9ce0" +dependencies = [ + "bytes", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2a8f2913ee65f60facd6a5905613afaa448497a0230cc41ce022d93290bc2c" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23169fe34a5fbcdd3f3862e78fb9b6fccd5f02a6dc6f732547005d45631ce71c" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "hyper" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b501faa50e7a26c3d3560ca625132f4078a17771f4810baf70475ae48cbe43" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "http", + "http-body", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" +dependencies = [ + "http", + "hyper", + "hyper-util", + "rustls", + "tokio", + "tokio-rustls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa68d21081c4a05d5a901a1c62add574c77048b6a1c67be3b50ce0b60d4ca513" +dependencies = [ + "displaydoc", + "potential_utf", + "utf8_iter", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d56e28588da92eee5c3201a6eff33fabdd49b62269c8938d4ff050ce4d900deb" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f9cf5f235641ed274641dd81c3f28d870e276763d0797aeeab72317b1c646f" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1563da1ed3e0b3bf3d74c9b85917ac9c56464d2f57242270c09c9e752f8021a0" + +[[package]] +name = "icu_properties" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e7ca276ad3145661a65914e6daf131ca5120cd3dcee8f8f3214b8875184a148" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e590f038c1464a96894fd6d10127e90a8be4509f56ff7ecef851b15cee0b7caa" + +[[package]] +name = "icu_provider" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d27bbb9d3abbefac45d55f647c9de1d44aafcd1186eb91879afef17c396c3e73" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" +dependencies = [ + "icu_normalizer", + "icu_properties", ] +[[package]] +name = "ipnet" +version = "2.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "791930b43c0d5973160d90a8f3894509f2b273430f5c5c73b668636d0287c5c0" + +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + [[package]] name = "jni" version = "0.22.4" @@ -199,7 +685,7 @@ dependencies = [ "quote", "rustc_version", "simd_cesu8", - "syn", + "syn 2.0.117", ] [[package]] @@ -218,7 +704,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" dependencies = [ "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -231,18 +717,47 @@ dependencies = [ "libc", ] +[[package]] +name = "js-sys" +version = "0.3.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce57d20d1ea864ce2ac172ab472d409214f4fd359f0b2a2775abdf522e2af99e" +dependencies = [ + "cfg-if", + "futures-util", + "wasm-bindgen", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + [[package]] name = "libc" version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" +[[package]] +name = "litemap" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d9d19d1d6efa0109d2f65ff4c85cddd50bd572e5a00127ab10987290bcefae" + [[package]] name = "log" version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + [[package]] name = "memchr" version = "2.8.0" @@ -250,8 +765,78 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] -name = "once_cell" -version = "1.21.4" +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "mio" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b18443e9c262bfe8fa82f51666e2642c53393f7e5c27b3e1aeab922cff5b9d8" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "num-bigint" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" + +[[package]] +name = "num-integer" +version = "0.1.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ce2d95d4b3734dc35aa2f45e1aa22cd416814592a4f9d9205e11affd5b8e10b" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "oid-registry" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f40cff3dde1b6087cc5d5f5d4d65712f34016a03ed60e9c08dcc392736b5b7" +dependencies = [ + "asn1-rs", +] + +[[package]] +name = "once_cell" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" @@ -261,12 +846,39 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pin-project-lite" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + [[package]] name = "pkg-config" version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6b464fbc74e149a392436b17d523f769e057cb6877f6a5c4618bc6f11800548" +[[package]] +name = "potential_utf" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d83eb9bc6d8e5cf568e7a1101d60ee05e81ed50ea106026f3d18deeb046d7661" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "proc-macro2" version = "1.0.106" @@ -276,6 +888,63 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "quinn" +version = "0.11.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c1a41e437b6bbd489372cd4971de128e85c855f56c57f283d20ff016cf7c0a8" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "socket2", + "thiserror", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04759210543be93709136e28212294a659ef5001836ff4eab4d663e4529bba83" +dependencies = [ + "aws-lc-rs", + "bytes", + "getrandom 0.4.3", + "lru-slab", + "rand", + "rand_pcg", + "ring", + "rustc-hash", + "rustls", + "rustls-pki-types", + "slab", + "thiserror", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35a133f956daabe89a61a685c2649f13d82d5aa4bd5d12d1277e1072a21c0694" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.61.2", +] + [[package]] name = "quote" version = "1.0.45" @@ -291,6 +960,32 @@ version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" +[[package]] +name = "rand" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" +dependencies = [ + "chacha20", + "getrandom 0.4.3", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" + +[[package]] +name = "rand_pcg" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a" +dependencies = [ + "rand_core", +] + [[package]] name = "regex" version = "1.12.3" @@ -320,6 +1015,43 @@ version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +[[package]] +name = "reqwest" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16a1cfa75cc186dd73d5818e510e042e40927bccc9c236b061cea97e1eb08029" +dependencies = [ + "base64 0.23.1", + "bytes", + "futures-core", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-util", + "js-sys", + "log", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls", + "rustls-pki-types", + "rustls-platform-verifier 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", + "serde_json", + "sync_wrapper", + "tokio", + "tokio-rustls", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "ring" version = "0.17.14" @@ -334,6 +1066,12 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "rustc-hash" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" + [[package]] name = "rustc_version" version = "0.4.1" @@ -343,6 +1081,15 @@ dependencies = [ "semver", ] +[[package]] +name = "rusticata-macros" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" +dependencies = [ + "nom", +] + [[package]] name = "rustls" version = "0.23.40" @@ -375,6 +1122,7 @@ version = "1.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9" dependencies = [ + "web-time", "zeroize", ] @@ -383,7 +1131,7 @@ name = "rustls-platform-verifier" version = "0.7.0" dependencies = [ "android_logger", - "base64", + "base64 0.22.1", "core-foundation", "core-foundation-sys", "jni", @@ -391,7 +1139,28 @@ dependencies = [ "once_cell", "rustls", "rustls-native-certs", - "rustls-platform-verifier-android", + "rustls-platform-verifier-android 0.1.1", + "rustls-webpki", + "security-framework", + "security-framework-sys", + "webpki-root-certs", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustls-platform-verifier" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d1e2536ce4f35f4846aa13bff16bd0ff40157cdb14cc056c7b14ba41233ba0" +dependencies = [ + "core-foundation", + "core-foundation-sys", + "jni", + "log", + "once_cell", + "rustls", + "rustls-native-certs", + "rustls-platform-verifier-android 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rustls-webpki", "security-framework", "security-framework-sys", @@ -402,6 +1171,18 @@ dependencies = [ [[package]] name = "rustls-platform-verifier-android" version = "0.1.1" +dependencies = [ + "rustls", + "similar-asserts", + "tokio", + "webpki-ccadb", +] + +[[package]] +name = "rustls-platform-verifier-android" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] name = "rustls-webpki" @@ -415,6 +1196,18 @@ dependencies = [ "untrusted", ] +[[package]] +name = "rustversion" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" + +[[package]] +name = "ryu" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" + [[package]] name = "same-file" version = "1.0.6" @@ -462,6 +1255,49 @@ version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" +[[package]] +name = "serde" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.5", +] + +[[package]] +name = "serde_json" +version = "1.0.151" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + [[package]] name = "shlex" version = "1.3.0" @@ -484,6 +1320,54 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" +[[package]] +name = "similar" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f66ca1f7aca2474dc10c942eb22feffc897735f54cd1db90138c2fddb490987" +dependencies = [ + "bstr", + "unicode-segmentation", +] + +[[package]] +name = "similar-asserts" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "997e6ca38e97437973fc9f7f50a50d1274cacd874341a4960fea90067291038c" +dependencies = [ + "console", + "similar", +] + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + +[[package]] +name = "smallvec" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9be42f50aa861c555654aa3a37f52f4b1074bacf4e48fe0ef7fa584e80f1f0f" + +[[package]] +name = "socket2" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + [[package]] name = "subtle" version = "2.6.1" @@ -501,6 +1385,37 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "syn" +version = "3.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12df2e0110f65b775f769bb17ef989067a1d931b2eb822bd4346631eeada89f9" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "thiserror" version = "2.0.18" @@ -518,21 +1433,206 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", +] + +[[package]] +name = "time" +version = "0.3.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb87b95ec50ddfa440816d227a17b2ccbdda963a316a727fda0fc4334f7d134" +dependencies = [ + "deranged", + "num-conv", + "powerfmt", + "serde_core", + "time-core", + "time-macros", ] +[[package]] +name = "time-core" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" + +[[package]] +name = "time-macros" +version = "0.2.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e689342a48d2ea927c87ea50cabf8594854bf940e9310208848d680d668ed85" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1e27c91459209c2986af3dcf603a5a74a4368754ce37414f59acc971167f643" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cf0ded5c4e56918d8f8a339e1bb67d038d3bc6d144ac407904015ba2e4cde9b" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed" +dependencies = [ + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78773a2a397f451582ce068015985c33193cf6dea8b74d2a639fe457b2f07b0e" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.5", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c85f2c3ef0b1cd58b36682f4b17aaa995f0e5db534d85692b4903abce21f67" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tower" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" +dependencies = [ + "bitflags", + "bytes", + "futures-util", + "http", + "http-body", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", + "url", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + [[package]] name = "unicode-ident" version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" +[[package]] +name = "unicode-segmentation" +version = "1.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" + [[package]] name = "untrusted" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" +[[package]] +name = "url" +version = "2.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "walkdir" version = "2.5.0" @@ -543,12 +1643,115 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + [[package]] name = "wasi" version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" +[[package]] +name = "wasm-bindgen" +version = "0.2.128" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aecb87a33d3b0c5e3b7aa46336eaf486cffafbd281b195e4c8b80d50df2351bf" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ef4c5d3d2cdf5c54f4231181768f5510842e350db025faf1f7163b1030ed928" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.128" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a690d511e3c1a8b3a55e33511e3c2c00c78415cd23650f32b808627f5696b9ed" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.128" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "411e4887f0071ef2d2164a9d5fdf2d20efbef78fccd3a78b0c10a1dc5295e48a" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 3.0.5", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.128" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81941cd78d0c92026c33e5e01312845a4cb1e9af3407f9134b100dd03144103e" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-sys" +version = "0.3.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fbddc4a036f00ec4f18c83445bd3115cb306a91da554919a099d9222fe4a7f8" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-ccadb" +version = "0.2.1" +source = "git+https://github.com/rustls/webpki-roots?rev=aa886731756746ce7fbd4b7fdc9fc08e811cd1b3#aa886731756746ce7fbd4b7fdc9fc08e811cd1b3" +dependencies = [ + "chrono", + "csv", + "hex", + "num-bigint", + "reqwest", + "rustls-pki-types", + "rustls-webpki", + "serde", + "serde_json", + "url", + "x509-parser", + "yasna", +] + [[package]] name = "webpki-root-certs" version = "1.0.7" @@ -567,12 +1770,65 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "windows-link" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-sys" version = "0.52.0" @@ -655,8 +1911,120 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "writeable" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ad82d2a33cdc9674dc7465672f271e096168fcdbe0f799d9e6db8c5892679dc" + +[[package]] +name = "x509-parser" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d43b0f71ce057da06bc0851b23ee24f3f86190b07203dd8f567d0b706a185202" +dependencies = [ + "asn1-rs", + "data-encoding", + "der-parser", + "lazy_static", + "nom", + "oid-registry", + "rusticata-macros", + "thiserror", + "time", +] + +[[package]] +name = "yasna" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5f6765e852b9b4dc8e2a76843e4d64d1cea8e79bcde0b6901aea8e7c7f08282" + +[[package]] +name = "yoke" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", + "synstructure", +] + +[[package]] +name = "zerofrom" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", + "synstructure", +] + [[package]] name = "zeroize" version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" + +[[package]] +name = "zerotrie" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ea269c3bd32f0a32c321907a2ae912ba6f4649bb0fc764a15627e99a7095a3f" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0464e17806c1d976d5cba29399c7f08e516e279e2ba493f63123b5fca67dd8" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34df6fc39dbd26ddc9c10e6a2984476e13acce22e64e4487636ef494369225da" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.5", +] + +[[package]] +name = "zmij" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" diff --git a/admin/MAINTENANCE.md b/admin/MAINTENANCE.md index 1ac3d71a..dd5c926c 100644 --- a/admin/MAINTENANCE.md +++ b/admin/MAINTENANCE.md @@ -18,3 +18,14 @@ Thankfully, updating these has become easy: 2. Run `go run ca.go` 3. Using your tool of choice, update the hardcoded time in `verification_time` to match the current datetime. 4. Commit your changes and push up a fix branch/PR. + +## Updated CRL host list + +In order to facilitate Android downloading CRLs over unsecured HTTP, we have a list of CRL hosts in +`/android/rustls-platform-verifier/src/main/res/xml/network_security_config.xml`. This list is populated +by the codegen test in `/android-release-support/tests/codegen.rs` in CI. + +To update: + + 1. Run `cargo test --manifest-path android-release-support/Cargo.toml --test codegen -- --ignored` + 2. Commit the changes to `network_security_config.xml` and push up a fix branch/PR. diff --git a/android-release-support/Cargo.toml b/android-release-support/Cargo.toml index 4d2bdceb..af48f157 100644 --- a/android-release-support/Cargo.toml +++ b/android-release-support/Cargo.toml @@ -16,3 +16,9 @@ include = [ ] [dependencies] + +[dev-dependencies] +rustls = { version = "0.23", default-features = false, features = ["aws-lc-rs"] } +similar-asserts = "2" +tokio = { version = "1", features = ["macros"] } +webpki-ccadb = { git = "https://github.com/rustls/webpki-roots", rev = "aa886731756746ce7fbd4b7fdc9fc08e811cd1b3" } diff --git a/android-release-support/tests/codegen.rs b/android-release-support/tests/codegen.rs new file mode 100644 index 00000000..870fefd7 --- /dev/null +++ b/android-release-support/tests/codegen.rs @@ -0,0 +1,62 @@ +use std::env; +use std::fmt::Write; +use std::fs; + +use webpki_ccadb::{crl_hosts, RootStore}; + +/// Regenerates the Android network security config listing hosts that serve CRLs. +/// +/// The generated file is checked in; this test fails with a diff whenever the +/// data returned by CCADB no longer matches it. +/// +/// Note that this reaches out to the network to query the CCADB. +#[ignore] // Ignored by default because it requires network access and is slow. +#[tokio::test] +async fn update_security_config() -> Result<(), Box> { + let mut hosts = crl_hosts(RootStore::Chrome) + .await? + .into_iter() + .collect::>(); + hosts.sort(); + + let mut out = String::from(HEADER); + for host in hosts { + writeln!( + out, + " {host}" + ) + .unwrap(); + } + out.push_str(FOOTER); + + let stored = fs::read_to_string(OUTPUT).unwrap_or_default(); + fs::write(OUTPUT, &out)?; + if stored != out { + println!("run `cargo test --manifest-path android-release-support/Cargo.toml --test codegen -- --ignored` to update the checked-in file"); + similar_asserts::assert_eq!(stored, out); + } + + Ok(()) +} + +const HEADER: &str = "\ + + + + + +"; + +const FOOTER: &str = "\ + + +"; + +const OUTPUT: &str = concat!( + env!("CARGO_MANIFEST_DIR"), + "/../android/rustls-platform-verifier/src/main/res/xml/network_security_config.xml" +); diff --git a/android/rustls-platform-verifier/src/main/res/xml/network_security_config.xml b/android/rustls-platform-verifier/src/main/res/xml/network_security_config.xml new file mode 100644 index 00000000..3113330f --- /dev/null +++ b/android/rustls-platform-verifier/src/main/res/xml/network_security_config.xml @@ -0,0 +1,382 @@ + + + + + + abitabdv.crl.certum.pl + abitabev.crl.certum.pl + abitabov.crl.certum.pl + alpiro.crl.sectigo.com + anticdv.crl.certum.pl + antrustovsslg2r30ca.crl.certum.pl + autontrustprodvtlsg2r31ca.crl.certum.pl + bitcert.crl.sectigo.com + btdvtlsr35g2ca.crl.certum.pl + c.cf-b.ssl.com + c.cf-i.ssl.com + c.pki.goog + ca1.agid.gov.it + cdn.d-trust-cloudcrl.net + cdp.disig.sk + cdp.elektronicznypodpis.pl + cdp.geotrust.com + cdp.rapidssl.com + cdp.thawte.com + cdp1.disig.sk + cdp1.pca.dfn.de + cdpa.digitalcertvalidation.com + cdpb.digitalcertvalidation.com + cdpc.digitalcertvalidation.com + cdpd.digitalcertvalidation.com + cdpe.digitalcertvalidation.com + cdpf.digitalcertvalidation.com + cdpg.digitalcertvalidation.com + cdph.digitalcertvalidation.com + cdpi.digitalcertvalidation.com + certcloud.crl.trust-provider.com + certdata.crl.sectigo.com + certera.crl.sectigo.com + certificates.godaddy.com + certum-crl.wt.trustasia.com + certum.crl.sheca.com + certumdvtlsg2e39ca.crl.certum.pl + certumdvtlsg2r39ca.crl.certum.pl + certumevtlsg2e39ca.crl.certum.pl + certumevtlsg2r39ca.crl.certum.pl + certumovtlsg2e39ca.crl.certum.pl + certumovtlsg2r39ca.crl.certum.pl + cfcadveccca.crl.certum.pl + cfcadvrsaca.crl.certum.pl + cfcaeveccca.crl.certum.pl + cfcaevrsaca.crl.certum.pl + cfcaoveccca.crl.certum.pl + cfcaovrsaca.crl.certum.pl + cnssldvtlsg2r36ca.crl.certum.pl + cnsslovtlsg2r36ca.crl.certum.pl + crl-01.r1.ica.amazontrust.com + crl-01.r1.ica.amznts.eu + crl-c.emsign.com + crl-pro.litessl.com + crl.anf.es + crl.apple.com + crl.businessid.telesec.de + crl.buypass.no + crl.catrust.oemssl.cn + crl.certigna.fr + crl.certsign.ro + crl.certum.pl + crl.cfca.com.cn + crl.cntrus.oemssl.cn + crl.cnwebtrust.oemssl.cn + crl.comodoca.com + crl.crlocsp.cn + crl.cybertrust.ne.jp + crl.d-trust.net + crl.dhimyotis.com + crl.digicert.cn + crl.digicert.eu + crl.e-szigno.hu + crl.e2m01.amazontrust.com + crl.e2m01.eu.amazontrust.com + crl.e2m02.amazontrust.com + crl.e2m03.amazontrust.com + crl.e2m04.amazontrust.com + crl.e2s14.amazontrust.com + crl.e2s15.amazontrust.com + crl.e2s16.amazontrust.com + crl.e2s17.amazontrust.com + crl.e2s18.amazontrust.com + crl.e2s19.amazontrust.com + crl.e2s20.amazontrust.com + crl.e2s21.amazontrust.com + crl.e3m01.amazontrust.com + crl.e3m01.eu.amazontrust.com + crl.e3m02.amazontrust.com + crl.e3m03.amazontrust.com + crl.e3m04.amazontrust.com + crl.e3s22.amazontrust.com + crl.e3s23.amazontrust.com + crl.e3s24.amazontrust.com + crl.e3s25.amazontrust.com + crl.e3s26.amazontrust.com + crl.e3s27.amazontrust.com + crl.e3s28.amazontrust.com + crl.e3s29.amazontrust.com + crl.emsign.com + crl.ensuredca.com + crl.firmaprofesional.com + crl.gdca.com.cn + crl.global.sheca.com + crl.globalsign.com + crl.globalsign.net + crl.godaddy.com + crl.harica.gr + crl.izenpe.com + crl.litessl.com + crl.netsolssl.com + crl.oem.trustca.net + crl.pcsp.telesec.de + crl.pki.goog + crl.quovadisglobal.com + crl.r1001.amazontrust.com + crl.r2001.amazontrust.com + crl.r2m01.amazontrust.com + crl.r2m01.eu.amazontrust.com + crl.r2m02.amazontrust.com + crl.r2m03.amazontrust.com + crl.r2m04.amazontrust.com + crl.r2s18.amazontrust.com + crl.r2s19.amazontrust.com + crl.r2s20.amazontrust.com + crl.r2s21.amazontrust.com + crl.r2s22.amazontrust.com + crl.r2s23.amazontrust.com + crl.r2s24.amazontrust.com + crl.r2s25.amazontrust.com + crl.r3001.amazontrust.com + crl.r4001.amazontrust.com + crl.r4m01.amazontrust.com + crl.r4m02.amazontrust.com + crl.r4m03.amazontrust.com + crl.r4m04.amazontrust.com + crl.root-e1.certainly.com + crl.root-r1.certainly.com + crl.rootca1.amazontrust.com + crl.rootca2.amazontrust.com + crl.rootca3.amazontrust.com + crl.rootca4.amazontrust.com + crl.rztrust.oemssl.cn + crl.sbca.telesec.de + crl.sectigo.com + crl.sectigochina.com + crl.serverid.telesec.de + crl.starfieldtech.com + crl.swisssign.ch + crl.trust-provider.cn + crl.trust-provider.com + crl.tuntrust.tn + crl.usertrust.com + crl.wt.trustasia.com + crl.xinchacha.oemssl.cn + crl.zw.oemssl.cn + crl05.actalis.it + crl06.actalis.it + crl09.actalis.it + crl1.ecert.gov.hk + crl13.actalis.it + crl14.actalis.it + crl15.actalis.it + crl2.microsoft.com + crl3.digicert.com + crl4.digicert.com + crls.certainly.com + crls.ssl.com + cyberfolks2.crl.certum.pl + depo.kamusm.gov.tr + digitaltrust.crl.sectigo.com + dnencrypt.crl.sectigo.com + dvtlsca2025-crl.e-szigno.hu + dvtlsca2026-crl.e-szigno.hu + e5.c.lencr.org + e6.c.lencr.org + e7.c.lencr.org + e8.c.lencr.org + ec2ca2017-crl1.e-szigno.hu + ec2ca2017-crl2.e-szigno.hu + ec2ca2017-crl3.e-szigno.hu + ec2sslca2017-crl1.e-szigno.hu + ec2sslca2017-crl2.e-szigno.hu + ec2sslca2017-crl3.e-szigno.hu + ec3ca2017-crl1.e-szigno.hu + ec3ca2017-crl2.e-szigno.hu + ec3ca2017-crl3.e-szigno.hu + ec3sslca2017-crl1.e-szigno.hu + ec3sslca2017-crl2.e-szigno.hu + ec3sslca2017-crl3.e-szigno.hu + eca.hinet.net + edvtlsca2023-crl.e-szigno.hu + edvtlsca2025-crl.e-szigno.hu + edvtlsca2026-crl.e-szigno.hu + emudhra.crl.sectigo.com + eosslca2017-crl1.e-szigno.hu + eosslca2017-crl2.e-szigno.hu + eosslca2017-crl3.e-szigno.hu + eovtlsca2023-crl.e-szigno.hu + eovtlsca2025-crl.e-szigno.hu + eovtlsca2026-crl.e-szigno.hu + eqca2017-crl1.e-szigno.hu + eqca2017-crl2.e-szigno.hu + eqca2017-crl3.e-szigno.hu + eqcpca2017-crl1.e-szigno.hu + eqcpca2017-crl2.e-szigno.hu + eqcpca2017-crl3.e-szigno.hu + eqoca2017-crl1.e-szigno.hu + eqoca2017-crl2.e-szigno.hu + eqoca2017-crl3.e-szigno.hu + eqtlsca2018-crl1.e-szigno.hu + eqtlsca2018-crl2.e-szigno.hu + eqtlsca2018-crl3.e-szigno.hu + eqtlsca2023-crl.e-szigno.hu + eqtlsca2025-crl.e-szigno.hu + eqtlsca2026-crl.e-szigno.hu + esafer.crl.sectigo.com + eue2m1.crl.root.amznts.eu + eue3m1.crl.root.amznts.eu + eur2m1.crl.root.amznts.eu + eveccca.crl.certum.pl + evrsaca.crl.certum.pl + gdcadv.crl.certum.pl + gdcaev.crl.certum.pl + gdcaov.crl.certum.pl + geant.crl.sectigo.com + genious.crl.sectigo.com + geossldvtlsr34g2ca.crl.certum.pl + geosslevtlsr34g2ca.crl.certum.pl + geosslovtlsr34g2ca.crl.certum.pl + globaltrust.crl.sectigo.com + globessl.crl.sectigo.com + gogetssldv.crl.certum.pl + gogetsslev.crl.certum.pl + gogetsslov.crl.certum.pl + homepldvtlsg2r35ca.crl.certum.pl + homepldvtlsg2r36ca.crl.certum.pl + homeplovtlsg2r35ca.crl.certum.pl + homeplovtlsg2r36ca.crl.certum.pl + httpcrl.trust.telia.com + ica.navercloudtrust.com + ica.navercorp.com + issauth.crl.sectigo.com + itrusdv2.crl.certum.pl + itrusdvtlsr35g2ca.crl.certum.pl + itrusov2.crl.certum.pl + itrusovtlsr35g2ca.crl.certum.pl + itso.crl.sectigo.com + joyssldvtlsg2r33ca.crl.certum.pl + joysslovtlsg2r33ca.crl.certum.pl + kingnettechdv.crl.certum.pl + kingnettechev.crl.certum.pl + kingnettechov.crl.certum.pl + kr.crl.digicert.com + lh2.crl.certum.pl + namecheap.crl.sectigo.com + nazwassldvtlsg2e29ca.crl.certum.pl + nazwassldvtlsg2r29ca.crl.certum.pl + netartcadv2.crl.certum.pl + netartssldvtlsg2e31ca.crl.certum.pl + nijimo.crl.sectigo.com + nyalabscadv.crl.certum.pl + nyatworkdv.crl.certum.pl + omitsecurity.crl.sectigo.com + onesign.crl.sectigo.com + osslca2016-crl1.e-szigno.hu + osslca2016-crl2.e-szigno.hu + osslca2016-crl3.e-szigno.hu + ovtlsca2025-crl.e-szigno.hu + ovtlsca2026-crl.e-szigno.hu + pki-crl.atos.net + pki.telesec.de + pkipro.certsign.ro + positiwise.crl.sectigo.com + psw.crl.sectigo.com + public.wisekey.com + qiduodv.crl.certum.pl + qtlsca2018-crl1.e-szigno.hu + qtlsca2018-crl2.e-szigno.hu + qtlsca2018-crl3.e-szigno.hu + qtlsca2026-crl.e-szigno.hu + r10.c.lencr.org + r11.c.lencr.org + r12.c.lencr.org + r13.c.lencr.org + rca.navercloudtrust.com + rca.navercorp.com + repo.pubcert.jprs.jp + repo1.secomtrust.net + repository.secomtrust.net + repository.tls.hinet.net + rootca.twca.com.tw + rootglobaldv.crl.certum.pl + rootnetworksdv2.crl.certum.pl + shenzhendv.crl.certum.pl + shenzhenev.crl.certum.pl + shenzhenov.crl.certum.pl + shoperdvtlsg2r34ca.crl.certum.pl + shuididv.crl.certum.pl + shuidiev.crl.certum.pl + shuidiov.crl.certum.pl + soomadv.crl.certum.pl + ssl2ca2016-crl1.e-szigno.hu + ssl2ca2016-crl2.e-szigno.hu + ssl2ca2016-crl3.e-szigno.hu + sslca2014-crl1.e-szigno.hu + sslca2014-crl2.e-szigno.hu + sslca2014-crl3.e-szigno.hu + sslcom.crl.certum.pl + ssllimiteddv.crl.certum.pl + sslserver.twca.com.tw + subca.crl.certum.pl + titrust.crl.sectigo.com + tlcdvtlsr34g2ca.crl.certum.pl + tlcevtlsr34g2ca.crl.certum.pl + tlcovtlsr34g2ca.crl.certum.pl + tlsrootca2025-crl.e-szigno.hu + trustasia.crl.certum.pl + trustasiadv.crl.certum.pl + trustasiadvtlsr35g2ca.crl.certum.pl + trustasiaev.crl.certum.pl + trustasiaevtlse35g2ca.crl.certum.pl + trustasiaevtlsr35g2ca.crl.certum.pl + trustasiaov.crl.certum.pl + trustasiaovtlse35g2ca.crl.certum.pl + trustasiaovtlsr35g2ca.crl.certum.pl + trustocean.crl.certum.pl + tstlser20.crl.telesec.de + tstlsrr23.crl.telesec.de + unitedtrustov.crl.certum.pl + validation.identrust.com + verokey.crl.sectigo.com + webnic.crl.sectigo.com + whitessldvtlsg2e36ca.crl.certum.pl + wosign.crl.certum.pl + wotrus-dvca.crl.certum.pl + wotrus-evca.crl.certum.pl + wotrus-ovca.crl.certum.pl + wotrus.crl.sectigo.com + wtca-cafiles.itrus.com.cn + wtca-crl.itrus.com.cn + www.accv.es + www.cert.fnmt.es + www.d-trust.net + www.microsoft.com + x1.c.lencr.org + x2.c.lencr.org + xcctrustdvtlsg3r31ca.crl.certum.pl + xcctrustevtlsg3r31ca.crl.certum.pl + xcctrustovtlsg3r31ca.crl.certum.pl + xinchacha2dv.crl.certum.pl + xinchacha2ov.crl.certum.pl + xinchachatrustdvtlsg2r34ca.crl.certum.pl + xinchachatrustevtlsg2r34ca.crl.certum.pl + xinchachatrustovtlsg2r34ca.crl.certum.pl + xinnetdvtlsr34g2ca.crl.certum.pl + xinnetevtlsr34g2ca.crl.certum.pl + xinnetovtlsr34g2ca.crl.certum.pl + ye.c.lencr.org + ye1.c.lencr.org + ye2.c.lencr.org + yektadv.crl.certum.pl + yektaov.crl.certum.pl + yr.c.lencr.org + yr1.c.lencr.org + yr2.c.lencr.org + zerossl.crl.sectigo.com + ziwit.crl.sectigo.com + zycatrustdvtlsg3r31ca.crl.certum.pl + zycatrustevtlsg3r31ca.crl.certum.pl + zycatrustovtlsg3r31ca.crl.certum.pl + +