PDFium Delphi Component Docs

Модуль FPdfTsaFpc

Модуль: FPdfTsaFpc
Транспортный бэкенд меток времени на libcurl для Free Pascal: отправляет запрос RFC 3161 на URL службы меток времени и возвращает байты ответа

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 — транспорт меток времени вне Windows, используемый FPdfTsa, аналог FPdfTsaWin. Он отправляет закодированный TimeStampReq методом POST на URL службы меток времени по HTTP или HTTPS и собирает байты TimeStampResp; построение и разбор DER остаются в FPdfTsa

Транспорт — libcurl, привязываемая во время выполнения, а не линкуемая, поэтому библиотека не является зависимостью сборки, а её отсутствие сообщается вместо провала загрузки. Прохождение через libcurl также оставляет стек TLS за пределами этого модуля: libcurl сама выбирает бэкенд и проверяет цепочку сервера по хранилищу доверия платформы

TsaHttpAvailable сообщает, найдена ли libcurl и разрешены ли требуемые точки входа; TsaHttpBackendName называет разрешённый бэкенд; PostTimeStampQuery выполняет HTTP-обмен и возвращает False (вместо того чтобы возбуждать исключение) при любой ошибке транспорта, позволяя вызывающему коду добавить собственный контекст и политику повторов

Вся секция интерфейса компилируется только под FPC. Под Delphi модуль пуст, потому что Delphi нацелен на Windows и бэкенд там — FPdfTsaWin. Модуль по-прежнему компилируется для любой цели FPC, включая Windows, где FPdfTsa предпочитает бэкенд WinHttp и ничего не вызывает в этот

Типы дескрипторов libcurl, привязки точек входа и константы опций живут в секции реализации; интерфейс открывает только проверку доступности, имя бэкенда, помощник отправки и три транспортных предела

Functions

FunctionDescription
TsaHttpAvailableВозвращает True, когда libcurl обнаружена и все требуемые точки входа разрешены во время выполнения
TsaHttpBackendNameВозвращает имя разрешённого бэкенда, libcurl, когда транспорт пригоден, и пустую строку в противном случае
PostTimeStampQueryОтправляет ReqDer методом POST на TsaUrl и заполняет RespDer сырым телом TimeStampResp; возвращает False при ошибке транспорта

Constants

ConstantValueDescription
TsaMaxResponseBytes4 * 1024 * 1024Верхняя граница принимаемого тела TimeStampResp; более крупный ответ прерывает передачу вместо неограниченного роста буфера. Держится синхронно с той же константой в FPdfTsaWin
TsaRequestTimeoutSeconds30Бюджет всего запроса в секундах, совпадающий с таймаутами WinHttp, чтобы мёртвая TSA не могла повесить поток подписи на любой из платформ
TsaConnectTimeoutSeconds30Бюджет соединения в секундах, применяется до бюджета запроса

Remarks

See Also

FPdfTsa, FPdfTsaWin, FPdfCms, TPdf.SignPades