mirror of
https://github.com/PR0M3TH3AN/bitlogin.git
synced 2026-11-01 02:51:22 +00:00
Implement the Connection Vault protocol layer (phases A-C)
connection-vault.md 5-13 as code, with the implementation-time decisions recorded in a new section 18 and vault-ux.md holding the agreed UX walkthroughs as the authorization layer's acceptance criteria. Capsules gain paired optional fields connection_vault_root and vault_sudo_key (both or neither, validated); registration mints them, login/change-password/recovery carry them forward, and enableConnectionVault is the phrase-gated migration for existing accounts -- recovery capsule written first, fail closed, idempotent by reusing roots found in either capsule so a partial failure can never mint twice and strand records. src/vault/ holds the finalized key hierarchy (HKDF/ScalarExpand constants pinned by test vectors that must only ever be reverted, never updated), per-connection encrypted records signed by a derived vault identity with the capsule JCS+padding+AES-GCM pipeline and shared buckets so record types are indistinguishable by size, the NWC profile with lossless URI parse/export, relay sync reusing the publish-and- verify quorum bar, and per-record high-water marks so a stale replica is withheld and reported rather than silently resurrecting a revoked credential. The two-tier model makes sudo mode cryptographically real: personal- tier record keys require vault_sudo_key as HKDF input, VaultSession holds it only inside an enableSudo/endSudo window (wiping on the way in and out), and outside a window personal records are invisible -- the same trial-decrypt returns null, not an error. The app-facing API is structurally blind to the tier by construction. 118 tests passing, including four end-to-end scenarios against mock relays: clean-device restore, password-change carry, legacy-account migration (wrong phrase refused), and rollback detection. Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01CMr9Yt8SYmZcfgrg3CV2G1
This commit is contained in:
1 parent
e9a5a41ff7
commit
a465e1d8fa
22 files changed
+1843
-12
No files matched your search
+10
-5
@@ -33,14 +33,19 @@ identity and recovery model.
|
||||
|
||||
## Connection Vault
|
||||
|
||||
The Connection Vault is an experimental design for portable application
|
||||
credentials. It deliberately stores mutable credentials outside the core
|
||||
identity capsules as independently encrypted records.
|
||||
The Connection Vault stores portable application credentials outside the core
|
||||
identity capsules as independently encrypted records. Its protocol layer
|
||||
(records, key hierarchy, relay sync, migration, tiers) is **implemented in
|
||||
`@bitlogin/core`'s `src/vault/`**; the widget authorization layer (consent
|
||||
UI, grants, Connected apps) is still to come.
|
||||
|
||||
- [`connection-vault.md`](./connection-vault.md) — overall vault architecture,
|
||||
key hierarchy, relay storage, authorization, recovery, and deletion
|
||||
key hierarchy, relay storage, authorization, recovery, and deletion; §18
|
||||
records the implementation-time decisions (tier model, sudo key)
|
||||
- [`vault-ux.md`](./vault-ux.md) — the agreed user-experience walkthroughs,
|
||||
serving as the authorization layer's acceptance criteria
|
||||
- [`nwc-connections.md`](./nwc-connections.md) — Nostr Wallet Connect credential
|
||||
profile
|
||||
profile (parser/exporter implemented in `src/vault/nwc.ts`)
|
||||
- [`s3c-format.md`](./s3c-format.md) — portable `s3c1:` format for S3-compatible
|
||||
storage connections
|
||||
|
||||
|
||||
Reference in new issue
Block a user