Features

What the device does, and proof that it does it. Everything listed here is implemented and verified against real clients; nothing on this page is a promise. Every term is explained on the FAQ.

The device at a glance

AppWhat you use it forTransportVerified with
FIDO2passkeys, WebAuthn, SSH (-sk), Linux loginCTAP-HIDChrome, python-fido2 2.2.1, ykman
OpenPGP 3.4PGP signing/encryption, SSH authCCIDgpg / scdaemon 2.4.4
OATH (YKOATH)TOTP/HOTP codesCCIDykman, Yubico Authenticator
OTPYubiKey-slot OTP, challenge-responseCCIDykman otp
Managementdevice config, rescue surfaceCCIDykman, PicoForge
NostrBIP-340 event signing, NIP-44 v2 encryption for Nostr identitiesvendor HID (usage page 0xFF00) + CCIDfapico2 Nostr extension, end-to-end on hardware — the applet · the how-to

FIDO2 / WebAuthn

  • Passkeys (WebAuthn) over CTAP 2.1 — verified with Chrome, python-fido2 2.2.1, ykman and Yubico Authenticator
  • 848 discoverable credentials (resident keys) — measured to refusal on hardware (8 slots of the original range are the Nostr reservation)
  • Credential management: enumerate, rename, delete — via ykman or PicoForge
  • Extensions: hmac-secret, credProtect, credBlob, largeBlobKey, minPinLength
  • Large blobs (authenticatorLargeBlobs)
  • User presence enforcement through the physical button; user verification with PIN
  • ES256 (ECDSA over P-256) — the algorithm every client requests first, and the one the device path signs with
  • Permissions enforced on every token: MC, GA, CM, ACFG, LBW
  • Authenticator configuration; vendor configuration
  • Seed backup: the vendor seed — the soft-lock key — exports once, as a 24-word phrase, and installs on any board; passkeys themselves are non-exportable by design — the procedure
  • Enterprise attestation (enterpriseAttestation): a listed enterprise RP can request identifying attestation
  • Signature counters: a persistent per-credential counter increments on every assertion
  • Sealed store: credentials survive a reflash, and a flash dump alone is inert

OATH (YKOATH)

  • TOTP and HOTP — 68 credentials reserved in the key store
  • Access-code locking — until the correct access code is presented, the applet answers "locked"; it persists across power cycles (hardware-verified)
  • Challenge-response generation, touch-gated
  • Yubico Authenticator and ykman compatible

OTP

  • YubiKey-slot OTP — the YubiKey one-time-password protocol over CCID
  • Challenge-response generation, touch-gated challenge
  • ykman otp compatible

OpenPGP 3.4

  • OpenPGP card specification v3.4 — 3 key slots (Signature, Encryption, Authentication)
  • RSA (2048, 3072, 4096), Ed25519, Curve25519, ECDSA (NIST P-256, P-384, P-521), secp256k1, Brainpool P-256r1
  • Key generation on device; key import; public-key and certificate export
  • PIN and Admin PIN protection; reset and unblock — via the admin PIN or a dedicated reset code
  • Works with GnuPG, SSH and compatible tools over CCID

Nostr

  • Up to 8 Nostr identities — BIP-340 (Schnorr) signing and NIP-44 v2 encryption, computed on the chip; the full tour is the applet page, the walk-through is the how-to
  • NIP-07 window.nostr for web pages — getPublicKey, signEvent, nip44.encrypt/decrypt, listKeys — via the fapico2 Nostr extension over WebHID (Chrome 116+, usage page 0xFF00)
  • Touch on every private-key operation — sign, encrypt, decrypt, generate, import, label, delete, export; only the public reads are touch-free, and no config bit changes that
  • Keys sealed as AEAD records in the key store under the chip-unique OTP root — the same at-rest story as passkeys (why device-bound)
  • The event is hashed in the browser; only the 32-byte sighash reaches the board, and the signature comes back with the npub that produced it

Platform

  • Signed secure boot (opt-in, ./build-signed.sh): the bootrom refuses unsigned images
  • Master key in OTP: the store key derives from a one-way-fused OTP row — nothing that seals the device lives in flash
  • Rescue interface: reboot a running board into the mass-storage bootloader without auth or a button
  • LED slot configuration via PicoForge

Capacity

ResourceCapacityNotes
FIDO2 resident passkeys848Measured to refusal on hardware; 8 slots of the original 856 range are the Nostr reservation
OATH credentials68Reserved in the key store
Nostr identities8The Nostr applet

For scale: a YubiKey 5 holds 100 resident passkeys.