Staging environment — scans run from the server location, emails are not delivered.
Verify a report

Check a record without trusting us.

Every scan record carries a receipt signed with our Ed25519 key. If a file was changed after the scan, its hash won’t match the receipt; if the receipt was changed, the signature won’t verify.

Verify it yourself

The signed message is the receipt as canonical JSON: keys sorted, no spaces (separators , and :), UTF-8. The public key:

pyLFRvVMHCulHJYrB0Nqcki8isf323VXMb9yzs+0oaY=   (key id f421150cbab2bcd7)

With Python and the cryptography package:

import base64, json, urllib.request
from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PublicKey

data = json.load(urllib.request.urlopen("https://compliancescanner.io/api/verify/SCAN_ID"))
msg = json.dumps(data["receipt"], sort_keys=True, separators=(",", ":"), ensure_ascii=False).encode()
key = Ed25519PublicKey.from_public_bytes(base64.b64decode("pyLFRvVMHCulHJYrB0Nqcki8isf323VXMb9yzs+0oaY="))
key.verify(base64.b64decode(data["signature"]), msg)   # raises if anything was altered
print("valid")

Keep a copy of the public key with any record you file. If we ever rotate keys, old keys stay published with their validity dates.