Overview and package catalog
post-quantum-packages is a unified monorepo of NIST post-quantum cryptography packages for TypeScript and Rust, published to npm and crates.io with identical APIs and shared NIST ACVP test vectors. Python is planned.
Package catalog
Core
| Package | Description | Status |
|---|---|---|
pq-oid | OID constants for ML-KEM, ML-DSA, SLH-DSA | Published |
pq-algorithm-id | Algorithm identifier mappings (JOSE, COSE, X.509) | Published |
pq-key-encoder | Key encoding (DER, PEM, JWK, SPKI, PKCS#8) | Published |
pq-key-fingerprint | Public key fingerprint generation | Published |
pq-test-vectors | NIST test vectors as importable fixtures | Scaffolded |
pq-key-strength | Classical vs PQ security level comparison | Scaffolded |
pq-size-calculator | Signature, ciphertext, and key size calculator | Scaffolded |
pq-rng | Deterministic RNG for testing | Scaffolded |
pq-side-channel | Side-channel resistant helpers | Scaffolded |
Key encoding and certificates
| Package | Description | Status |
|---|---|---|
pq-spki | SubjectPublicKeyInfo encoding | Scaffolded |
pq-pkcs8 | PKCS#8 private key encoding | Scaffolded |
pq-csr | Certificate Signing Requests | Scaffolded |
pq-cert-parse | X.509 certificate parsing (read-only) | Scaffolded |
pq-cert-verify | X.509 certificate chain verification | Scaffolded |
Web standards (JOSE / COSE / CMS)
| Package | Description | Status |
|---|---|---|
pq-jws | JSON Web Signature with ML-DSA | Scaffolded |
pq-jwe | JSON Web Encryption with ML-KEM | Scaffolded |
pq-jwk | JSON Web Key serialization | Scaffolded |
pq-jwt-verify | Verify-only JWT (smaller bundle) | Scaffolded |
pq-cose | CBOR Object Signing and Encryption | Scaffolded |
pq-cms | Cryptographic Message Syntax | Scaffolded |
pq-pkcs7 | PKCS#7 signatures | Scaffolded |
pq-xmldsig | XML Digital Signatures with ML-DSA | Scaffolded |
pq-dkim | DKIM email signing | Scaffolded |
Encryption and key exchange
| Package | Description | Status |
|---|---|---|
pq-ecies | ECIES-style encryption with ML-KEM | Scaffolded |
pq-hpke | Hybrid Public Key Encryption | Scaffolded |
pq-kem-combiner | Secure multi-KEM combiner | Scaffolded |
pq-noise | Noise protocol patterns with PQ | Scaffolded |
Authentication
| Package | Description | Status |
|---|---|---|
pq-fido2 | FIDO2 / CTAP2 with PQ | Scaffolded |
pq-webauthn | Server-side WebAuthn with ML-DSA | Scaffolded |
pq-ssh-agent | SSH agent protocol with PQ keys | Scaffolded |
pq-kerberos | Kerberos ticket handling with PQ | Scaffolded |
Network protocols
| Package | Description | Status |
|---|---|---|
pq-tls-client | TLS 1.3 client with PQ key exchange | Scaffolded |
pq-dtls | DTLS with PQ for UDP | Scaffolded |
pq-quic-crypto | QUIC crypto layer with PQ | Scaffolded |
Blockchain
| Package | Description | Status |
|---|---|---|
pq-eth-signer | Ethereum transaction signing with PQ | Scaffolded |
pq-solana-signer | Solana transaction signing with PQ | Scaffolded |
pq-bitcoin-taproot | Taproot-compatible PQ signatures | Scaffolded |
Browser and runtime
| Package | Description | Status |
|---|---|---|
pq-wasm | Browser-ready WASM build | Scaffolded |
pq-worker | Web Worker wrapper for non-blocking PQ | Scaffolded |
Reading the catalog
- Packages at
v0.0.1are scaffolded — the package structure, CI, and publish workflow are in place; implementation is open for contribution. - Packages at
≥ 1.0.0have a real implementation and a published API. - This documentation covers implemented packages in detail. Scaffolded packages are listed above so you can see the roadmap.
Minimum supported versions
| Runtime | Version |
|---|---|
| Bun | 1.0+ |
| Node.js | 18+ |
| Rust | 1.78+ |
Repository structure
packages/
├── pq-oid/
│ ├── ts/ # TypeScript → npm
│ ├── rust/ # Rust → crates.io
│ └── python/ # Python → PyPI (planned)
├── pq-key-encoder/
│ ├── ts/
│ ├── rust/
│ └── python/
└── ... # same structure for every package
Each language implementation has its own README with API docs and examples. The aggregated reference for implemented packages lives in the Package reference section.
Why a monorepo
Existing options force a choice between language-specific stacks or low-level primitives without tooling. This monorepo provides both: NIST-standard algorithms (ML-KEM, ML-DSA, SLH-DSA) and the higher-level encodings real applications need — key serialization, certificates, JWS/JWE, COSE/CMS, FIDO2, TLS, blockchain signing, browser runtimes. Each package treats PQ payload sizes as a first-class design constraint.
| post-quantum-packages | liboqs bindings | pqcrypto crate | |
|---|---|---|---|
| TypeScript + Rust | Yes | Partial | Rust only |
| FIPS 203 / 204 / 205 | Yes (target) | Yes | Partial |
no_std (Rust) | Yes | No | Partial |