onepub-dev / onepub-dev/reVault

Plan browser and WASM unlock story

Open
#28 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

implemented in progress
Dominant language
Rust
Stars
4
Forks
0
Avg merge
1h 55m
Merged PRs (30d)
1

Description

Summary

Track the browser/WASM unlock story separately from native platform
secret-store integration. Browser WASM cannot directly use macOS Keychain,
Windows Credential Manager, Linux Secret Service, or KWallet, so it needs a
web-specific design.

Scope

  • Keep browser builds focused on lockbox_core.
  • Do not depend on native lockbox_vault platform secret-store code from WASM.
  • Investigate WebCrypto for wrapping/unwrapping vault or archive secrets.
  • Investigate IndexedDB as the browser persistence layer for wrapped secrets.
  • Investigate passkeys/WebAuthn as an optional user-mediated unlock factor.
  • Define a fallback prompt-only mode for browsers that should not persist
    secrets.

Questions To Answer

  • What exact secret is safe to persist in browser storage: vault unlock
    material, a wrapping key, or only encrypted state?
  • Should persisted browser unlock state be per-origin, per-user profile, or
    export/import based?
  • How do we handle private/incognito sessions where persistence is unavailable
    or short-lived?
  • What recovery story exists if IndexedDB state is cleared?
  • Can passkeys provide a useful unlock UX without pretending they are equivalent
    to native keychain storage?

Non-Goals

  • Do not try to emulate the native agent in browser storage.
  • Do not persist archive content keys by default.
  • Do not block native platform secret-store work on this design.

Security Notes

  • Web storage is protected by browser origin and profile boundaries, not by the
    same OS facilities used by native keychains.
  • WebCrypto keys may be non-extractable, but the application still runs inside
    the browser origin and must be treated accordingly.
  • Browser unlock should be documented as a separate trust model from desktop
    platform secret stores.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the lockbox_core and lockbox_vault boundaries described in the issue, then map the browser/WASM constraints around WebCrypto, IndexedDB, and passkeys. Produce a documented design that answers the storage, scope, private-session, recovery, and optional-factor questions, and clearly separates browser trust from native secret stores.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust, wasm
Domain
cryptography, security, web-dev
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.