Skip to main content
The @chipi-stack/chipi-passkey package handles the browser side of passkey authentication for Chipi wallets. The user authenticates with biometrics — Touch ID, Face ID, Windows Hello, Android biometrics — and the wallet’s private key stays on their device.

What you build with this

  • Sign-up without a password. The user taps Touch ID once; you get back a public key + credential id and create their wallet.
  • Sign every transaction with biometrics. No PIN prompt, no password modal, no copy-pasted seed phrase.
  • Recover lost passkeys. The platform syncs the passkey to the user’s other devices; a second passkey on a different device, or an optional PIN backup, also keep the wallet recoverable.

Install

Browser-only. The package depends on navigator.credentials and crypto.subtle; it does not run on Node or Bun server entry points.

Pick your path

There are two passkey paths — the SDK supports both, but the entry point differs.

Default SHHH wallet (STARK signer, PRF)

Use useCreateWallet({ usePasskey: true }) (or createWalletPasskey + getWalletEncryptKey). The WebAuthn PRF extension derives, on the device, the key that unlocks the wallet’s STARK key. This is the default wallet, and the one that supports session keys (agents). Also covers legacy CHIPI v29. Passkey-only, no PIN required.

SHHH with a passkey signer (WEBAUTHN_P256)

Use createShhhPasskey + signShhhMessage. The P-256 key itself is the signer and stays inside the platform authenticator. No PIN. SDK session keys need a STARK or ED25519 signer, so this path can’t host an agent session.

Browser support

The platform authenticator must be available — that’s iOS 15+ Safari, modern Chrome / Edge, Firefox 122+ on macOS / Windows, Android 9+ Chrome. The package exposes isWebAuthnSupported() so you can branch your UI:
  • Quickstart — register a passkey and sign a transaction, end to end
  • API reference — every exported function
  • When passkeys fail — what to do when the browser changes, the user loses their device, or biometrics break