Skip to content

feat(w3up-client): switch browser agent keys to ed25519#667

Open
NiKrause wants to merge 2 commits intostoracha:mainfrom
NiKrause:feat/658-ed25519-agent-keys
Open

feat(w3up-client): switch browser agent keys to ed25519#667
NiKrause wants to merge 2 commits intostoracha:mainfrom
NiKrause:feat/658-ed25519-agent-keys

Conversation

@NiKrause
Copy link

@NiKrause NiKrause commented Feb 11, 2026

Implements new ed25519 WebCrypto model behaviour (#658)

Key runtime changes:

  • Browser client now generates Ed25519 principals by default instead of RSA.
    • packages/w3up-client/src/index.js now imports @ucanto/principal/ed25519.
  • Node client keeps explicit extractable Ed25519 generation for Conf-backed persistence.
    • packages/w3up-client/src/index.node.js now calls generate({ extractable: true }).
  • Space key generation for mnemonic-capable owned spaces is explicit extractable Ed25519.
    • packages/access-client/src/space.js generate() now uses ED25519.generate({ extractable: true }).
  • Mnemonic export now fails fast with a clear error when a signer is non-extractable.
    • Added explicit TypeError in packages/access-client/src/space.js.
  • Conf driver now rejects non-extractable Ed25519 CryptoKey archives with a clear message.
    • Prevents silently persisting unsupported JSON payloads in Node conf storage.

Test updates:

  • Updated browser key expectations from RSA to Ed25519:
    • packages/w3up-client/test/index.browser.test.js
  • Updated Node BYO principal tests to use extractable keys for Conf-store compatibility:
    • packages/w3up-client/test/index.node.test.js
  • Added explicit non-extractable mnemonic error coverage:
    • packages/w3up-client/test/space.test.js
    • packages/access-client/test/agent.test.js
  • Expanded store coverage for ed25519 persistence semantics:
    • packages/access-client/test/stores/store-indexeddb.browser.test.js
    • packages/access-client/test/stores/store-conf.node.test.js

Tooling/test infra updates:

  • Upgraded workspace playwright-test catalog to ^14.0.0 (resolved to 14.1.12).
  • Regenerated pnpm lockfile.
  • This resolves local browser startup crashes seen with older playwright-core/chromium revisions and keeps browser tests aligned with new key expectations.

Before merging this PR - ucanto PR must be merged first storacha/ucanto#408

…ore/mnemonic flows

Implements upload-service issue storacha#658 behavior on the client side and aligns tests with the new ed25519 WebCrypto model.

Key runtime changes:
- Browser client now generates Ed25519 principals by default instead of RSA.
  - packages/w3up-client/src/index.js now imports @ucanto/principal/ed25519.
- Node client keeps explicit extractable Ed25519 generation for Conf-backed persistence.
  - packages/w3up-client/src/index.node.js now calls generate({ extractable: true }).
- Space key generation for mnemonic-capable owned spaces is explicit extractable Ed25519.
  - packages/access-client/src/space.js generate() now uses ED25519.generate({ extractable: true }).
- Mnemonic export now fails fast with a clear error when a signer is non-extractable.
  - Added explicit TypeError in packages/access-client/src/space.js.
- Conf driver now rejects non-extractable Ed25519 CryptoKey archives with a clear message.
  - Prevents silently persisting unsupported JSON payloads in Node conf storage.

Test updates:
- Updated browser key expectations from RSA to Ed25519:
  - packages/w3up-client/test/index.browser.test.js
- Updated Node BYO principal tests to use extractable keys for Conf-store compatibility:
  - packages/w3up-client/test/index.node.test.js
- Added explicit non-extractable mnemonic error coverage:
  - packages/w3up-client/test/space.test.js
  - packages/access-client/test/agent.test.js
- Expanded store coverage for ed25519 persistence semantics:
  - packages/access-client/test/stores/store-indexeddb.browser.test.js
  - packages/access-client/test/stores/store-conf.node.test.js

Tooling/test infra updates:
- Upgraded workspace playwright-test catalog to ^14.0.0 (resolved to 14.1.12).
- Regenerated pnpm lockfile.
- This resolves local browser startup crashes seen with older playwright-core/chromium revisions and keeps browser tests aligned with new key expectations.
@NiKrause NiKrause requested a review from travis as a code owner February 11, 2026 13:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant