PDFium Delphi Component Docs

Unidade FPdfTsaFpc

Unidade: FPdfTsaFpc
Back-end de transporte de timestamps via libcurl do Free Pascal, que envia uma requisição RFC 3161 para a URL de uma timestamp authority e retorna os bytes da resposta

Sintaxe

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;

Descrição

FPdfTsaFpc é o transporte de timestamps fora do Windows consumido por FPdfTsa, a contraparte de FPdfTsaWin. Ele envia um TimeStampReq codificado por POST para a URL de uma timestamp authority por HTTP ou HTTPS e coleta os bytes do TimeStampResp; construir e analisar o DER fica em FPdfTsa

O transporte é a libcurl, vinculada em tempo de execução em vez de ligada estaticamente, de modo que a biblioteca não é uma dependência de compilação e sua ausência é relatada em vez de falhar o carregamento. Passar pela libcurl também mantém a pilha TLS fora desta unidade: a libcurl escolhe o próprio back-end e valida a cadeia do servidor contra o trust store da plataforma

TsaHttpAvailable relata se a libcurl foi encontrada e se os pontos de entrada exigidos foram resolvidos; TsaHttpBackendName nomeia o back-end resolvido; PostTimeStampQuery executa a troca HTTP e retorna False (em vez de lançar exceção) em qualquer falha de transporte, deixando o chamador adicionar seu próprio contexto e política de nova tentativa

Toda a seção de interface é compilada apenas sob FPC. Sob Delphi a unidade é vazia, porque o Delphi visa o Windows e FPdfTsaWin é o back-end lá. A unidade ainda compila em todos os alvos FPC, incluindo o Windows, onde FPdfTsa prefere o back-end WinHttp e nada chama este

Os tipos de handle da libcurl, as vinculações de pontos de entrada e as constantes de opções ficam na seção de implementação; a interface expõe apenas a verificação de disponibilidade, o nome do back-end, o auxiliar de envio e os três limites de transporte

Funções

FunçãoDescrição
TsaHttpAvailableRetorna True quando a libcurl foi localizada e todos os pontos de entrada exigidos foram resolvidos em tempo de execução
TsaHttpBackendNameRetorna o nome do back-end resolvido, libcurl quando o transporte é utilizável e uma string vazia caso contrário
PostTimeStampQueryEnvia ReqDer por POST para TsaUrl e preenche RespDer com o corpo bruto do TimeStampResp; retorna False em falha de transporte

Constantes

ConstanteValorDescrição
TsaMaxResponseBytes4 * 1024 * 1024Limite superior do corpo do TimeStampResp aceito; uma resposta maior aborta a transferência em vez de crescer o buffer sem limite. Mantido em sincronia com a mesma constante em FPdfTsaWin
TsaRequestTimeoutSeconds30Orçamento para a requisição inteira em segundos, correspondendo aos timeouts do WinHttp para que uma TSA morta não possa travar uma thread de assinatura em nenhuma das plataformas
TsaConnectTimeoutSeconds30Orçamento de conexão em segundos, aplicado antes do orçamento da requisição

Observações

Consulte também

FPdfTsa, FPdfTsaWin, FPdfCms, TPdf.SignPades