Skip to content

Timestamping (TSA)

Timestamping adds cryptographic proof of exactly when a document was signed. This creates Long-Term Validation (LTV) that remains verifiable for decades, even after your digital certificate expires.

A timestamp is a digitally signed assertion from a trusted third party (Timestamp Authority or TSA) that certifies:

  1. The document existed at a specific moment
  2. The exact time down to the second
  3. Independent verification - not from your server

Think of it as a digital notary’s date stamp that can never be forged or disputed.


Without timestamps, several issues arise:

ProblemRiskExample
BackdatingSomeone claims document was signed earlierAntedating a contract
Expiration disputesUnclear if signed before deadlineInsurance claims
Certificate expirySignature invalid after cert expiresOld agreements
Time manipulationServer clock changesFraud attempts
BenefitHow Timestamps Help
Immutable proofThird-party certifies the exact moment
Long-term validityValid decades after certificate expires
Independent verificationNot dependent on your server
Non-repudiationSigner cannot claim different date
Regulatory complianceMeets strict archival requirements

LTV ensures signatures remain valid indefinitely:

Without LTVWith LTV (Timestamp)
Signature expires with certificateSignature valid forever
Must verify against expired certTimestamp proves signing date
Questionable after yearsHolds up in court decades later
Not suitable for archivesPerfect for long-term storage

Many regulations require or recommend timestamping:

RegulationTimestamping Requirement
eIDAS (EU)Required for Qualified Signatures
FDA 21 CFR Part 11Required for pharma records
HIPAARecommended for healthcare records
SOXRecommended for financial records
ISO 27001Best practice for compliance

In legal proceedings, timestamps provide:

  • Definitive proof of when signature occurred
  • Third-party validation (not self-asserted)
  • Cryptographic evidence that’s mathematically verifiable
  • Chain of custody for document timing

When WPsigner creates a timestamp:

1. Document Hash Created
└─ SHA-256 hash of the signed document
2. Timestamp Request Sent
└─ Hash sent to TSA server (not the document)
3. TSA Signs the Hash + Time
└─ TSA adds current time and digitally signs
4. Timestamp Response Returned
└─ Signed timestamp token received
5. Timestamp Embedded in PDF
└─ Token stored in document signature

Only the document hash - not the document itself.

SentNOT Sent
SHA-256 hash (32 bytes)Document content
Signer information
Any personal data

This means your documents remain completely private while still getting verified timestamps.

When someone verifies a timestamped document:

  1. Adobe extracts the timestamp token
  2. Verifies TSA’s digital signature
  3. Confirms the hash matches the document
  4. Displays the verified signing time

RFC 3161 is the Internet standard for trusted timestamping, published by the IETF. It defines:

  • Request/response format
  • Cryptographic requirements
  • Trust model
  • Implementation guidelines

WPsigner fully implements RFC 3161:

FeatureStatus
Standard request format✅ Compliant
SHA-256 hash algorithm✅ Supported
Nonce inclusion✅ Implemented
Certificate chain✅ Embedded
Response validation✅ Verified

  1. Go to WPsigner → More → Security or Settings → Security
  2. Find the Timestamping section
  3. Enable timestamping with the toggle
SettingDescriptionExample
Enable TimestampingTurn on/offOn
TSA URLTimestamp server addresshttps://freetsa.org/tsr
TSA UsernameIf authentication required(optional)
TSA PasswordIf authentication required(optional)
Hash AlgorithmHash type to useSHA-256

WPsigner comes pre-configured with FreeTSA.org:

TSA URL: https://freetsa.org/tsr
Authentication: None required
Hash: SHA-256

This works immediately with no configuration needed.


ProviderURLNotes
FreeTSA.orghttps://freetsa.org/tsrFree, reliable
DigiCerthttps://timestamp.digicert.comFree tier available
Sectigohttp://timestamp.sectigo.comFree
Applehttp://timestamp.apple.com/ts01Free

For higher volumes or SLA guarantees:

ProviderFeaturesPricing
DigiCertHigh availability, supportContact sales
GlobalSignEnterprise SLAContact sales
SwissSignSwiss privacy lawsContact sales
EntrustGovernment-gradeContact sales

Consider these factors:

FactorImportanceNotes
ReliabilityCriticalMust be available 24/7
SpeedImportantShould respond in < 1 second
TrustCriticalWell-known, established provider
LocationConsiderMay matter for data residency
CostVariableFree options available

[!TIP] For most users, FreeTSA.org or DigiCert’s free service is sufficient. Only consider paid services for enterprise volumes (1000+ documents/day) or strict SLA requirements.


  1. Go to WPsigner → More → Security
  2. Click Test Timestamp Server
  3. WPsigner sends a test request
  4. Result shows success or error message
  1. Create and sign a test document
  2. Download the completed PDF
  3. Open in Adobe Reader
  4. Click on the signature
  5. View signature details
  6. Check for “Timestamp” entry with time

In Adobe Reader, you’ll see:

Signature is VALID
- Signed by: Your Name
- Signing time: Jan 15, 2026 2:30:15 PM
- The signature includes an embedded timestamp ✅
- Timestamp verified by: FreeTSA

ScenarioSignature Status
Certificate valid, no timestamp✅ Valid until cert expires
Certificate expired, no timestamp⚠️ Validity unknown
Certificate valid, with timestamp✅ Valid
Certificate expired, with timestamp✅ Still valid (LTV)

With a timestamp, validity works like this:

  1. At signing time: Certificate was valid → timestamp records this
  2. Years later: Certificate has expired
  3. Verification: Timestamp proves cert was valid when signed
  4. Result: Signature still valid, indefinitely

This is why timestamps are essential for documents you need to keep for years.


Each document requires a round-trip to the TSA:

FactorImpact
TSA locationCloser = faster
Network latencyTypically 100-500ms
TSA loadVaries by provider
Your server locationAffects latency

For high-volume signing:

  1. Use a reliable TSA - Avoid slow or unreliable servers
  2. Consider location - Use geographically close TSA
  3. Background processing - Timestamp asynchronously if possible
  4. Caching - Not applicable (each doc needs unique timestamp)

Causes:

  • TSA server is down
  • Network connectivity issues
  • Incorrect TSA URL
  • Firewall blocking requests

Solutions:

  1. Test the TSA URL directly: curl -I https://freetsa.org/tsr
  2. Try a different TSA server
  3. Check firewall rules for outbound HTTPS
  4. Verify server has internet access

Causes:

  • TSA server misconfiguration
  • Response format error
  • Certificate chain issue

Solutions:

  1. Try a different TSA
  2. Update PHP OpenSSL extension
  3. Check PHP error logs for details

Causes:

  • Timestamping not enabled
  • TSA request failed silently
  • PDF generation issue

Solutions:

  1. Verify timestamping is enabled in settings
  2. Check that test timestamp works
  3. Review document generation logs

┌─────────────────────────────────────┐
│ Signed PDF │
│ ┌─────────────────────────────────┐ │
│ │ Digital Signature │ │
│ │ • Signed: [Server time] │ │
│ │ • Certificate valid until 2027 │ │
│ └─────────────────────────────────┘ │
│ │
│ ⚠️ In 2028: "Certificate expired, │
│ signature validity unknown" │
└─────────────────────────────────────┘
┌─────────────────────────────────────┐
│ Signed PDF with Timestamp │
│ ┌─────────────────────────────────┐ │
│ │ Digital Signature │ │
│ │ • Signed: Jan 15, 2026 2:30 PM │ │
│ │ • Certificate valid until 2027 │ │
│ │ ┌───────────────────────────┐ │ │
│ │ │ RFC 3161 Timestamp │ │ │
│ │ │ • Time: Jan 15, 2026 │ │ │
│ │ │ • TSA: FreeTSA.org │ │ │
│ │ │ • Hash verified ✓ │ │ │
│ │ └───────────────────────────┘ │ │
│ └─────────────────────────────────┘ │
│ │
│ ✅ In 2028 and beyond: "Signature │
│ valid. Timestamp verified." │
└─────────────────────────────────────┘

Section titled “Is timestamping required for legal validity?”

For basic e-signatures in the US, no. However, timestamps are required or recommended for:

  • European qualified signatures (eIDAS)
  • Pharmaceutical submissions (FDA)
  • Long-term archival documents
  • High-value contracts

Minimally. Typical overhead is 100-500ms per document. Users won’t notice this in the signing flow.

WPsigner will:

  1. Retry the request
  2. If still failing, complete signature without timestamp
  3. Log the failure for your review

You can enforce timestamps by enabling “Require Timestamp” in settings.

No. Timestamps must be applied at signing time. They prove when the signature was created - adding one later would defeat the purpose.