@@ -16,6 +16,12 @@ readme.workspace = true
1616[lints ]
1717workspace = true
1818
19+ [features ]
20+ # Off-by-default post-quantum transport. Adds a GPL-clean X25519MLKEM768 hybrid
21+ # key-exchange group (ring X25519 + RustCrypto ML-KEM-768) to the rustls client
22+ # config. See `docs/pqc.md`.
23+ pqc = [" dep:rustls" , " dep:ml-kem" , " dep:kem" , " dep:rand_core" , " dep:webpki-roots" ]
24+
1925[dependencies ]
2026thiserror = { workspace = true }
2127serde = { workspace = true }
@@ -28,6 +34,16 @@ time = { workspace = true }
2834base64 = { workspace = true }
2935vault-core = { path = " ../vault-core" }
3036
37+ # PQC transport (feature = "pqc"). Pinned to the versions reqwest already pulls
38+ # so rustls unifies to one crate instance (required for `use_preconfigured_tls`).
39+ rustls = { version = " 0.23" , default-features = false , features = [" ring" , " std" , " tls12" ], optional = true }
40+ ml-kem = { version = " 0.2" , optional = true }
41+ # `kem` provides the Encapsulate/Decapsulate traits ml-kem's keys implement;
42+ # pinned to the exact pre-release ml-kem 0.2 depends on.
43+ kem = { version = " =0.3.0-pre.0" , optional = true }
44+ rand_core = { version = " 0.6" , features = [" getrandom" ], optional = true }
45+ webpki-roots = { version = " 1" , optional = true }
46+
3147[dev-dependencies ]
3248tokio = { workspace = true }
3349wiremock = { workspace = true }
0 commit comments