Windows Signing Timestamps

Windows sign operace může vyžádat skutečný RFC3161 timestamp přes synchronní aplikační callback a publikovat PDF až po autentizaci odpovědi

Podepisovací volby

{"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 defaultuje na false; hodnota true vyžaduje transportní callback aplikace i explicitní timestampTrustedCAFile obsahující důvěryhodné PEM certifikátové rooty

digestMethod vybere skutečný dokumentový CMS digest i algoritmus timestamp imprintu z SHA256, SHA384 či SHA512; messageImprint hasuje skutečné oktety CMS signatury přesně jednou

timestampTrustedCRLFile volitelně dodá PEM CRL; requireTimestampRevocation ten soubor vyžaduje a zapne kontroly CRL vystavitelů i certifikátů, tedy i revoked certifikáty i expirované důkazy

Trust vstupní soubory zůstávají během podepisování otevřené se zakázaným sdílením zápisu a jejich kombinovaná velikost je omezená na jednu osminu memoryBytes, dřív než je načte OpenSSL

Každá žádost obsahuje čerstvé kryptografické nonce a žádá certifikáty TSA; validace odpovědi autentizuje request nonce, imprint, kompletní CMS signaturu, vazbu ESS signing-certificate, certifikátový řetězec i kritické timestamp EKU

C ABI transport

Předejte hpdf_signing_operation_v1 do hpdf_document_execute_json_v1, nastavte operation.struct_size na sizeof(hpdf_signing_operation_v1) a dodávejte timestamp_transport a timestamp_user_data

Operation prefix si uchovává stávající rozložení i ABI verzi hpdf_operation_v1; běžné operace dál používají původní strukturu

Callback dostane kompletní DER TimeStampReq a vypůjčené response_io; kompletní DER TimeStampResp zapište přes response_io.write a vraťte hpdf_status

Callback běží na volajícím vlákně a IO pointery požadavku i odpovědi zůstávají platné jen během toho vyvolání; síťový transport, autentizaci, timeout i politiku spojení vlastní aplikace

response_io.is_cancelled dotazuje cancellation callbacky vstupu, výstupu i výsledku operace; zápisy odpovědí vynucují maximum 16 MiB, navíc oříznuté na jednu osminu memoryBytes, dřív než se zkopíruje paměť callbacku

Selhání zápisu odpovědi či zrušení zůstává pro operaci aktivní, i když callback poté vrátí úspěch; neúspěšné odpovědi nemohou publikovat PDF bajty

Pascal servisní vstup

THPDFJobProcessor.ExecuteLoadedSigningOperation přijme načtený dokument, JSON objekt operace, výstupní stream, checkpoint, callback THPDFHeadlessTimestampTransport i neprůhledný callback kontext

Pascal transport dostane DER žádosti a vrátí DER odpovědi; vnořené synchronní podepisování obnoví obklopující callback kontext, když se vnitřní operace vrátí

Seed hodnoty a provenience

Vyžadované omezení SV TimeStamp uspokojí skutečná autentizovaná odpověď; když vyžadovaný slovník TimeStamp specifikuje URL, timestampURL se musí shodovat s tou hodnotou

timestampURL je transportní provenience tvrzená aplikací; porovnání deklarované URL nezakládá identitu HTTPS serveru a aplikace si musí autentizovat vybraný endpoint

Samostatné file joby bez aplikačního callbacku žádost o timestamp provést nemohou; samotný řetězec URL nemůže uspokojit povinný timestamp

Viz inkrementální PFX podepisování a nativní RFC3161 verifikace