Check a signed report
Someone handed you a signed report from our image check. Here is what it says, and how to test it against the file.
Paste or open the report file. Its signature is checked here, in your browser, against the keys this site publishes. You can also add the image the report is about — the fingerprint is compared and the whole check runs again, so you get your own answer beside the recorded one.
The report records what our checker reported in someone's browser. Qamera never received the file and did not confirm the result, which is why re-running the check matters.
A file ending in .jws, or its contents pasted above.
What a signed report does and does not establish
It fixes one answer to one file, at one moment, under a named checker version and trust list, in a form nobody can edit afterwards. It does not establish that we inspected the file: we never received it, and the findings are what a browser reported.
Keys are rotated over time and every key we have ever used stays published. A report signed by a retired key still checks out — an expiring record would be no record at all.
You do not have to use this page. The report is a standard JWS: any JOSE library can check it offline against the keys published at: /.well-known/jwks.json
Our signing keys, printed here on purpose
These are the public halves of every key we have ever signed a report with. They are also served at the address above, but a report is meant to be checkable for years — and an address only works while this site does. Printed here, a copy travels with anything you save or archive.
{
"keys": [
{
"kty": "EC",
"crv": "P-256",
"x": "KePO_zGTvDsyern7fHCvCRr3XiLVdwTXMQpE140RCCw",
"y": "m3UTes6FfCYXcimE7oDvcIz4rS4ebi2NslXt4qTTWO8",
"kid": "ZCNbFBy3RRPmNjjYmGuy3tVMh2d-ec9We0vycTykDDI",
"use": "sig",
"alg": "ES256"
}
]
}To check a report yourself: decode its header, take the kid, find the matching key below, and verify the ES256 signature over the first two segments. The fingerprint in the payload is a plain SHA-256 of the file, so sha256sum, certutil -hashfile or Get-FileHash will reproduce it.
See also
The rest of the AI image labelling set.
- How to label AI images in a shopWhen a label is required, what exactly to write, and where to put it, channel by channel.
- Check how an image is markedRead what provenance markings an image file carries, in your own browser. The file is not sent anywhere.
- Put an AI label on a product photoSee the AI disclosure label on your own product photograph and download it as a transparent PNG, in your own browser. Nothing is uploaded.
- Mark an image as AI-generatedWrite an origin declaration into your own JPEG, in your own browser. The file is never uploaded.
- Check whether your photograph needs an AI labelAnswer a few questions about one photograph or video and see whether the AI Act asks for a visible label. Your answers stay in your browser.