PDFium Delphi Component Docs

FPdfTsaFpc Unit

Unit: FPdfTsaFpc
Free-Pascal-libcurl-Transport-Backend für Zeitstempel, das eine RFC-3161-Anforderung an eine Zeitstempelautoritäts-URL postet und die Antwortbytes zurückgibt

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;

Beschreibung

FPdfTsaFpc ist das Nicht-Windows-Zeitstempel-Transportstück, das FPdfTsa konsumiert - das Gegenstück zu FPdfTsaWin. Es POSTet einen kodierten TimeStampReq über HTTP oder HTTPS an eine Zeitstempelautoritäts-URL und sammelt die TimeStampResp-Bytes; den DER aufzubauen und zu parsen, bleibt in FPdfTsa

Der Transport ist libcurl, zur Laufzeit gebunden statt gelinkt, daher ist die Bibliothek keine Build-Zeit-Abhängigkeit, und ihr Fehlen wird gemeldet, statt das Laden scheitern zu lassen. Der Weg über libcurl hält auch den TLS-Stack aus dieser Unit heraus: libcurl wählt sein eigenes Backend und validiert die Serverkette gegen den Plattform-Trust Store

TsaHttpAvailable meldet, ob libcurl gefunden wurde und die erforderlichen Einstiegspunkte aufgelöst sind; TsaHttpBackendName nennt den aufgelösten Backend-Namen; PostTimeStampQuery führt den HTTP-Austausch durch und gibt bei jedem Transportfehler False zurück (statt eine Exception zu werfen), sodass der Aufrufer eigenen Kontext und eigene Wiederholungslogik ergänzen kann

Der gesamte Interface-Abschnitt wird nur unter FPC kompiliert. Unter Delphi ist die Unit leer, denn Delphi zielt auf Windows, und dort ist FPdfTsaWin das Backend. Die Unit kompiliert weiterhin für jedes FPC-Ziel inklusive Windows, wo FPdfTsa das WinHttp-Backend bevorzugt und nichts in diese Unit aufruft

Die libcurl-Handle-Typen, Einstiegspunkt-Bindungen und Optionskonstanten liegen im Implementation-Abschnitt; das Interface stellt nur die Verfügbarkeitsprüfung, den Backend-Namen, den Post-Helfer und die drei Transportgrenzen bereit

Funktionen

FunktionBeschreibung
TsaHttpAvailableGibt True zurück, wenn libcurl gefunden wurde und jeder erforderliche Einstiegspunkt zur Laufzeit aufgelöst wurde
TsaHttpBackendNameGibt den Namen des aufgelösten Backends zurück, libcurl, wenn der Transport nutzbar ist, sonst einen leeren String
PostTimeStampQueryPOSTet ReqDer an TsaUrl und füllt RespDer mit dem rohen TimeStampResp-Body; gibt bei Transportfehlern False zurück

Konstanten

KonstanteWertBeschreibung
TsaMaxResponseBytes4 * 1024 * 1024Obergrenze für den akzeptierten TimeStampResp-Body; eine größere Antwort bricht die Übertragung ab, statt den Puffer unbegrenzt wachsen zu lassen. Wird mit derselben Konstante in FPdfTsaWin synchron gehalten
TsaRequestTimeoutSeconds30Gesamtbudget für die Anforderung in Sekunden, passend zu den WinHttp-Timeouts, damit eine tote TSA auf keiner Plattform einen Signatur-Thread blockieren kann
TsaConnectTimeoutSeconds30Verbindungsbudget in Sekunden, wird vor dem Anforderungsbudget angewendet

Hinweise

Siehe auch

FPdfTsa, FPdfTsaWin, FPdfCms, TPdf.SignPades