DoConure

How do I check a signed file later?

Anyone can confirm a signed PDF is exactly what this service produced, without an API key, by uploading it at /verify — the page recomputes its SHA-256 and reports a match or "No match", in Italian or English (?lang=it or ?lang=en; by default the language of the signed request). To do the same thing from code, compute the hash yourself and compare it to signedSha256 from a GET on the envelope:

curl -F "document=@signed.pdf" https://your-host/verify

The same check, for a machine

No key either, and rate-limited per address. Ask for JSON:

GET /verify/{sha256}.json
POST /verify.json            (multipart, part "document")

200 OK
{
  "schema": 1,
  "queriedSha256": "ab12...",
  "found": true,
  "integrity": { "result": "matches_a_signed_file", "algorithm": "sha256" },
  "signature": { "level": "SES", "legalQualification": "simple_electronic_signature",
                 "status": "completed", "completedAt": "...", "signerCount": 2,
                 "signers": [{ "fullName": "Anna Rossi", "signedAt": "..." }], "isTest": false },
  "seal": { "requested": true, "padesProfile": "B-T", "applied": true },
  "timestamp": { "requested": true, "applied": true },
  "evidence": { "chain": { "intact": true, "events": 14 },
                "purged": false,
                "retention": "10 years from the envelope closing, unless the organisation chose a shorter period" }
}

It is deliberately never collapsed into one valid boolean. A matching hash says the file is exactly what was signed here; it does not say the seal was qualified (qualified is never asserted: no certificate in this deployment is declared qualified), that a timestamp is still verifiable, or that the signer was who they claimed. Each fact is its own field with its own words, and found: false carries the same reasons the page gives. An envelope whose evidence has been purged still answers from its recorded hash and says evidence.purged: true. A test envelope says isTest: true.

A single changed byte — a re-saved PDF, a copy run through another tool — is enough for this to stop matching. That is the point: it is tamper-evidence, not a checksum for its own sake.

Where the fingerprint comes from: What the signer sees.