Skip to content

Commit d7f3384

Browse files
authored
Update readme (#17)
1 parent c3349ba commit d7f3384

File tree

5 files changed

+31
-16
lines changed

5 files changed

+31
-16
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
For per-package release history, see the [GitHub Releases](https://github.com/multivmlabs/post-quantum-packages/releases) page.
6+
7+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).

CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
44

55
## Project Overview
66

7-
Post-quantum cryptography packages monorepo providing a unified toolkit across three languages: TypeScript (npm), Rust (crates.io), and Python (PyPI). Contains 37 packages organized by cryptographic functionality (OIDs, JWS, CSR, key encoding, etc.).
7+
Post-quantum cryptography packages monorepo providing a unified toolkit across three languages: TypeScript (npm), Rust (crates.io), and Python (PyPI). Contains 39 packages organized by cryptographic functionality (OIDs, JWS, CSR, key encoding, etc.).
88

99
## Common Commands
1010

CONTRIBUTING.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ cd packages/<package>/rust && cargo test
4848

4949
## Package Structure
5050

51-
Every package follows the same dual-language layout:
51+
Every package follows the same tri-language layout:
5252

5353
```
5454
packages/<package>/
@@ -62,10 +62,13 @@ packages/<package>/
6262
│ ├── Cargo.toml
6363
│ ├── src/
6464
│ └── README.md
65-
└── test-data/ # Shared test vectors (some packages)
65+
└── python/ # Python implementation (planned — contributions welcome)
66+
├── pyproject.toml
67+
├── src/
68+
└── tests/
6669
```
6770

68-
**Cross-language consistency**: Both implementations of a package must expose the same public API and produce identical outputs for the same inputs. Shared test vectors in `test-data/` help enforce this.
71+
**Cross-language consistency**: All implementations of a package must expose the same public API and produce identical outputs for the same inputs. Current priority is TypeScript and Rust — Python infrastructure is in place but most packages are not yet implemented.
6972

7073
## Coding Standards
7174

@@ -192,6 +195,7 @@ bun run scripts/version <package>/<language> <major|minor|patch>
192195
Tag patterns trigger the corresponding publish workflow:
193196
- `*/ts@*` → npm publish
194197
- `*/rust@*` → cargo publish
198+
- `*/python@*` → PyPI publish
195199

196200
Only maintainers can publish releases. Contributors do not need to bump versions — this is handled during merge.
197201

README.md

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<p align="center">
66
Production-grade post-quantum cryptography for TypeScript and Rust.
77
<br />
8-
No legacy algorithms. No C bindings. Pure language implementations.
8+
No legacy algorithms. NIST-standardized. Production-ready.
99
</p>
1010

1111
<p align="center">
@@ -19,7 +19,7 @@
1919

2020
A unified monorepo implementing NIST-standardized post-quantum cryptography ([FIPS 203](https://csrc.nist.gov/pubs/fips/203/final), [204](https://csrc.nist.gov/pubs/fips/204/final), [205](https://csrc.nist.gov/pubs/fips/205/final)) packages across two languages. Every package ships to **npm** and **crates.io** with identical APIs and shared test vectors.
2121

22-
> **Python support is planned.** Current priority is TypeScript and Rust. Python implementations will follow once the core APIs stabilize. Track progress in [issues](https://github.com/multivmlabs/post-quantum-packages/issues).
22+
> **Python support is planned.** Current priority is TypeScript and Rust. Python implementations will follow once the core APIs stabilize. The package structure, CI pipeline, and publish workflows for Python are already in place — contributions are welcome. Track progress in [issues](https://github.com/multivmlabs/post-quantum-packages/issues).
2323
2424
All implementations target NIST security categories I, III, and V. All parameter choices follow the normative requirements of their respective FIPS standards. Rust crates are `no_std` capable where applicable. Packages are designed with PQ payload sizes as a first-class constraint — because in real protocols, bytes-on-wire matter.
2525

@@ -31,15 +31,16 @@ Most blockchains and web infrastructure rely on classical signatures (ECDSA, EdD
3131

3232
But adopting PQC means touching every layer of your stack: key encoding, signatures, certificates, JWTs, TLS, SSH, wallet tooling, blockchain transactions. PQ signatures are also significantly larger than classical ones (2.4 KB for ML-DSA-44 vs 64 bytes for Ed25519), which cascades into bandwidth, storage, and consensus scaling — what we call the **PQ scaling cliff**.
3333

34-
Existing options require C/FFI bindings (liboqs, pqcrypto) or only support a single language. This repository provides pure-language implementations across all three ecosystems with zero native dependencies. Every package is built with PQ payload sizes treated as a first-class design constraint.
34+
Existing options only support a single language or lack the higher-level tooling (key encoding, JWK, certificates, JWS) needed for real applications. This repository provides that tooling across both TypeScript and Rust with consistent APIs. Every package is built with PQ payload sizes treated as a first-class design constraint.
3535

3636
| | post-quantum-packages | liboqs bindings | pqcrypto crate |
3737
|---|:---:|:---:|:---:|
38-
| Pure language (no C/FFI) | Yes | No | No |
38+
| TypeScript + Rust tooling | Yes | No | No |
3939
| TypeScript + Rust | Yes | Partial | Rust only |
40-
| FIPS 203 / 204 / 205 | Yes | Yes | Partial |
40+
| FIPS 203 / 204 / 205 | Yes (target) | Yes | Partial |
4141
| `no_std` (Rust) | Yes | No | Partial |
42-
| Zero native dependencies | Yes | No | No |
42+
43+
> Individual package readiness varies — see the [version guide](#packages) below. Packages at `v0.0.1` are scaffolded and open for contribution.
4344
4445
## Minimum Supported Versions
4546

@@ -138,6 +139,8 @@ Every package is implemented in TypeScript and Rust with consistent APIs.
138139

139140
## Quick Start
140141

142+
> The examples below use `pq-oid` and `pq-key-encoder`, which are among the first implemented packages. Check each package's version before installing — `v0.0.1` means scaffolded only.
143+
141144
### TypeScript
142145

143146
```bash
@@ -215,10 +218,11 @@ packages/
215218
├── pq-oid/
216219
│ ├── ts/ # TypeScript → npm
217220
│ ├── rust/ # Rust → crates.io
218-
│ └── test-data/ # Shared test vectors
221+
│ └── python/ # Python → PyPI (planned)
219222
├── pq-key-encoder/
220223
│ ├── ts/
221-
│ └── rust/
224+
│ ├── rust/
225+
│ └── python/
222226
└── ... # same structure for all packages
223227
```
224228

@@ -261,6 +265,8 @@ For vulnerabilities, see [SECURITY.md](SECURITY.md). Do **not** open public issu
261265

262266
- [**Quantum**](https://quantum.systems) — EVM-compatible Layer 1 blockchain where PQ authorization is the default. Uses these packages for PQ transaction signing, key encoding, verifier contract tooling, and the PQ Wallet Layer that brings PQ-secured smart wallets to existing EVM chains. See the [Quantum Litepaper](https://quantum.systems/litepaper) for the full protocol design.
263267

268+
> Using these packages? [Open a PR](https://github.com/multivmlabs/post-quantum-packages/edit/main/README.md) to add your project here.
269+
264270
## Citation
265271

266272
If you use these packages in academic work, please cite:
@@ -270,7 +276,7 @@ If you use these packages in academic work, please cite:
270276
title = {post-quantum-packages: Production PQC for TypeScript and Rust},
271277
author = {{MultiVM Labs}},
272278
url = {https://github.com/multivmlabs/post-quantum-packages},
273-
year = {2025}
279+
year = {2026}
274280
}
275281
```
276282

packages/pq-key-encoder/rust/README.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,7 @@
77
[![MSRV](https://img.shields.io/badge/MSRV-1.78-blue.svg)](https://blog.rust-lang.org/2024/05/02/Rust-1.78.0.html)
88
[![Audit](https://img.shields.io/badge/audit-pending-orange)](https://github.com/multivmlabs/post-quantum-packages/blob/main/SECURITY.md)
99

10-
Zero-dependency\* post-quantum key encoding library for Rust. Encodes and decodes **ML-KEM**, **ML-DSA**, and **SLH-DSA** keys across DER (SPKI/PKCS#8), PEM, and JWK formats.
11-
12-
\*Only depends on [`pq-oid`](https://crates.io/crates/pq-oid) and [`zeroize`](https://crates.io/crates/zeroize).
10+
Post-quantum key encoding library for Rust. Encodes and decodes **ML-KEM**, **ML-DSA**, and **SLH-DSA** keys across DER (SPKI/PKCS#8), PEM, and JWK formats.
1311

1412
| | |
1513
|:---:|:---|

0 commit comments

Comments
 (0)