{"id":13648496,"url":"https://github.com/rustls/pemfile","last_synced_at":"2025-06-10T12:10:48.054Z","repository":{"id":44600886,"uuid":"324754415","full_name":"rustls/pemfile","owner":"rustls","description":"Basic parser for PEM formatted keys and certificates","archived":false,"fork":false,"pushed_at":"2024-12-06T19:13:51.000Z","size":214,"stargazers_count":60,"open_issues_count":0,"forks_count":19,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-06-08T00:08:38.064Z","etag":null,"topics":["rust","rustls-pemfile"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rustls.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2020-12-27T12:14:06.000Z","updated_at":"2025-05-17T04:16:34.000Z","dependencies_parsed_at":"2023-02-08T18:46:14.920Z","dependency_job_id":"4daec941-6c82-48e5-b425-f1bc48c77baf","html_url":"https://github.com/rustls/pemfile","commit_stats":{"total_commits":73,"total_committers":12,"mean_commits":6.083333333333333,"dds":0.7397260273972603,"last_synced_commit":"0f37efe74407143d72ba21428cc2ca4e36257850"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustls%2Fpemfile","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustls%2Fpemfile/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustls%2Fpemfile/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustls%2Fpemfile/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rustls","download_url":"https://codeload.github.com/rustls/pemfile/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustls%2Fpemfile/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259072991,"owners_count":22801090,"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":["rust","rustls-pemfile"],"created_at":"2024-08-02T01:04:18.409Z","updated_at":"2025-06-10T12:10:48.032Z","avatar_url":"https://github.com/rustls.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# rustls-pemfile\nThis is a basic parser for PEM-encodings commonly used for storing keys and certificates at rest.\n\nIt doesn't support reading encrypted keys: the cryptography standardised for this is typically very\npoor and doing so doesn't address a meaningful threat model.\n\n[![Build Status](https://github.com/rustls/pemfile/workflows/rustls-pemfile/badge.svg)](https://github.com/rustls/pemfile/actions)\n[![Crate](https://img.shields.io/crates/v/rustls-pemfile.svg)](https://crates.io/crates/rustls-pemfile)\n[![Documentation](https://docs.rs/rustls-pemfile/badge.svg)](https://docs.rs/rustls-pemfile/)\n\n# See also: rustls-pki-types\n\nThe main function of this crate has been incorporated into\n[rustls-pki-types](https://crates.io/crates/rustls-pki-types). 2.2.0 maintains the\nexisting public API for this crate, on top of this new implementation. This drops\nthe dependency on the `base64` crate, and allows for constant-time decoding of private keys.\n\nThis crate will continue to exist in its current form, but it is somewhat unlikely that the\nAPI will be extended from its current state.\n\nShould you wish to migrate to using the new [`rustls-pki-types` PEM APIs](https://docs.rs/rustls-pki-types/latest/rustls_pki_types/pem/trait.PemObject.html)\ndirectly, here is a rough cheat-sheet:\n\n| *Use case* | *Replace* |\n|---|---|\n| File stream to `CertificateDer` iterator |`rustls_pemfile::certs(io::BufRead)` \u003cbr\u003e  ➡️ \u003cbr\u003e `CertificateDer::pem_reader_iter(io::Read)` |\n| File stream to one `PrivateKeyDer` | `rustls_pemfile::private_key(io::BufRead)` \u003cbr\u003e ➡️  \u003cbr\u003e `PrivateKeyDer::from_pem_reader(io::Read)` |\n| File stream to one `CertificateSigningRequestDer` | `rustls_pemfile::csr(io::BufRead)` \u003cbr\u003e ➡️  \u003cbr\u003e `CertificateSigningRequestDer::from_pem_reader(io::Read)` |\n| File stream to `CertificateRevocationListDer` iterator |`rustls_pemfile::crls(io::BufRead)` \u003cbr\u003e  ➡️ \u003cbr\u003e `CertificateRevocationListDer::pem_reader_iter(io::Read)` |\n| File stream to `PrivatePkcs1KeyDer` iterator |`rustls_pemfile::rsa_private_keys(io::BufRead)` \u003cbr\u003e  ➡️ \u003cbr\u003e `PrivatePkcs1KeyDer::pem_reader_iter(io::Read)` |\n| File stream to `PrivatePkcs8KeyDer` iterator |`rustls_pemfile::pkcs8_private_keys(io::BufRead)` \u003cbr\u003e  ➡️ \u003cbr\u003e `PrivatePkcs8KeyDer::pem_reader_iter(io::Read)` |\n| File stream to `PrivateSec1KeyDer` iterator |`rustls_pemfile::ec_private_keys(io::BufRead)` \u003cbr\u003e  ➡️ \u003cbr\u003e `PrivateSec1KeyDer::pem_reader_iter(io::Read)` |\n| File stream to `SubjectPublicKeyInfoDer` iterator |`rustls_pemfile::public_keys(io::BufRead)` \u003cbr\u003e  ➡️ \u003cbr\u003e `SubjectPublicKeyInfoDer::pem_reader_iter(io::Read)` |\n\n# Changelog\n\nThe detailed list of changes in each release can be found at\nhttps://github.com/rustls/pemfile/releases.\n\n# License\nrustls-pemfile is distributed under the following three licenses:\n\n- Apache License version 2.0.\n- MIT license.\n- ISC license.\n\nThese are included as LICENSE-APACHE, LICENSE-MIT and LICENSE-ISC\nrespectively.  You may use this software under the terms of any\nof these licenses, at your option.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frustls%2Fpemfile","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frustls%2Fpemfile","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frustls%2Fpemfile/lists"}