Your identity key
Your Pearl ID is a BIP-86 key. Its identity is the tweaked keypath x-only pubkey — the same key that controls its PRL address. Sites see your prl1… address as your username.
Identity
Sign a login challenge
A site that wants you to log in shows you a domain and a challenge. Paste them here, check the domain is really the site you mean to log in to, and sign. What you hand the site is a credential anyone can verify — and it expires.
Confirm what you're signing
Signed credential fingerprint
Hand this JSON to the site (paste it into their login box). It proves you hold the key for and nothing else.
Verify a credential
Standalone verifier — no key needed. Paste any Pearl ID credential: the page recomputes the canonical bytes, checks the 64-bit fingerprint, verifies the BIP-340 signature, recomputes the address from the key (the username really is the key), checks the domain binding and expiry, and rules VALID / INVALID.
Verdict:
Credential id:
Relying-party integration
Add "Sign in with Pearl" to your site in an afternoon. The protocol is four steps; the verifier is twenty lines.
The protocol
- Issue: generate 32 random bytes (hex), store them server-side as single-use with a ≤5-minute TTL, and show the user your domain + the challenge.
- Collect: the user returns a
prl-idcredential (this page's Sign-in tab produces one). - Verify: run the snippet below. It checks the signature, the address↔key binding, the domain, and the expiry.
- Consume: check the credential's challenge equals the one you issued, then burn it — never accept the same challenge twice. The
addressfield is the user's account id.
Verifier snippet (needs pearl-id.bundle.js → window.PearlID)
Issuer snippet (node)
Security notes
- Challenges MUST be ≥128-bit CSPRNG output, single-use, and bound to one domain. Reused challenges are replayable logins.
- Keep credential lifetimes in minutes. A leaked credential is a bearer token until
expires_at. - Always pass
expectedDomain— a credential for another domain must not log anyone in here. - Signatures prove key control, not personhood. If you need humans, that's your problem to solve — the math won't.
- Phishing: only ever sign challenges on the domain you intend to log in to. This page shows the domain big before signing for exactly that reason.