Introduction
A minimal passkey SDK plus drop-in create / sign / recover components for Stellar smart accounts, built to drop into stellar-wallets-kit.
A minimal passkey SDK plus drop-in create / sign / recover UI for Stellar smart accounts. Wallet teams ship passkeys (Face ID, Touch ID, a security key) without hand-rolling WebAuthn, on-chain signing, or device/browser compatibility logic. It is a layer, not a wallet: no accounts to manage, no balances of its own.
Proven, not promised
The secp256r1 __check_auth path is verified on mainnet and testnet. On mainnet, a real
passkey signature authorized a 0.2 XLM payment from a smart account, and the chain rejected a
wrong-key signature. See the payment
transaction
on Stellar Expert. The AccountFactory is
CCCNRWMICVEMMUSBI7DL3IKB566QEOOQOLVDOAM5SLFDZ2KGUSRR3JVF on mainnet and
CADKKP4BEFTZYK3NDGSBTPDJESPNRQ6HF36XAT62WQUPI47MNTENY3NH on testnet.
Three ways to adopt
They stack: start at the top and add the others later. Each has a runnable example in the Quickstart.
| Adopt | Package | Use it when |
|---|---|---|
| Headless SDK | @soropass/core | You own the UI (any framework, or none) or run server-side. Four calls: create, sign, recover, add-device. |
| + UI components | @soropass/ui | You want drop-in create / sign / recover / add-device screens: framework-agnostic, themed by tokens.css, no design system to adopt. |
| Via Stellar Wallets Kit | PasskeyModule | You already use stellar-wallets-kit and want passkeys in its picker next to Freighter / Lobstr, with your getAddress / signTransaction calls unchanged. |
What makes it minimal
- ES256-only:
pubKeyCredParamspinned to alg −7; anything else throwsES256_NOT_SUPPORTED. Soroban verifies secp256r1. - Always low-S: the SDK normalizes signatures to low-S client-side, so the ~50% of Apple passkeys that emit high-S still verify on-chain.
- ~2 runtime deps: noble
p256+ hashes.@stellar/stellar-sdkis a peer dependency, never bundled. - Tree-shakeable subpaths: import only what you use (
@soropass/core/create,/sign,/recover).
Where to go next
Quickstart
Add passkeys in ~15 minutes: a runnable example for all three paths.
Components
Create / sign / recover screens, every state, drop-in.
SDK reference
Tiny surface, typed errors, pluggable adapters.
Compatibility
The living matrix: what works, what breaks, fallbacks.
Existing wallets
Add passkeys to users who already hold a classic account: migration, backup devices, recovery.
Fees and sponsorship
What each operation costs, who pays on testnet and mainnet, and how to sponsor onboarding.
Security
Trust boundaries, replay, RP-ID, and how signing works end to end.