[package] name = "kv-sync" description = "Sync engine: OPAQUE login, RFC 9421 request signing, pull/push, merge, manifest." version.workspace = true edition.workspace = true license.workspace = true publish.workspace = true [dependencies] kv-proto.workspace = true kv-crypto.workspace = true kv-model.workspace = true kv-store.workspace = true uuid.workspace = true thiserror.workspace = true serde.workspace = true serde_json.workspace = true base64.workspace = true sha2.workspace = true rand_core.workspace = true zeroize.workspace = true opaque-ke.workspace = true reqwest.workspace = true ciborium.workspace = true blake3.workspace = true p256.workspace = true time.workspace = true url.workspace = true wiremock = { workspace = true, optional = true } # Native transport: rustls with SPKI pinning. In the browser (wasm32) reqwest uses fetch and the # browser's TLS, so none of this applies there. [target.'cfg(not(target_arch = "wasm32"))'.dependencies] rustls.workspace = true webpki-roots.workspace = true rustls-webpki.workspace = true tokio.workspace = true [target.'cfg(target_arch = "wasm32")'.dependencies] js-sys = "0.3" [features] # In-memory fake of kestrove-server for tests (also used by kv-ffi's tests). test-server = ["dep:wiremock"] [dev-dependencies] kv-sync = { path = ".", features = ["test-server"] } rcgen.workspace = true tokio-rustls.workspace = true tempfile.workspace = true rustls.workspace = true tokio = { workspace = true }