Countersign

Modded copies don't get a pass.

Countersign checks every copy of your Quest game, and the headset it runs on, before PlayFab or Photon let it in. Cloned APKs, copied custom ids and banned players are turned away at the door.

Countersign passCST1, 192 bytes
Game
3f9a 0c12 7be4 4d81 a2e6 5b07 c9f1 c21e
Player
8d02 4b19 e730 aa5c 0f61 93d2 1e48 77b1
Trust
Elevated, hardware key
Install
Store build, signature matches
Valid
10 minutes, renews by itself

signature 3045 0221 00c8 5e1f 9a33 07d4 b2c6 e11a 7f40 52b9 d8e3 6c0a 91f7 2d45 0b8e 3a6f 1c02 2000 f3a9 6d17 e8c2 4b50 0d9e 71a4 c63f 28b5 9e04 17da 5c80 e2b3 46f1

countersigned ✶ genuine copy ✶ genuine headset ✶

What it keeps out

Modded APKs

A modded build has to be re-signed with someone else's key. Countersign knows yours, so the copy gets no pass.

Copied custom ids

PlayFab accounts are made by the server, for genuine installs only. An id pulled out of a decompiled build opens nothing.

Banned players on a fresh install

A ban follows the headset through a reinstall, by ids only a genuine build can report, even if the player blocks Meta. Meta's own device bans go further once Meta approves your app.

Free currency and items

The client can make only the PlayFab calls you list. Anything that grants something runs as your own CloudScript.

One headset selling passes

A headset keeps only a few keys in play. Past that they knock each other out, and each way back takes a fresh proof from the real headset.

Leaked keyboxes

Countersign reads Google's revocation list every six hours. A key proved by a revoked certificate stops counting, even one that enrolled before the leak.

How a player gets in

  1. The headset proves itself

    The game makes a key inside the headset's secure hardware. Store builds add Meta's integrity check.

  2. Countersign checks the copy and the player

    Your build's signature, how far the headset can be trusted, and your ban list, every time.

  3. It signs a pass

    A ticket that lasts ten minutes and renews in the background while the player plays.

  4. Photon and PlayFab ask for it

    Rooms and accounts open only for a valid pass. A player you ban mid-match is removed from the room.

Pricing

Plans go by monthly active players: everyone who got a pass that month, across all your games. Every account starts on Free and upgrades from Billing.

PlanMonthly active playersGamesPriceAction
Free1002 games$0Start free
Starter1,0003 games$5 / month
Studio10,00010 games$20 / month

Made for the usual stack

Unity on Quest, PlayFab for accounts, Photon PUN 2 for rooms. The Unity package signs players in, renews passes and recovers from errors by itself, so there is no session code to write. Read the setup guide.

Your moderators work from your own Discord server: /ban, /unban and /player as slash commands, with a digest of refusals in a channel.