Skip to content

Jazz upstream: no account public keys or sealed-box API (blocks engine-authenticated shared-field key distribution) #153

Description

@FelineStateMachine

Standing upstream-requirement issue. Filter: upstream.

Gated feature. Engine-authenticated key distribution for shared-field encryption. Shared encrypted columns ship with a lofi-owned construction instead: a self-derived x25519 keypair per account, a self-published key-directory table, and per-resource field keys wrapped to member public keys, with TOFU fingerprint pinning (upgraded by out-of-band pinning through lofi2 sharing-identity strings) making server key substitution a detectable active attack.

Upstream requirement. In the pinned jazz-tools@2.0.0-alpha.53, the client API exposes only user_id strings (Session in dist/runtime/context.d.ts); no account signing or encryption public key, no sealer/sealed-box primitive, and no authenticated member-key enumeration are reachable from the API surface — the crypto engine is Rust-internal behind jazz-wasm, which exports only deriveUserId and token minting. Engine-authenticated account public keys would let wrapped field keys verify against identity material the server cannot substitute, replacing the TOFU directory and pin store.

On pin bump. Check whether the API exposes account public keys or a sealed-box primitive; if so, migrate the key directory to engine-authenticated keys (directory table and pin store become verification caches), and re-run the shared-field sync suite.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: jazzJazz data, sync, storage, or observabilityupstreamUpstream (Jazz/iroh/Deno) requirement gating a feature; review when evaluating pin bumps

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions