Skip to main content

Signature Verification

Every key/check success is signed with the project’s Ed25519 private key. The client verifies the signature before running the script. This is the layer that makes fake responses detectable.

Signed payload

The signature is computed over sha256 of the following, joined with |:
Where:
  • nonce_echo — the nonce_echo from the response (must equal the nonce you sent).
  • hwid — the hwid you sent in the request (not from the response).
  • expiresAtUnixexpires_at as Unix seconds, or 0 when expires_at is null.
  • project_id — the project_id from the response.

Verification steps

  1. Confirm nonce_echo matches the nonce you sent. If not, reject.
  2. Build the payload string exactly as above.
  3. hash = sha256(payload)
  4. valid = ed25519_verify(public_key, base64decode(signature), hash)
  5. If valid is false, do not run the script.
The public key is raw Ed25519, not a JWS key. Decode the base64 signature into 64 raw bytes.

Why this works

The signature binds the response to the specific nonce, hwid, and expiry. Replaying an old response fails because the nonce no longer matches. Editing the response fields (expiry, key) invalidates the signature. A malicious server cannot forge responses because only the server holds the private key.

Example (pseudo-code)