{"id":28562665,"url":"https://github.com/rustls/pki-types","last_synced_at":"2026-01-17T14:56:01.050Z","repository":{"id":186392356,"uuid":"675102169","full_name":"rustls/pki-types","owner":"rustls","description":null,"archived":false,"fork":false,"pushed_at":"2026-01-16T16:36:37.000Z","size":152,"stargazers_count":32,"open_issues_count":6,"forks_count":46,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-01-16T23:57:02.015Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","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-APACHE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-08-05T19:31:11.000Z","updated_at":"2026-01-16T15:31:06.000Z","dependencies_parsed_at":"2024-04-07T16:27:25.541Z","dependency_job_id":"3124f9af-0aeb-4c99-8427-78d96082a542","html_url":"https://github.com/rustls/pki-types","commit_stats":{"total_commits":87,"total_committers":14,"mean_commits":6.214285714285714,"dds":0.7126436781609196,"last_synced_commit":"05ca122c1a567a118301d630f16e1797a068b23d"},"previous_names":["rustls/pki-types"],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/rustls/pki-types","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustls%2Fpki-types","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustls%2Fpki-types/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustls%2Fpki-types/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustls%2Fpki-types/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rustls","download_url":"https://codeload.github.com/rustls/pki-types/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustls%2Fpki-types/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28510926,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T13:38:16.342Z","status":"ssl_error","status_checked_at":"2026-01-17T13:37:44.060Z","response_time":85,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2025-06-10T12:10:50.514Z","updated_at":"2026-01-17T14:56:01.022Z","avatar_url":"https://github.com/rustls.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# rustls-pki-types\n\n[![Build Status](https://github.com/rustls/pki-types/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/rustls/pki-types/actions/workflows/ci.yml?query=branch%3Amain)\n[![Documentation](https://docs.rs/rustls-pki-types/badge.svg)](https://docs.rs/rustls-pki-types/)\n[![Chat](https://img.shields.io/discord/976380008299917365?logo=discord)](https://discord.gg/MCSB76RU96)\n\nThis crate provides types for representing X.509 certificates, keys and other types as commonly\nused in the rustls ecosystem. It is intended to be used by crates that need to work with such X.509\ntypes, such as [rustls](https://crates.io/crates/rustls),\n[rustls-webpki](https://crates.io/crates/rustls-webpki),\nand others.\n\nSome of these crates used to define their own trivial wrappers around DER-encoded bytes.\nHowever, in order to avoid inconvenient dependency edges, these were all disconnected. By\nusing a common low-level crate of types with long-term stable API, we hope to avoid the\ndownsides of unnecessary dependency edges while providing interoperability between crates.\n\n## Features\n\n- Interoperability between different crates in the rustls ecosystem\n- Long-term stable API\n- No dependencies\n- Support for `no_std` contexts, with optional support for `alloc`\n\n## DER and PEM\n\nMany of the types defined in this crate represent DER-encoded data. DER is a binary encoding of\nthe ASN.1 format commonly used in web PKI specifications. It is a binary encoding, so it is\nrelatively compact when stored in memory. However, as a binary format, it is not very easy to\nwork with for humans and in contexts where binary data is inconvenient. For this reason,\nmany tools and protocols use a ASCII-based encoding of DER, called PEM. In addition to the\nbase64-encoded DER, PEM objects are delimited by header and footer lines which indicate the type\nof object contained in the PEM blob.\n\nThis crate's types can be created from both DER and PEM encodings.\n\n## Creating new certificates and keys\n\nThis crate does not provide any functionality for creating new certificates or keys. However,\nthe [rcgen](https://docs.rs/rcgen) crate can be used to create new certificates and keys.\n\n## Cloning private keys\n\nThis crate intentionally **does not** implement `Clone` on private key types in\norder to minimize the exposure of private key data in memory.\n\nIf you want to extend the lifetime of a `PrivateKeyDer\u003c'_\u003e`, consider [`PrivateKeyDer::clone_key()`]. \nAlternatively  since these types are immutable, consider wrapping the `PrivateKeyDer\u003c'_\u003e` in a [`Rc`]\nor an [`Arc`].\n\n[`Rc`]: https://doc.rust-lang.org/std/rc/struct.Rc.html\n[`Arc`]: https://doc.rust-lang.org/std/sync/struct.Arc.html\n[`PrivateKeyDer::clone_key()`]: https://docs.rs/rustls-pki-types/latest/rustls_pki_types/enum.PrivateKeyDer.html#method.clone_key\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frustls%2Fpki-types","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frustls%2Fpki-types","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frustls%2Fpki-types/lists"}