Windows Signing Timestamps

De Windows sign-operatie kan een echte RFC3161-timestamp vragen via een synchrone applicatie-callback en de PDF pas publiceren na het authentiseren van de response

Signing-options

{"schemaVersion":1,"type":"sign","incremental":true,
 "existingField":true,"fieldName":"ApprovalOne",
 "pfxFile":"C:/keys/signer.pfx","pfxPassword":"password",
 "cades":true,"digestMethod":"SHA384","timestamp":true,
 "timestampURL":"https://tsa.example/service",
 "timestampTrustedCAFile":"C:/trust/tsa-roots.pem",
 "timestampTrustedCRLFile":"C:/trust/tsa-crls.pem",
 "requireTimestampRevocation":true}

timestamp defaultt naar false; een true-waarde vraagt de application transport-callback en een expliciete timestampTrustedCAFile met vertrouwde PEM-certificaat-roots

digestMethod kiest de echte document-CMS-digest en timestamp-imprint-algoritme uit SHA256, SHA384 of SHA512; de messageImprint hasht de echte CMS-signature-octets exact één keer

timestampTrustedCRLFile levert optioneel PEM CRL's; requireTimestampRevocation vraagt dat bestand en zet issuer- en certificaat-CRL-checks aan, inclusief ingetrokken certificaten en verlopen bewijzen

Trust-invoerbestanden blijven open met write sharing geweigerd tijdens het signeren en diens gecombineerde grootte is begrensd op een achtste van memoryBytes voordat OpenSSL ze laadt

Elk request bevat een verse cryptografische nonce en vraagt TSA-certificaten op; response-validatie authenticeert de request-nonce, imprint, complete CMS-signature, ESS signing-certificate-binding, certificaatketen en critical timestamp EKU

C ABI-transport

Geef hpdf_signing_operation_v1 door aan hpdf_document_execute_json_v1, zet operation.struct_size op sizeof(hpdf_signing_operation_v1) en lever timestamp_transport en timestamp_user_data aan

Het operation-prefix behoudt de bestaande hpdf_operation_v1-layout en ABI-versie; gewone operaties blijven de originele structuur gebruiken

De callback ontvangt de complete DER TimeStampReq en een geleende response_io; schrijf de complete DER TimeStampResp via response_io.write en geef een hpdf_status terug

De callback draait op de aanroepende thread, en request- en response-IO-pointers blijven alleen geldig tijdens die invocatie; de applicatie stuurt netwerktransport, authenticatie, timeout en verbindingsbeleid

response_io.is_cancelled pollt de operation-invoer-, uitvoer- en resultaat-annulerings-callbacks; response-writes handhaven een maximum van 16 MiB daarnaast afgeklemd op een achtste van memoryBytes vóór het kopiëren van callback-geheugen

Een response-write- of annuleringsfout blijft actief voor de operatie zelfs wanneer de callback daarna succes teruggeeft; gefaalde responses kunnen geen PDF-bytes publiceren

Pascal service-entry

THPDFJobProcessor.ExecuteLoadedSigningOperation accepteert het geladen document, operation JSON-object, uitvoerstream, checkpoint, THPDFHeadlessTimestampTransport-callback en opaque callback-context

Het Pascal-transport ontvangt request-DER en geeft response-DER terug; nested synchrone signing herstelt de omvattende callback-context wanneer de innerlijke operatie terugkeert

Seed-waarden en provenance

Een vereiste SV TimeStamp-constraint wordt vervuld door een echt geauthenticeerde response; wanneer het vereiste TimeStamp-dictionary een URL specificeert, moet timestampURL met die waarde overeenkomen

timestampURL is door de applicatie geclaimde transport-provenance; de gedeclareerde URL vergelijken legt geen HTTPS-serveridentiteit vast, en de applicatie moet diens gekozen endpoint authentiseren

Standalone file-jobs zonder een applicatie-callback kunnen geen timestamp-request uitvoeren; alleen een URL-string kan een vereiste timestamp niet vervullen

Zie incrementele PFX-signing en native RFC3161-verificatie