Passkeys.Tools

Advanced tools that let you encode, decode, modify, and intercept
WebAuthn attestations and assertions directly within your browser.

Welcome to Passkeys.Tools

Passkeys.Tools is a comprehensive suite of development and debugging tools for WebAuthn/Passkey implementations. These tools enable full emulation of clients (browsers) and authenticators to thoroughly test relying party implementations, security compliance, and edge cases.

Featured Tools:
  • Create: Simulates navigator.credentials.create() WebAuthn API calls to test credential registration flows.
  • Get: Simulates navigator.credentials.get() for testing authentication flows.
  • Attestation: Decode, modify, and encode attestation objects in various formats (like jwt.io for WebAuthn). Load custom keys or store keys in integrated storage.
  • Assertion: Decode, modify, and encode assertions. Sign with arbitrary keys from storage or verify existing signatures.
  • Keys: Integrated key storage with import/export capabilities. Convert between COSE, JWK, and other formats. Generate new keys with all standardized algorithms and manage credential IDs.
  • Users: Manage user accounts across relying parties with RP IDs, usernames, display names, and user IDs. Automatically captures users from registrations.
  • Converters: Simple utilities for converting between various encoding formats.
  • Interceptor: Requires companion browser extension. Intercepts all WebAuthn operations for modification (like Burp Suite for WebAuthn). Includes built-in security and compliance tests.
  • History: Tracks all interceptions and modifications, enabling value swaps across different passkey operations and browsers (i.e., victim and attacker browsers).
Usage Modes:

There are three different ways to use Passkeys.Tools:

  • Standalone Testing: The simplest way to use these tools. Everything runs on this website and stays in your browser with no server-side components or browser extensions required. You can create keys that are stored securely in localStorage in your browser and not sent to anyone. Use these keys to manually create attestations, encode/decode existing ones, sign assertions, verify signatures, and test create/get API calls.
  • Live Testing: Requires installation of the companion browser extension, which overwrites the WebAuthn APIs in the browser to intercept all API calls and present them in the tool. This allows live capturing and modifications of ongoing WebAuthn operations. History is stored in localStorage - again, nothing is sent server-side. All operations happen locally in your browser.
  • Cross-Browser Testing: Required when two browsers are used to simulate WebAuthn operations in victim and attacker browsers simultaneously. Since data needs to be shared across browsers, a backend component is required. In this case, keys, users, and history are stored server-side but protected with a unique key so only you can access the data. Do not use this server-side storage for real production passkeys or private accounts - only for testing. This setup enables scenarios like replacing the challenge in a passkey registration in the attacker browser with a challenge from the victim's browser to test if the challenge is correctly validated.
Load Test Vectors:
Test Vectors
Load and parse standardized test vectors and explore them with the attestation and assertion tools.
Client Capabilities
Keyboard Shortcuts
Shortcut Action
Current Limitations

Create Passkey

navigator.credentials.create({publicKey: {

Get Passkey

Conditional Mediation
navigator.credentials.get({publicKey: {

clientDataJSON

Decoded
B64URL
B64
HEX
SHA256

attestationObject

Load Key

Store Key

RP ID Hash

AAGUID

Decoded

authenticatorData

publicKey

B64URL DER
B64 DER
HEX DER

clientDataJSON

DECODED
B64URL
B64
HEX
SHA256

authenticatorData

RP ID Hash

DECODED

signature

Verify with Stored Key

Sign with Stored Key

Key Parser

Load Key

Store Key

JWK JSON
COSE B64URL
COSE B64
COSE HEX
PEM B64
DER B64URL

Key Storage

Generate Key

Update Credential ID

Delete Key

Stored Keys
Name CID (hex) CID (b64url) CID (b64) Public Key Private Key

User Storage

Add User

Delete User

Stored Users
RP ID Name Display Name User ID (hex) User ID (b64url) User ID (b64) Mode

Converters

STR
HEX
B64URL
B64

Interceptor

Request
Controls

Overview

Mode
Type
Origin
Cross Origin
Top Origin
Mediation

Actions

Modifications

Response

Settings

Storage Configuration

Choose how to store your keys and users data.

Storage Mode

History

Stored History
Timestamp Mode Type Status Origin Credential ID Key User Handle Modification Actions