{"id":15294580,"url":"https://github.com/djc/pyrtls","last_synced_at":"2025-04-04T23:07:20.026Z","repository":{"id":66334152,"uuid":"364043133","full_name":"djc/pyrtls","owner":"djc","description":"rustls-based modern TLS for Python","archived":false,"fork":false,"pushed_at":"2025-03-24T17:28:31.000Z","size":104,"stargazers_count":91,"open_issues_count":5,"forks_count":3,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-03-28T22:13:00.021Z","etag":null,"topics":["python","rust","tls"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/djc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["djc"],"patreon":"dochtman"}},"created_at":"2021-05-03T19:47:12.000Z","updated_at":"2025-03-10T16:12:46.000Z","dependencies_parsed_at":"2024-07-12T08:46:43.112Z","dependency_job_id":"55f37084-0890-4010-8a03-bb2c7f64dced","html_url":"https://github.com/djc/pyrtls","commit_stats":{"total_commits":98,"total_committers":3,"mean_commits":"32.666666666666664","dds":"0.12244897959183676","last_synced_commit":"f0ea18dc4f33de84fca189c0335203af1d2759c9"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/djc%2Fpyrtls","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/djc%2Fpyrtls/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/djc%2Fpyrtls/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/djc%2Fpyrtls/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/djc","download_url":"https://codeload.github.com/djc/pyrtls/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247261600,"owners_count":20910108,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["python","rust","tls"],"created_at":"2024-09-30T17:01:46.150Z","updated_at":"2025-04-04T23:07:20.006Z","avatar_url":"https://github.com/djc.png","language":"Rust","readme":"# pyrtls: rustls-based modern TLS for Python\n\n[![Latest version](https://img.shields.io/pypi/v/pyrtls.svg)](https://pypi.org/project/pyrtls)\n[![Documentation](https://readthedocs.org/projects/pyrtls/badge/?version=latest)](https://pyrtls.readthedocs.io)\n[![CI](https://github.com/djc/pyrtls/workflows/CI/badge.svg?branch=main)](https://github.com/djc/pyrtls/actions?query=workflow%3ACI+branch%3Amain)\n\npyrtls provides bindings to [rustls][rustls], a modern Rust-based TLS implementation with an API that is\nintended to be easy to use to replace the `ssl` module (but not entirely compatible with it).\n\nIn addition to being memory-safe, the library is designed to be more secure by default. As such,\nit does not implement older protocol versions, cipher suites with known security problems, and\nsome problematic features of the TLS protocol. For more details, review the [rustls manual][manual].\n\n\u003e [!WARNING]\n\u003e This project is just getting started. While rustls is mature, the Python bindings\n\u003e are pretty new and not yet feature-complete. Please consider helping out (see below).\n\n[rustls]: https://github.com/rustls/rustls\n[manual]: https://docs.rs/rustls/latest/rustls/manual/index.html\n\n## Why?\n\nTo bring the security and performance of rustls to the Python world.\n\nSo far this is a side project. Please consider helping out:\n\n* Please help fund this work on [GitHub Sponsors](https://github.com/sponsors/djc)\n* Pull requests welcome, of course!\n* Feedback through [issues] is highly appreciated\n* If you're interested in commercial support, please contact me\n\n[issues]: https://github.com/djc/pyrtls/issues\n\n## Features\n\n- Support for TLS 1.2 and 1.3\n- Support for commonly used secure cipher suites\n- Support for ALPN protocol negotiation\n- Support for Server Name Indication (SNI)\n- Support for session resumption\n- Clients use the OS certificate trust store by default\n- Exposes socket wrapper as well as [sans I/O][sans-io] APIs\n- In basic tests, performance is comparable to the `ssl` module\n\n[sans-io]: https://sans-io.readthedocs.io/\n\nNot implemented\n---------------\n\n- TLS 1.1 and older versions of the protocol\n- Older cipher suites with security problems\n- Using CA certificates directly to authenticate a server/client (often called self-signed\n  certificates). The built-in certificate verifier does not support using a trust anchor\n  as both a CA certificate and an end-entity certificate, in order to limit complexity and\n  risk in path building.\n","funding_links":["https://github.com/sponsors/djc","https://patreon.com/dochtman"],"categories":["Web \u0026 Networking","Rust"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdjc%2Fpyrtls","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdjc%2Fpyrtls","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdjc%2Fpyrtls/lists"}