PDFium Delphi Component Docs

FPdfTsaFpc Unité

Module: FPdfTsaFpc
Backend de transport d’horodatage libcurl de Free Pascal qui envoie une requête RFC 3161 à l’URL d’une autorité d’horodatage et renvoie les octets de la réponse

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 est le transport d’horodatage non Windows consommé par FPdfTsa, le pendant de FPdfTsaWin. Il envoie en POST un TimeStampReq encodé à l’URL d’une autorité d’horodatage en HTTP ou HTTPS et collecte les octets du TimeStampResp ; la construction et l’analyse du DER restent dans FPdfTsa

Le transport est libcurl, chargé à l’exécution plutôt que lié, si bien que la bibliothèque n’est pas une dépendance de build et que son absence est signalée au lieu de faire échouer le chargement. Passer par libcurl garde aussi la pile TLS hors de cette unité : libcurl choisit son propre backend et valide la chaîne du serveur par rapport au magasin de confiance de la plateforme

TsaHttpAvailable signale si libcurl a été trouvé et les points d’entrée requis résolus ; TsaHttpBackendName nomme le backend résolu ; PostTimeStampQuery effectue l’échange HTTP et renvoie False (au lieu de lever) à tout échec de transport, laissant l’appelant ajouter son propre contexte et sa propre politique de réessai

Toute la section interface est compilée sous FPC uniquement. Sous Delphi, l’unité est vide, car Delphi cible Windows et FPdfTsaWin est le backend là-bas. L’unité se compile quand même sur chaque cible FPC y compris Windows, où FPdfTsa préfère le backend WinHttp et où rien n’appelle celle-ci

Les types de handle libcurl, les liaisons de points d’entrée et les constantes d’options vivent dans la section implementation ; l’interface n’expose que la vérification de disponibilité, le nom du backend, l’aide d’envoi et les trois limites de transport

Functions

FunctionDescription
TsaHttpAvailableRenvoie True lorsque libcurl a été localisé et que chaque point d’entrée requis est résolu à l’exécution
TsaHttpBackendNameRenvoie le nom du backend résolu, libcurl lorsque le transport est utilisable et une chaîne vide sinon
PostTimeStampQueryEnvoie en POST ReqDer à TsaUrl et remplit RespDer avec le corps brut du TimeStampResp ; renvoie False à tout échec de transport

Constants

ConstantValueDescription
TsaMaxResponseBytes4 * 1024 * 1024Borne supérieure du corps TimeStampResp accepté ; une réponse plus grande abandonne le transfert au lieu de faire croître le tampon sans limite. Maintenue en cohérence avec la même constante dans FPdfTsaWin
TsaRequestTimeoutSeconds30Budget de la requête entière en secondes, aligné sur les délais WinHttp pour qu’une TSA morte ne puisse pas bloquer un thread de signature sur l’une ou l’autre plateforme
TsaConnectTimeoutSeconds30Budget de connexion en secondes, appliqué avant le budget de la requête

Remarks

See Also

FPdfTsa, FPdfTsaWin, FPdfCms, TPdf.SignPades