picky

Portable X.509, PKI, JOSE and HTTP signature primitives for Rust

Library
Cargo
v7.0.0-rc.26
68stars
MIT OR Apache-2.0

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
60/100Good
Development Activity80
Maintenance36
Community52
Maturity60
Momentum12

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
75/100Good
Architecture85
Code Quality82
Innovation74
Learning Curve60

picky is a portable, pure-Rust cryptography and public-key-infrastructure toolkit maintained by Devolutions. It brings X.509 certificate parsing and generation, PKCS#12 handling, JOSE (JWT/JWS/JWE/JWK) support, SSH and PuTTY key formats, and HTTP request signatures under a single, dependency-light crate.

Built on the sibling picky-asn1 stack for ASN.1/DER encoding, it targets developers who need standards-compliant PKI and token handling without pulling in a heavyweight OpenSSL binding, making it suitable for microservices, agents, and cross-platform tools.

What You Get

  • X.509 certificate parsing, building, and validation with a fluent certificate builder
  • JOSE support covering JWT, JWS, JWE, and JWK for token issuance and verification
  • Key handling for RSA, EC, and Ed25519 plus PEM, PKCS#12, SSH, and PuTTY formats
  • HTTP signature creation and verification for signed API requests

Common Use Cases

  • Issuing and validating X.509 certificates inside a Rust PKI service
  • Signing and verifying JWTs and JOSE tokens for authentication flows
  • Reading and converting private/public keys across PEM, SSH, and PuTTY formats

Under The Hood

Architecture - picky is the top-level crate of the picky-rs Cargo workspace, organised in src/ by domain: x509/, jose/, key/, pkcs12/, ssh/, putty/, http/, plus shared hash, pem, and signature modules. It delegates ASN.1/DER encoding to the sibling picky-asn1, picky-asn1-der, and picky-asn1-x509 crates, keeping the public API focused on high-level PKI, token, and key operations while low-level serialization lives in dedicated crates.

Tech Stack - Written in Rust (edition 2024, MSRV 1.85), it builds on serde, base64, thiserror 2, hex, and zeroize for secure memory handling, with optional chrono/time, http, and cab features gated behind Cargo feature flags. RSA/EC/Ed25519 support is layered over the RustCrypto ecosystem rather than OpenSSL.

Code Quality - The crate carries integration tests (tests/mkcert_all_stars.rs, fuzzer_regressions.rs) and a fuzz/ harness, uses thiserror-based typed errors throughout, and applies zeroize to sensitive key material. Domain modules are cleanly separated and the workspace maintains per-crate CHANGELOG files.

API Design - The public surface favors builder-style constructors (certificate builder, JWT/JWS builders) and format-specific parsers, giving ergonomic, discoverable entry points. Feature flags let consumers pull in only the formats they need. Documentation lives largely on docs.rs with tested examples, so the learning curve depends on familiarity with X.509/JOSE concepts more than the API itself.

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search