René's URL Explorer Experiment


Title: Support custom `rustls` providers by joshuamegnauth54 · Pull Request #7657 · RustPython/RustPython · GitHub

Open Graph Title: Support custom `rustls` providers by joshuamegnauth54 · Pull Request #7657 · RustPython/RustPython

X Title: Support custom `rustls` providers by joshuamegnauth54 · Pull Request #7657 · RustPython/RustPython

Description: rustls's architecture is very clean and trait-driven. There are many providers for rustls including the built-in aws-lc-rs and ring as well as backends for boringssl, graviola, openssl, mbedtls, etc. The new feature, ssl-rustls-no-provider, enables custom rustls providers. By default, aws-lc-rs is enabled which matches the old behavior and keeps backward compatibility. I wrote a new type that abstracts what we need from crypto providers. CryptoExt encapsulates the ticketer as well as cipher suites and KX groups. I wrote fallbacks to help select a reasonable default if a provider is missing features (they all seem to support the same things though). I also wrote an example to show how to actually use custom providers. Closes: #7059 aws-lc-rs is still the default, so this patch should be transparent to all users. I tested with: cargo build target/debug/rustpython Lib/test/test_ssl.py And: (todo, test with example!) Summary by CodeRabbit New Features Pluggable SSL/TLS crypto providers so users can choose custom cryptographic backends. New feature option to run Rustls without a bundled provider. Added an example showing how to select and run with different TLS providers. Chores Updated feature defaults to favor the aws-lc-backed Rustls option. Adjusted build/test workflows and feature wiring to support the new provider options.

Open Graph Description: rustls's architecture is very clean and trait-driven. There are many providers for rustls including the built-in aws-lc-rs and ring as well as backends for boringssl, graviola, openssl, mbedtls...

X Description: rustls's architecture is very clean and trait-driven. There are many providers for rustls including the built-in aws-lc-rs and ring as well as backends for boringssl, graviola, openssl, mbe...

Opengraph URL: https://github.com/RustPython/RustPython/pull/7657

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:2e683fff-1285-0d8e-39d5-26c45b9a88db
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-id952C:3E383E:406107:540A53:6A5FF1A7
html-safe-nonce72160785f050c5e2356c7a54df5574ea929805d778a6358f48b1bfd48a4af260
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5NTJDOjNFMzgzRTo0MDYxMDc6NTQwQTUzOjZBNUZGMUE3IiwidmlzaXRvcl9pZCI6IjE2Mjk5MTEzMDU3NDU4NTQ4ODgiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==
visitor-hmac04c419fb0ba63ea72fba8d2bbf45db0e35c151a0bc294d3b14cd4551e7da9975
hovercard-subject-tagpull_request:3570312706
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/RustPython/RustPython/pull/7657/files
twitter:imagehttps://avatars.githubusercontent.com/u/48846352?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/48846352?s=400&v=4
og:image:altrustls's architecture is very clean and trait-driven. There are many providers for rustls including the built-in aws-lc-rs and ring as well as backends for boringssl, graviola, openssl, mbedtls...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
Noneec26f1a08b78b3d576999ee8b45a2abc017c95dbee903a8019940cd2e9bf7b3d
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/RustPython/RustPython git https://github.com/RustPython/RustPython.git
octolytics-dimension-user_id39710557
octolytics-dimension-user_loginRustPython
octolytics-dimension-repository_id135201145
octolytics-dimension-repository_nwoRustPython/RustPython
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id135201145
octolytics-dimension-repository_network_root_nwoRustPython/RustPython
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release0a29f0b91ade2368fc0b74327c0f64ec1f98f5ff
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/RustPython/RustPython/pull/7657/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FRustPython%2FRustPython%2Fpull%2F7657%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
Code QualityEnforce quality at mergehttps://github.com/features/code-quality
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/open-source/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/open-source/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FRustPython%2FRustPython%2Fpull%2F7657%2Ffiles
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=RustPython%2FRustPython
Reloadhttps://github.com/RustPython/RustPython/pull/7657/files
Reloadhttps://github.com/RustPython/RustPython/pull/7657/files
Reloadhttps://github.com/RustPython/RustPython/pull/7657/files
Please reload this pagehttps://github.com/RustPython/RustPython/pull/7657/files
RustPython https://github.com/RustPython
RustPythonhttps://github.com/RustPython/RustPython
Notifications https://github.com/login?return_to=%2FRustPython%2FRustPython
Fork 1.5k https://github.com/login?return_to=%2FRustPython%2FRustPython
Star 22.2k https://github.com/login?return_to=%2FRustPython%2FRustPython
Code https://github.com/RustPython/RustPython
Issues 294 https://github.com/RustPython/RustPython/issues
Pull requests 105 https://github.com/RustPython/RustPython/pulls
Discussions https://github.com/RustPython/RustPython/discussions
Actions https://github.com/RustPython/RustPython/actions
Projects https://github.com/RustPython/RustPython/projects
Models https://github.com/RustPython/RustPython/models
Wiki https://github.com/RustPython/RustPython/wiki
Security and quality 0 https://github.com/RustPython/RustPython/security
Insights https://github.com/RustPython/RustPython/pulse
Code https://github.com/RustPython/RustPython
Issues https://github.com/RustPython/RustPython/issues
Pull requests https://github.com/RustPython/RustPython/pulls
Discussions https://github.com/RustPython/RustPython/discussions
Actions https://github.com/RustPython/RustPython/actions
Projects https://github.com/RustPython/RustPython/projects
Models https://github.com/RustPython/RustPython/models
Wiki https://github.com/RustPython/RustPython/wiki
Security and quality https://github.com/RustPython/RustPython/security
Insights https://github.com/RustPython/RustPython/pulse
Sign up for GitHub https://github.com/signup?return_to=%2FRustPython%2FRustPython%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2FRustPython%2FRustPython%2Fissues%2Fnew%2Fchoose
youknowonehttps://github.com/youknowone
RustPython:mainhttps://github.com/RustPython/RustPython/tree/main
joshuamegnauth54:modularize-rustls-supporthttps://github.com/joshuamegnauth54/RustPython/tree/modularize-rustls-support
Conversation 34 https://github.com/RustPython/RustPython/pull/7657
Commits 6 https://github.com/RustPython/RustPython/pull/7657/commits
Checks 29 https://github.com/RustPython/RustPython/pull/7657/checks
Files changed https://github.com/RustPython/RustPython/pull/7657/files
Please reload this pagehttps://github.com/RustPython/RustPython/pull/7657/files
Support custom rustls providers https://github.com/RustPython/RustPython/pull/7657/files#top
Show all changes 6 commits https://github.com/RustPython/RustPython/pull/7657/files
70cb403 Modularize rustls as work towards providers joshuamegnauth54 Apr 23, 2026 https://github.com/RustPython/RustPython/pull/7657/commits/70cb403f38999317af6cc5948f5b7c62d0a5b6fd
7ff4580 Clean up rustls features joshuamegnauth54 May 8, 2026 https://github.com/RustPython/RustPython/pull/7657/commits/7ff45803e239e617f98f526639ac29a2b4563597
1befcee Support custom rustls crypto providers joshuamegnauth54 May 10, 2026 https://github.com/RustPython/RustPython/pull/7657/commits/1befcee8cb1ca88d1e6d1c7728011c7aa023171f
d5e5782 Fix duplicate VERIFY_X509 constants and unused imports in ssl module youknowone May 26, 2026 https://github.com/RustPython/RustPython/pull/7657/commits/d5e57822773b843b94db105695e31bf0d0e25155
5243c4b no-provider as default youknowone May 26, 2026 https://github.com/RustPython/RustPython/pull/7657/commits/5243c4ba9f97050a8288b30025bd567e4fe788b4
04c4d49 Fix CI failures: openssl build, wasm target, cargo-shear youknowone May 26, 2026 https://github.com/RustPython/RustPython/pull/7657/commits/04c4d495a385054d538b2a166d09ea5b5350d588
Clear filters https://github.com/RustPython/RustPython/pull/7657/files
Please reload this pagehttps://github.com/RustPython/RustPython/pull/7657/files
Please reload this pagehttps://github.com/RustPython/RustPython/pull/7657/files
ci.yaml https://github.com/RustPython/RustPython/pull/7657/files#diff-944291df2c9c06359d37cc8833d182d705c9e8c3108e7cfe132d61a06e9133dd
cron-ci.yaml https://github.com/RustPython/RustPython/pull/7657/files#diff-8ad4ed54354d714217e310ca88335df2a6dd466c7a8f1a1fe1d13d3f033849b9
release.yml https://github.com/RustPython/RustPython/pull/7657/files#diff-87db21a973eed4fef5f32b267aa60fcee5cbdf03c67fafdc2a9b553bb0b15f34
update-caches.yml https://github.com/RustPython/RustPython/pull/7657/files#diff-26689d6c2ddf3be04502158d404e88ee3a22e9b002d769785663ba1e7f2646ce
Cargo.lock https://github.com/RustPython/RustPython/pull/7657/files#diff-13ee4b2252c9e516a0547f2891aa2105c3ca71c6d7a1e682c69be97998dfc87e
Cargo.toml https://github.com/RustPython/RustPython/pull/7657/files#diff-2e9d962a08321605940b5a657135052fbcef87b5e360662bb527c96d9a615542
README.md https://github.com/RustPython/RustPython/pull/7657/files#diff-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5
Cargo.toml https://github.com/RustPython/RustPython/pull/7657/files#diff-206ca536c8a0e972ae8dd6a3c7f1b87f2cf39bc248bc1ea0735ef140ab4b290c
lib.rs https://github.com/RustPython/RustPython/pull/7657/files#diff-6fa56f9fbde7b1990897c70681fff48d9644f6343b011083698dbdf4279f1916
openssl.rs https://github.com/RustPython/RustPython/pull/7657/files#diff-f66827d3199bc9476282bcbb77615622c5ef8eca6515c5671b29d39577333390
ssl.rs https://github.com/RustPython/RustPython/pull/7657/files#diff-454ec133e37f245b8eb2dfcd83daf62e341eb3ab03b353d30297ae029e73213b
cert.rs https://github.com/RustPython/RustPython/pull/7657/files#diff-abc8fe978cbea5cc2805b8d5d2fc2f07b2a4975261400f4c47b94470a0c33244
compat.rs https://github.com/RustPython/RustPython/pull/7657/files#diff-2e4dbb35c6460c23af1a8d48d17e0f8ddf604328016b018c184da5b1fdcd2cc2
providers.rs https://github.com/RustPython/RustPython/pull/7657/files#diff-b0102b3a42d1020531e46f25b06183986ba8922c53a27e21953dc9c9ad396a0b
custom_tls_providers.rs https://github.com/RustPython/RustPython/pull/7657/files#diff-f155c3189d66c3cb84a7851c0d9c879967789d5321667f43013e0d5f0229d810
interpreter.rs https://github.com/RustPython/RustPython/pull/7657/files#diff-60405aaba3dc351a041fce3e90f17b63dee9a214bc9c35ae6a5126d003100e55
lib.rs https://github.com/RustPython/RustPython/pull/7657/files#diff-b1a35a68f14e696205874893c07fd24fdb88882b47c23cc0e0c80a30c7d53759
.github/workflows/ci.yamlhttps://github.com/RustPython/RustPython/pull/7657/files#diff-944291df2c9c06359d37cc8833d182d705c9e8c3108e7cfe132d61a06e9133dd
View file https://github.com/joshuamegnauth54/RustPython/blob/04c4d495a385054d538b2a166d09ea5b5350d588/.github/workflows/ci.yaml
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/RustPython/RustPython/pull/7657/{{ revealButtonHref }}
https://github.com/RustPython/RustPython/pull/7657/files#diff-944291df2c9c06359d37cc8833d182d705c9e8c3108e7cfe132d61a06e9133dd
https://github.com/RustPython/RustPython/pull/7657/files#diff-944291df2c9c06359d37cc8833d182d705c9e8c3108e7cfe132d61a06e9133dd
https://github.com/RustPython/RustPython/pull/7657/files#diff-944291df2c9c06359d37cc8833d182d705c9e8c3108e7cfe132d61a06e9133dd
https://github.com/RustPython/RustPython/pull/7657/files#diff-944291df2c9c06359d37cc8833d182d705c9e8c3108e7cfe132d61a06e9133dd
https://github.com/RustPython/RustPython/pull/7657/files#diff-944291df2c9c06359d37cc8833d182d705c9e8c3108e7cfe132d61a06e9133dd
https://github.com/RustPython/RustPython/pull/7657/files#diff-944291df2c9c06359d37cc8833d182d705c9e8c3108e7cfe132d61a06e9133dd
.github/workflows/cron-ci.yamlhttps://github.com/RustPython/RustPython/pull/7657/files#diff-8ad4ed54354d714217e310ca88335df2a6dd466c7a8f1a1fe1d13d3f033849b9
View file https://github.com/joshuamegnauth54/RustPython/blob/04c4d495a385054d538b2a166d09ea5b5350d588/.github/workflows/cron-ci.yaml
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/RustPython/RustPython/pull/7657/{{ revealButtonHref }}
https://github.com/RustPython/RustPython/pull/7657/files#diff-8ad4ed54354d714217e310ca88335df2a6dd466c7a8f1a1fe1d13d3f033849b9
https://github.com/RustPython/RustPython/pull/7657/files#diff-8ad4ed54354d714217e310ca88335df2a6dd466c7a8f1a1fe1d13d3f033849b9
https://github.com/RustPython/RustPython/pull/7657/files#diff-8ad4ed54354d714217e310ca88335df2a6dd466c7a8f1a1fe1d13d3f033849b9
.github/workflows/release.ymlhttps://github.com/RustPython/RustPython/pull/7657/files#diff-87db21a973eed4fef5f32b267aa60fcee5cbdf03c67fafdc2a9b553bb0b15f34
View file https://github.com/joshuamegnauth54/RustPython/blob/04c4d495a385054d538b2a166d09ea5b5350d588/.github/workflows/release.yml
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/RustPython/RustPython/pull/7657/{{ revealButtonHref }}
https://github.com/RustPython/RustPython/pull/7657/files#diff-87db21a973eed4fef5f32b267aa60fcee5cbdf03c67fafdc2a9b553bb0b15f34
https://github.com/RustPython/RustPython/pull/7657/files#diff-87db21a973eed4fef5f32b267aa60fcee5cbdf03c67fafdc2a9b553bb0b15f34
.github/workflows/update-caches.ymlhttps://github.com/RustPython/RustPython/pull/7657/files#diff-26689d6c2ddf3be04502158d404e88ee3a22e9b002d769785663ba1e7f2646ce
View file https://github.com/joshuamegnauth54/RustPython/blob/04c4d495a385054d538b2a166d09ea5b5350d588/.github/workflows/update-caches.yml
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/RustPython/RustPython/pull/7657/{{ revealButtonHref }}
https://github.com/RustPython/RustPython/pull/7657/files#diff-26689d6c2ddf3be04502158d404e88ee3a22e9b002d769785663ba1e7f2646ce
https://github.com/RustPython/RustPython/pull/7657/files#diff-26689d6c2ddf3be04502158d404e88ee3a22e9b002d769785663ba1e7f2646ce
Cargo.lockhttps://github.com/RustPython/RustPython/pull/7657/files#diff-13ee4b2252c9e516a0547f2891aa2105c3ca71c6d7a1e682c69be97998dfc87e
View file https://github.com/joshuamegnauth54/RustPython/blob/04c4d495a385054d538b2a166d09ea5b5350d588/Cargo.lock
Open in desktop https://desktop.github.com
how customized files appear on GitHubhttps://docs.github.com/github/administering-a-repository/customizing-how-changed-files-appear-on-github
Please reload this pagehttps://github.com/RustPython/RustPython/pull/7657/files
Please reload this pagehttps://github.com/RustPython/RustPython/pull/7657/files
Please reload this pagehttps://github.com/RustPython/RustPython/pull/7657/files
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.