PDF Signature Checker
Inspect digital signatures in PDF files — signer, certificate, signing time, cryptographic integrity. All client-side.
PDF Signature Checker Tool
How to use the PDF signature checker
Drop or pick a PDF
Drag any PDF onto the drop zone or click to file-pick. The tool reads the file directly in your browser — no upload to any server.
Review the signature summary
The summary panel shows how many signatures were found, how many verify, and the file size. Most signed PDFs have one signature; multi-party contracts can have several.
Inspect each signature card
Each signature gets a dark detail card showing signer common name and organisation, certificate issuer, certificate validity period, the signature's ByteRange (what part of the PDF is covered), signing time if embedded, and the digest algorithm used.
Read the limitations honestly
A green Signature verifies means three checks passed: the signed bytes still hash to the value the signer signed, the signer's RSA signature over that value verifies with the public key in their certificate, and the signature covers the whole file. It does not mean the certificate is from a trusted CA, that the certificate is still valid at the current date, or that the signature is legally binding. Use professional tooling for those.
PDF signatures — what they prove and what they don't
A digital signature inside a PDF is a piece of cryptographic data embedded in the PDF structure that proves two things: (1) the document hasn't been modified since it was signed, and (2) the signer was in possession of a specific private key at the time of signing. It does NOT prove the signer's real-world identity unless you also trust the certificate authority that issued that signer's certificate. The distinction between cryptographic validity and legal validity is what most users don't realise — and it's the source of every "but this PDF is signed!" misunderstanding in real-world contract disputes.
What the PDF actually contains
Inside a signed PDF, the signature lives in a dictionary referenced by the document's AcroForm. The key fields are /ByteRange (which bytes of the PDF are covered by the signature — typically everything except the signature blob itself), /Contents (a hex-encoded PKCS#7/CMS structure containing the actual cryptographic signature plus the signer's certificate), and /Filter + /SubFilter (which signature handler created the signature — most commonly adbe.pkcs7.detached for Adobe-flavoured signatures). The tool above reads these fields directly from the file bytes, parses the CMS structure with node-forge, recomputes the hash of the covered bytes with Web Crypto, and verifies the signature with the signer certificate's public key.
The PAdES levels
The European standard ETSI EN 319 142-1 V1.1.1 (April 2016) (PAdES — PDF Advanced Electronic Signatures) defines four baseline levels: B-B (basic — proves "someone with this key signed it"), B-T (basic + trusted timestamp from a TSA — proves "signed before this date"), B-LT (long-term — embeds all certificate chain info needed for future validation), and B-LTA (long-term with archive timestamp — for signatures that need to remain verifiable decades into the future). Trust lists — Adobe's AATL, the EU Trusted Lists — decide whether a certificate is trusted at all. None of that is checked here: this tool proves that a key signed these bytes, not that the key belongs to someone you should trust.
The byte-range trick — why "signed-then-edited" is detectable
The /ByteRange entry tells the verifier exactly which byte positions of the PDF are covered. Typically it's the whole file MINUS the bytes of the signature blob itself. The verifier hashes those bytes, then checks the hash against what the signature claims. If anyone modifies any byte in the covered range — including just adding a single space — the hash differs and the signature is invalid. The subtler case: new content appended after signing, as an incremental update. The original signature still verifies, because the bytes it covers are unchanged — but it no longer covers the end of the file. This tool reports exactly that, with the number of uncovered bytes.
ASEAN context — Singpass, MyDigital ID, PSrE
Singapore's national digital identity, Singpass, offers Sign with Singpass for signing documents digitally; Malaysia has MyDigital ID; in Indonesia, licensed certification providers (PSrE, Penyelenggara Sertifikasi Elektronik) issue signing certificates. Which certificates a court or counterparty will accept is a legal question that varies by country and by contract, and nothing in a PDF's bytes answers it — check the contract's governing-law clause before relying on a signature for anything important.
A signature that verifies can still be worthless, and one that verifies can still have been added to
PDF signatures use PKCS#7 / CMS (Cryptographic Message Syntax) embedded as hex-encoded bytes in the /Contents field of a signature dictionary — the same standard used in S/MIME email signatures.
The /ByteRange entry specifies exactly which bytes of the PDF are covered by the signature. Typically everything EXCEPT the signature blob itself — usually written as a 4-integer array.
PAdES (ETSI EN 319 142-1, 2016) defines four baseline levels — B-B, B-T, B-LT, B-LTA — each adding more long-term validation material.
The signed attributes are what the key signs; the document hash is one of them. Checking the hash without checking the signature proves nothing — anyone can recompute a hash.
Cryptographic validity ≠ legal validity. A signature can pass mathematical verification while the certificate has expired, been revoked, or come from an untrusted issuer in your jurisdiction.
The signer is identified by the issuer and serial number in the signature, not by position — the first certificate embedded is often a CA, not the signer.
"Signed then added to" is common and legitimate — a second signer, a form fill — but it means the first signature no longer covers the whole file, and this tool says so.
Embedded timestamps (PAdES B-T) come from a Time Stamping Authority via RFC 3161 — a separate cryptographic protocol proving the signature existed before a specific time.
The signing time shown is the signer's own claim, from the signed attributes; only a timestamp from a Time Stamping Authority (PAdES B-T) proves when.
PDF signatures support SHA-1, SHA-256, SHA-384, and SHA-512 digest algorithms. SHA-1 is no longer considered collision-resistant, so new signatures should use SHA-256 or stronger; this tool marks SHA-1 as deprecated.
Frequently asked questions
/SubFilter — usually adbe.pkcs7.detached or, for PAdES, ETSI.CAdES.detached — names the format, and this tool shows the file's real value.adbe.x509.rsa_sha1), which it reports as unreadable — try Adobe Acrobat Reader for those.Method & sources
How it computes
Finds each signature dictionary by its /ByteRange, hashes the covered bytes with Web Crypto, and checks three things: the hash equals the signed messageDigest; the RSA (PKCS#1 v1.5) signature over the DER-encoded signed attributes verifies with the certificate named by issuer and serial; and the range covers the whole file except /Contents. ECDSA and RSA-PSS are reported as unverifiable.
What this tool implements
- Until this review the page called a signature "Crypto-valid" when the hash matched messageDigest, never checking the signature itself: a PDF edited, re-hashed and given a rewritten messageDigest passed. The kernel's test suite builds exactly that forgery and requires it to fail.
- It also assumed the signer was the first embedded certificate, never flagged bytes added after signing, and printed "adbe.pkcs7.detached (assumed)" for every file; the real /Filter and /SubFilter are now read.
- ETSI EN 319 142-1 V1.1.1 (April 2016) defines the PAdES baseline levels B-B, B-T, B-LT and B-LTA; RFC 5652 defines CMS, RFC 2315 PKCS #7 v1.5, RFC 3161 time-stamping.
Sources
- Housley R. RFC 5652: Cryptographic Message Syntax (CMS). 2009. https://www.rfc-editor.org/rfc/rfc5652.html
- Kaliski B. RFC 2315: PKCS #7: Cryptographic Message Syntax Version 1.5. 1998. https://www.rfc-editor.org/rfc/rfc2315.html
- ETSI. EN 319 142-1 V1.1.1 (2016-04): PAdES digital signatures — Part 1: Building blocks and PAdES baseline signatures. https://www.etsi.org/deliver/etsi_en/319100_319199/31914201/01.01…
- ISO. ISO 32000-1:2008, Portable document format — Part 1: PDF 1.7 (12.8 Digital signatures). https://www.iso.org/standard/51502.html
Pick up where you left off
Stored only in this browser — never sent to our servers.