Skip to content

feat(stellar): add signer interface for passkey stealth key derivation#153

Open
collinsezedike wants to merge 1 commit into
wraith-protocol:developfrom
collinsezedike:feat/stellar-passkey-stealth-signer
Open

feat(stellar): add signer interface for passkey stealth key derivation#153
collinsezedike wants to merge 1 commit into
wraith-protocol:developfrom
collinsezedike:feat/stellar-passkey-stealth-signer

Conversation

@collinsezedike

Copy link
Copy Markdown

Summary

  • Add StellarStealthSigner interface (signMessage(message): Promise<Uint8Array>) and deriveStealthKeysFromSigner() in src/chains/stellar/signer.ts / keys.ts, so stealth key derivation no longer assumes a synchronous Freighter-shaped ed25519 signature.
  • FreighterStealthSigner wraps the existing Freighter-style wallet API; the raw deriveStealthKeys(signature) path is unchanged.
  • WebAuthnPasskeyStealthSigner is a reference passkey adapter. WebAuthn get() assertions aren't deterministic across sessions (fresh ECDSA nonce, changing counter/clientDataJSON), so instead of hashing the assertion signature it uses the WebAuthn Level 3 prf extension, which is deterministic for a given credential and salt.
  • useStellarStealthKeys() in @wraith-protocol/sdk-react gained generateFromSigner() alongside the existing generate().
  • Docs in docs/chains/stellar-stealth-signers.md, changelog entry under the upcoming release.

Closes #121.

Semver

Additive-only: new exports (StellarStealthSigner, deriveStealthKeysFromSigner, FreighterStealthSigner, WebAuthnPasskeyStealthSigner) plus a new hook method. No existing signature or behavior changes.

Test plan

  • pnpm build (root and sdk-react)
  • pnpm test — full Stellar suite (797 passed) and sdk-react suite pass
  • New test/chains/stellar/signer.test.ts: Freighter path unchanged, passkey mock derives identical keys across two independent sessions, different credentials diverge, missing PRF / missing credentials container throw
  • pnpm format:check

@drips-wave

drips-wave Bot commented Jul 24, 2026

Copy link
Copy Markdown

@collinsezedike Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

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.

Passkey / smart-wallet abstraction for Stellar stealth signing

1 participant