function TsaHttpAvailable: Boolean;
function TsaHttpBackendName: string;
function PostTimeStampQuery(const TsaUrl: string; const ReqDer: TBytes; out RespDer: TBytes): Boolean;
FPdfTsa vybírá tento transport pro Delphi na platformách POSIX. Implementace používá System.Net.HttpClient pro skutečný HTTP nebo HTTPS POST s Content-Type: application/timestamp-query a Accept: application/timestamp-reply
Facade deleguje na FPdfTsaWin ve Windows a FPdfTsaFpc pro nativní Free Pascal. Díky těmto větvím starší balíčky Delphi pro Windows nemají závislost na HTTP implementaci POSIX
Dostupnost transportu popisuje vybraný HTTP backend. Neprokazuje dosažitelnost TSA, důvěryhodný certifikát podepisujícího ani platnost timestampu
| Funkce | Popis |
|---|---|
TsaHttpAvailable | Hlásí, zda je zvolený platformní HTTP transport dostupný |
TsaHttpBackendName | Vrací System.Net.HttpClient pro Delphi POSIX nebo název hlášený delegovaným transportem Windows či Free Pascal |
PostTimeStampQuery | Odešle DER dotaz volajícího na TsaUrl, přijme neprázdnou odpověď 2xx v limitech a vrátí její bajty v RespDer; neúspěšný požadavek vymaže výstup a vrátí False |
Transport Delphi omezuje těla požadavků i odpovědí na 4 MiB a URL na 8192 kódových jednotek řetězce. Přijímá jen URL HTTP a HTTPS a přesměrování jsou vypnutá
Timeout spojení, odesílání i odpovědi je nastaven na 30000 milisekund. Deadline worker po celkovém rozpočtu 30000 milisekund požádá o zrušení nativního HTTP požadavku; zápisy do omezeného streamu odpovědi i kontrola dokončené odpovědi také odmítají překročení uplynulého času. Jak rychle se nativní zrušení projeví, určuje HTTP implementace operačního systému
HTTPS zachovává platformní kontroly certifikátu a hostname. Úspěšný POST znamená jen úspěch transportu: FPdfTsa stále parsuje odpověď RFC 3161, kontroluje požadovaný imprint a nonce a extrahuje token. Validace důvěry PAdES zvlášť ověřuje podpis CMS původního tokenu, řetězec certifikátů, důkazy odvolání a timestamp roli
Odpověď 2xx může obsahovat DER odmítnutí od TSA, které parser vyšší úrovně nahlásí jako neúspěšný požadavek timestamp