Skip to content

feat(sdk-core): add registerPasskey()#8680

Closed
derranW26 wants to merge 1 commit into
masterfrom
passkey/WCN-188-register-passkey
Closed

feat(sdk-core): add registerPasskey()#8680
derranW26 wants to merge 1 commit into
masterfrom
passkey/WCN-188-register-passkey

Conversation

@derranW26
Copy link
Copy Markdown
Contributor

Closes https://linear.app/bitgo/issue/WCN-188/implement-registerpasskey

Summary

  • Adds registerPasskey() to @bitgo/sdk-core — registers a passkey at the BitGo account level
  • Types (WebAuthnOtpDevice, WebAuthnProvider, PasskeyAuthResult, PasskeyGetOptions) are re-exported from @bitgo/passkey-crypto (no local stubs)
  • Updates Dockerfile to include @bitgo/passkey-crypto

Flow

  1. GET /api/v2/user/otp/webauthn/register — fetch server challenge (contains baseSalt)
  2. provider.create() — browser returns attestation
  3. If PRF output present → include scopes: ['prf'] in PUT payload; otherwise omit
  4. PUT /api/v2/user/otp — register the passkey
  5. Returns WebAuthnOtpDevice & { prfSupported: boolean }

Acceptance criteria

  • baseSalt sourced from server challenge — never generated client-side
  • Calls GET before provider.create()
  • PRF output → scopes included; no PRF → scopes omitted
  • Returns prfSupported: boolean
  • Uses PUT — not POST
  • No any types
  • Unit tests cover both PRF branches + call ordering

Test plan

  • Unit tests cover PRF-present branch (scopes included, prfSupported: true)
  • Unit tests cover PRF-absent branch (scopes omitted, prfSupported: false)
  • Unit test asserts GET challenge fires before provider.create()

TICKET: WCN-188

@linear-code
Copy link
Copy Markdown

linear-code Bot commented May 4, 2026

@derranW26 derranW26 closed this May 4, 2026
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