Enterprise Security
Industry-standard digital signatures with smart card authentication, ensuring maximum security and compliance.
Secure digital document signing with smart card integration. Professional-grade signing service supporting CAdES, PAdES, and XAdES formats.
Get StartedIndustry-standard digital signatures with smart card authentication, ensuring maximum security and compliance.
Comprehensive support for CAdES, PAdES, and XAdES signature formats for all document types.
Real-time document processing with instant status updates and immediate download.
One Windows installer for the desktop app. Auto-licensed to your machine on first launch.
PD Signer auto-detects your token's PKCS#11 driver. Akıllı kart vendors supported out of the box.
From the desktop UI, the browser extension, or any web app that calls the local HTTPS bridge on 127.0.0.1:51720.
Verify signatures against the live trusted-cert store and apply LTA archival timestamps for long-term validity.
Compatible with Windows 10 and later
Compatible with macOS 10.15 and later
Bridges any web app to your local PD Signer over 127.0.0.1:51720.
Since Chrome 73, browsers refuse to install self-hosted CRX files with CRX_REQUIRED_PROOF_MISSING unless they're distributed via the Chrome Web Store or enforced via enterprise policy. The reliable path on Chrome/Edge today is to download the ZIP below, unzip it, and use Developer mode → Load unpacked.
chrome://extensions (or edge://extensions) and turn on Developer mode.chrome://extensions (or edge://extensions) and turn on Developer mode.chrome://extensions (or edge://extensions) and turn on Developer mode.chrome://extensions (or edge://extensions) and turn on Developer mode.chrome://extensions (or edge://extensions) and turn on Developer mode.chrome://extensions (or edge://extensions) and turn on Developer mode.chrome://extensions (or edge://extensions) and turn on Developer mode.chrome://extensions (or edge://extensions) and turn on Developer mode.chrome://extensions (or edge://extensions) and turn on Developer mode.chrome://extensions (or edge://extensions) and turn on Developer mode.chrome://extensions (or edge://extensions) and turn on Developer mode.chrome://extensions (or edge://extensions) and turn on Developer mode.chrome://extensions (or edge://extensions) and turn on Developer mode.chrome://extensions (or edge://extensions) and turn on Developer mode.about:addons → ⚙ → Install Add-on From File…
about:addons → ⚙ → Install Add-on From File…
about:addons → ⚙ → Install Add-on From File…
about:addons → ⚙ → Install Add-on From File…
about:addons → ⚙ → Install Add-on From File…
about:addons → ⚙ → Install Add-on From File…
about:addons → ⚙ → Install Add-on From File…
about:addons → ⚙ → Install Add-on From File…
about:addons → ⚙ → Install Add-on From File…
about:addons → ⚙ → Install Add-on From File…
about:addons → ⚙ → Install Add-on From File…
about:addons → ⚙ → Install Add-on From File…
about:addons → ⚙ → Install Add-on From File…
ExtensionInstallForcelist via group policy. Most users should use the ZIP above.
ExtensionInstallForcelist via group policy. Most users should use the ZIP above.
ExtensionInstallForcelist via group policy. Most users should use the ZIP above.
ExtensionInstallForcelist via group policy. Most users should use the ZIP above.
ExtensionInstallForcelist via group policy. Most users should use the ZIP above.
ExtensionInstallForcelist via group policy. Most users should use the ZIP above.
ExtensionInstallForcelist via group policy. Most users should use the ZIP above.
ExtensionInstallForcelist via group policy. Most users should use the ZIP above.
ExtensionInstallForcelist via group policy. Most users should use the ZIP above.
ExtensionInstallForcelist via group policy. Most users should use the ZIP above.
ExtensionInstallForcelist via group policy. Most users should use the ZIP above.
ExtensionInstallForcelist via group policy. Most users should use the ZIP above.
ExtensionInstallForcelist via group policy. Most users should use the ZIP above.
Manuals, guides, and cross-platform files
PD Signer is a small Windows desktop app that talks to your smart card or USB token through a PKCS#11 driver and exposes a local HTTPS bridge so any browser can request signatures from it.
PD-Signer-Setup-X.Y.Z.exe. Windows will ask for administrator permission — required because the app installs to C:\Program Files\PD Signer.Plug your USB token or smart-card reader in before the first signing attempt. PD Signer detects the PKCS#11 driver installed by the token vendor:
C:\Windows\System32\akisp11.dllC:\Program Files\eTugra\eTugraPKCS11.dllC:\Windows\System32\eTPKCS11.dllC:\Program Files\e-Guven\egpkcs11.dllOpen Settings → PKCS#11 Library and click Scan to auto-detect, or Browse to point at a custom DLL. Once a driver is loaded, the Tokens tab lists every reader and shows whether a card is present.
When PD Signer starts for the first time it contacts pdsigner.com, sends a hash of this machine's fingerprint, and receives a license tied to it. The flow is automatic — you'll see the main window straight away.
If you ever need to enter a license key manually (e.g. you bought a commercial license), open Settings → License, paste the PDSGN-XXXX-XXXX-XXXX-XXXX key and click Activate. The same license can be re-validated from any other machine you own, up to the limit configured by the issuer.
document.pdf → document.signed.pdf).Open Verify and drop a signed PDF / XML / CAdES envelope on it. PD Signer parses the signature, walks the certificate chain against the bundled trusted roots, checks revocation (CRL / OCSP), and reports overall validity plus per-certificate detail.
The PD Signer Bridge extension is a thin layer that lets any web app talk to your local PD Signer over http://127.0.0.1:51720 without you having to install anything special per site.
pd-signer-bridge-X.Y.Z.zip from the Downloads page.chrome://extensions (or edge://extensions), turn on Developer mode, click Load unpacked and pick the unzipped folder.pd-signer-bridge-X.Y.Z.xpi..xpi into Firefox or open about:addons → ⚙ → Install Add-on From File….For developers building their own signing UI, two integration paths are supported:
http://127.0.0.1:51720/sign with a JSON body. Works on localhost dev sites without the extension.chrome.runtime.sendMessage(EXTENSION_ID, …). The extension brokers the request to the local PD Signer, which avoids mixed-content blocks on HTTPS production sites.A reference POST /sign request body:
{
"fileBase64": "JVBERi0xLj…",
"fileName": "contract.pdf",
"type": 1, // 0=CAdES, 1=PAdES, 2=XAdES
"profile": "B", // B | T | LT | LTA | LTA-TSA | C | X | XL
"pin": "0000",
"terminalIndex": 0
}
PD Signer polls pdsigner.com/updates.php every 15 seconds. When a new version is published, the in-app App Update screen shows the version, release notes, and a single Download and Install button. The installer verifies SHA-256 before applying, then restarts the app.
The Trusted Certificates screen pulls the latest list of root and intermediate certificates from the server, verifies each file's hash, and stores them under %APPDATA%\com.pdsigner\pd_signer\trusted\. These are used by the Verify flow.
PD Signer isn't running, or the HTTPS bridge is blocked. Open PD Signer manually; if Windows asks about firewall access, allow it. The bridge listens only on 127.0.0.1:51720 — it's not exposed to the network.
The PKCS#11 library can't see your card. Re-plug the token, then in Settings click Scan to re-detect. If that fails, the vendor driver isn't installed.
Another process is holding a session on the same slot. Close any other signing tool (browser tabs, e-imza apps) and try again.
An administrator may have suspended or revoked your license for this machine. Contact info@pdsigner.com with the machine fingerprint shown on the License screen.
Still stuck? Email info@pdsigner.com with steps to reproduce and we'll get back to you.
All public endpoints under pdsigner.com return HMAC-SHA256-signed JSON. The signature covers a canonical (alphabetically sorted) representation of the response without the signature field, so the client must recompute the canonical form before comparing.
Every response includes timestamp (RFC 3339 UTC) and signature (lowercase hex). Apps are expected to reject any reply where the signature doesn't match.
POST /license.php
License validation, activation and machine-bound auto-registration. Used by PD Signer at startup and on a periodic heartbeat.
{
"action": "auto-register", // "validate" | "activate" | "auto-register"
"licenseKey": "PDSGN-XXXX-XXXX-XXXX-XXXX",
"fingerprint": "sha256-hex",
"machineName": "PD-LAPTOP",
"osInfo": "Windows 10",
"appVersion": "0.2.0"
}
GET /updates.php?platform=windows&channel=stable¤t=X.Y.Z
Returns the latest active release for that platform / channel. available is true if current < latest. forceUpdate is true if current < minRequired. Apps download via ?download=ID, verify SHA-256, and apply the staged installer.
GET /trusted-certificates.php
Returns a signed manifest of trusted root and intermediate certificates. Each entry includes a SHA-256 fingerprint and a download URL. PD Signer hashes the downloaded bytes and rejects any file that doesn't match.
POST /upload-release.php auth
Bearer-token-protected upload of new release ZIPs (for self-update) plus optional installer EXE / extension ZIP / CRX / XPI (for the Downloads page). Rate-limited per IP. Server validates ZIP magic bytes and version regex.
Authorization: Bearer <release_upload_token> Content-Type: multipart/form-data version = 0.2.0 platform = windows channel = stable release_notes = … file = pd-signer-0.2.0-windows.zip setup = PD-Signer-Setup-0.2.0.exe (optional) extension_zip = pd-signer-bridge-1.0.0.zip (optional) extension_crx = pd-signer-bridge-1.0.0.crx (optional) extension_xpi = pd-signer-bridge-1.0.0.xpi (optional)
PD Signer itself exposes a local HTTP bridge on http://127.0.0.1:51720 with permissive CORS. Three endpoints:
GET /status — host + version + license summaryGET /terminals — connected PKCS#11 reader listPOST /sign — perform a signature (see next section)POST http://127.0.0.1:51720/sign
{
"fileBase64": "JVBERi0xLj…",
"fileName": "contract.pdf",
"type": 1, // 0=CAdES, 1=PAdES, 2=XAdES
"profile": "B", // B | T | LT | LTA | LTA-TSA | C | X | XL
"pin": "0000",
"terminalIndex": 0,
"digitKey": "",
"id": 0
}
Response: { success, data: { signedHash, signedFileName, digitKey } }. The local bridge refuses with HTTP 402 if no active license is loaded.
For technical support, licensing inquiries, or any questions about PDSigner, feel free to reach out to our team.
info@pdsigner.comMonday - Friday
9:00 AM - 6:00 PM (GMT+3)
Technical Support
License & Sales