Verify a signed document
Drop the signed PDF and its proof file (proof.json). Everything is checked here, in your
browser: the files are not uploaded anywhere and this page makes no network requests, so you can also save it and
use it offline.
What this proves, and what it does not
The proof is tamper-evident and independently verifiable: if a single byte of the PDF changes, its SHA-256 fingerprint no longer matches, and anyone can check that without contacting Gewape. It shows the document existed in exactly this form no later than the stated times. It does not stop anyone editing a copy of the file, and on its own it does not identify who signed: that is what the audit trail and completion certificate are for.
Checks this page cannot do
A web page with no network access cannot read the Bitcoin blockchain or fully validate certificates. It shows the block height and the merkle root that block must have: compare them on any block explorer you trust, or run the offline verifier, which also checks the timestamp signature:
python3 verify.py signed.pdf proof.json --ca gewapesign-tsa-ca.pem
Download the offline verifier, verify.py (one Python file, standard library and
the openssl command), and the timestamp CA certificate,
gewapesign-tsa-ca.pem. Before you trust the certificate, check that its
SHA-256 fingerprint is exactly:
CD:C7:42:99:D3:50:45:24:CF:99:9C:D7:26:75:8A:46: 91:56:BC:58:87:44:77:68:87:9F:8C:C5:A8:D2:95:D0
openssl x509 -in gewapesign-tsa-ca.pem -noout -fingerprint -sha256 prints it. The CA's private key
is kept offline and is never on a Gewape server.