You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
**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.
69
72
70
73
## Coding Standards
71
74
@@ -192,6 +195,7 @@ bun run scripts/version <package>/<language> <major|minor|patch>
192
195
Tag patterns trigger the corresponding publish workflow:
193
196
-`*/ts@*` → npm publish
194
197
-`*/rust@*` → cargo publish
198
+
-`*/python@*` → PyPI publish
195
199
196
200
Only maintainers can publish releases. Contributors do not need to bump versions — this is handled during merge.
Copy file name to clipboardExpand all lines: README.md
+15-9Lines changed: 15 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,7 @@
5
5
<palign="center">
6
6
Production-grade post-quantum cryptography for TypeScript and Rust.
7
7
<br />
8
-
No legacy algorithms. No C bindings. Pure language implementations.
8
+
No legacy algorithms. NIST-standardized. Production-ready.
9
9
</p>
10
10
11
11
<palign="center">
@@ -19,7 +19,7 @@
19
19
20
20
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.
21
21
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).
23
23
24
24
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.
25
25
@@ -31,15 +31,16 @@ Most blockchains and web infrastructure rely on classical signatures (ECDSA, EdD
31
31
32
32
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**.
33
33
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.
> Individual package readiness varies — see the [version guide](#packages) below. Packages at `v0.0.1` are scaffolded and open for contribution.
43
44
44
45
## Minimum Supported Versions
45
46
@@ -138,6 +139,8 @@ Every package is implemented in TypeScript and Rust with consistent APIs.
138
139
139
140
## Quick Start
140
141
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
+
141
144
### TypeScript
142
145
143
146
```bash
@@ -215,10 +218,11 @@ packages/
215
218
├── pq-oid/
216
219
│ ├── ts/ # TypeScript → npm
217
220
│ ├── rust/ # Rust → crates.io
218
-
│ └── test-data/ # Shared test vectors
221
+
│ └── python/ # Python → PyPI (planned)
219
222
├── pq-key-encoder/
220
223
│ ├── ts/
221
-
│ └── rust/
224
+
│ ├── rust/
225
+
│ └── python/
222
226
└── ... # same structure for all packages
223
227
```
224
228
@@ -261,6 +265,8 @@ For vulnerabilities, see [SECURITY.md](SECURITY.md). Do **not** open public issu
261
265
262
266
-[**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.
263
267
268
+
> Using these packages? [Open a PR](https://github.com/multivmlabs/post-quantum-packages/edit/main/README.md) to add your project here.
269
+
264
270
## Citation
265
271
266
272
If you use these packages in academic work, please cite:
@@ -270,7 +276,7 @@ If you use these packages in academic work, please cite:
270
276
title = {post-quantum-packages: Production PQC for TypeScript and Rust},
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.
0 commit comments