PDFium Delphi Component Docs

Unidad FPdfTsaFpc

Unidad: FPdfTsaFpc
Backend de transporte de marcas de tiempo libcurl de Free Pascal que envía por POST una solicitud RFC 3161 a la URL de una autoridad de sellado de tiempo y devuelve los bytes de la respuesta

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 es el transporte de marcas de tiempo para entornos que no son Windows que consume FPdfTsa, el homólogo de FPdfTsaWin. Envía por POST un TimeStampReq codificado a la URL de una autoridad de sellado de tiempo por HTTP o HTTPS y recoge los bytes del TimeStampResp; construir y analizar el DER queda en FPdfTsa

El transporte es libcurl, vinculada en tiempo de ejecución en lugar de vincularse estáticamente, de modo que la biblioteca no es una dependencia de compilación y su ausencia se informa en lugar de hacer fallar la carga. Pasar por libcurl mantiene además fuera de esta unidad la pila TLS: libcurl elige su propio backend y valida la cadena del servidor contra el almacén de confianza de la plataforma

TsaHttpAvailable informa de si libcurl se encontró y los puntos de entrada necesarios se resolvieron; TsaHttpBackendName nombra el backend resuelto; PostTimeStampQuery realiza el intercambio HTTP y devuelve False (en lugar de lanzar una excepción) ante cualquier fallo de transporte, dejando que quien llama añada su propio contexto y su propia política de reintentos

Toda la sección de interfaz se compila solo bajo FPC. Bajo Delphi la unidad está vacía, porque Delphi apunta a Windows y allí el backend es FPdfTsaWin. La unidad sigue compilando en todos los destinos FPC, incluido Windows, donde FPdfTsa prefiere el backend WinHttp y nada llama a esta

Los tipos de identificadores de libcurl, los enlaces de los puntos de entrada y las constantes de opciones viven en la sección de implementación; la interfaz expone solo la comprobación de disponibilidad, el nombre del backend, el ayudante de POST y los tres límites de transporte

Functions

FunciónDescripción
TsaHttpAvailableDevuelve True cuando libcurl se localizó y todos los puntos de entrada necesarios se resolvieron en tiempo de ejecución
TsaHttpBackendNameDevuelve el nombre del backend resuelto, libcurl cuando el transporte es utilizable y una cadena vacía en caso contrario
PostTimeStampQueryEnvía por POST ReqDer a TsaUrl y llena RespDer con el cuerpo bruto del TimeStampResp; devuelve False ante un fallo de transporte

Constants

ConstanteValorDescripción
TsaMaxResponseBytes4 * 1024 * 1024Límite superior del cuerpo de TimeStampResp aceptado; una respuesta mayor aborta la transferencia en lugar de hacer crecer el búfer sin límite. Se mantiene sincronizada con la misma constante de FPdfTsaWin
TsaRequestTimeoutSeconds30Presupuesto de la solicitud completa en segundos, a juego con los timeouts de WinHttp para que una TSA muerta no pueda colgar un thread de firma en ninguna de las dos plataformas
TsaConnectTimeoutSeconds30Presupuesto de conexión en segundos, aplicado antes del presupuesto de la solicitud

Remarks

See Also

FPdfTsa, FPdfTsaWin, FPdfCms, TPdf.SignPades