PDFium Delphi Component Docs

FPdfTsaFpc Unità

Unità: FPdfTsaFpc
Backend di trasporto dei timestamp libcurl di Free Pascal che invia una richiesta RFC 3161 all'URL di una timestamp authority e restituisce i byte della risposta

Syntax

const
  TsaMaxResponseBytes = 4 * 1024 * 1024;
  TsaRequestTimeoutSeconds = 30;
  TsaConnectTimeoutSeconds = 30;

function TsaHttpAvailable: Boolean;
function TsaHttpBackendName: string;
function PostTimeStampQuery(const TsaUrl: string; const ReqDer: TBytes;
  out RespDer: TBytes): Boolean;

Description

FPdfTsaFpc è il trasporto dei timestamp non Windows consumato da FPdfTsa, la controparte di FPdfTsaWin. Invia in POST un TimeStampReq codificato all'URL di una timestamp authority via HTTP o HTTPS e raccoglie i byte del TimeStampResp; la costruzione e il parsing del DER restano in FPdfTsa

Il trasporto è libcurl, caricato a runtime anziché linkato, così la libreria non è una dipendenza in fase di build e la sua assenza viene riportata invece di far fallire il caricamento. Passare per libcurl tiene anche lo stack TLS fuori da questa unità: libcurl seleziona il proprio backend e valida la catena del server contro lo store di attendibilità della piattaforma

TsaHttpAvailable riporta se libcurl è stato trovato e gli entry point richiesti risolti; TsaHttpBackendName nomina il backend risolto; PostTimeStampQuery esegue lo scambio HTTP e restituisce False (anziché sollevare) a ogni fallimento del trasporto, lasciando al chiamante il contesto e la politica di retry

L'intera sezione interface viene compilata solo sotto FPC. Sotto Delphi l'unità è vuota, perché Delphi punta a Windows e lì il backend è FPdfTsaWin. L'unità compila comunque su ogni target FPC incluso Windows, dove FPdfTsa preferisce il backend WinHttp e nulla chiama questa

I tipi di handle libcurl, i binding degli entry point e le costanti delle opzioni vivono nella sezione implementation; l'interfaccia espone solo il controllo di disponibilità, il nome del backend, l'helper di invio e i tre limiti di trasporto

Functions

FunctionDescription
TsaHttpAvailableRestituisce True quando libcurl è stato individuato e ogni entry point richiesto è stato risolto a runtime
TsaHttpBackendNameRestituisce il nome del backend risolto, libcurl quando il trasporto è utilizzabile e una stringa vuota altrimenti
PostTimeStampQueryInvia in POST ReqDer a TsaUrl e riempie RespDer con il corpo raw del TimeStampResp; restituisce False a ogni fallimento del trasporto

Constants

ConstantValueDescription
TsaMaxResponseBytes4 * 1024 * 1024Limite superiore del corpo TimeStampResp accettato; una risposta più grande interrompe il trasferimento invece di far crescere il buffer senza limiti. Mantenuto sincronizzato con la stessa costante in FPdfTsaWin
TsaRequestTimeoutSeconds30Budget dell'intera richiesta in secondi, allineato ai timeout WinHttp perché una TSA morta non possa bloccare un thread di firma su entrambe le piattaforme
TsaConnectTimeoutSeconds30Budget di connessione in secondi, applicato prima del budget della richiesta

Remarks

See Also

FPdfTsa, FPdfTsaWin, FPdfCms, TPdf.SignPades