Phone signs, browser asks
Extension pairing
Scan once to pair your phone with the browser extension; every signature request is relayed and approved on-device.
The browser extension never holds a private key. Instead, it pairs with your phone once, and from then on relays each signing request to the phone wallet for approval. This page describes that handshake so you understand what "the extension is connected" actually means.
Pairing, once
- The extension shows a pairing code or QR that encodes a
dogesoft://pair?session=…link. - Scanning it with the wallet app opens that link, which the app parses for a session ID and a relay address.
- The phone wallet registers itself against that session (its address and public key) with the pairing relay — a small, stateless service that exists only to hand messages between the two devices.
- The extension and the phone are now paired for that session. No key material crosses the wire — only the registration and, later, signing requests and their signed results.
Every signature, after that
Once paired, a request from a connected web page — connect(),
signMessage(), sendDoge(), and so on —
flows like this:
- The extension's background script posts the request to the pairing relay, tagged with a request ID.
- The phone wallet polls the relay for pending requests on its session — starting around every 3 seconds, backing off toward roughly 12 seconds during quiet stretches with nothing pending.
- The phone shows the user exactly what's being requested. Nothing signs without an explicit tap.
- On approval, the phone signs locally and posts the signed result back to the relay under that request ID.
- The extension, which has been polling for that same request ID, picks up the result and resolves your page's promise.
This is a pure request/response relay over polling, not a persistent socket — which is also why the provider's 60-second request timeout exists: if the phone is offline or the app is backgrounded and never polls, the request simply times out instead of hanging forever.
What the relay can and can't see
The pairing relay only ever sees requests and already-signed results in transit between two paired
devices — it holds no keys and cannot itself authorize a signature. From a web page's point of view, none
of this is visible; you call window.dogesoft exactly as described in
Quickstart & connect, and whether the approving
device is the same browser or a paired phone is an implementation detail underneath it.