PDFium Delphi Component Docs

ValidatePadesTrust Métodos

Componente: TPdf  ·  Unidade: PDFium
Valida a integridade da assinatura PAdES, a confiança atual do sistema, evidências opcionais de revogação e tokens de timestamp RFC 3161

Syntax

function ValidatePadesTrust(const Options: TPadesTrustValidationOptions): TPadesValidationResult;

function ValidatePadesTrustAsync(const Options: TPadesTrustValidationOptions; const Reply: TPadesTrustValidationReply): Boolean;

Description

Ambos os métodos capturam o arquivo original exato, o buffer de memória, o stream personalizado ou a origem progressiva concluída retidos pelo componente ativo, e nunca validam uma cópia regravada pelo PDFium

Cada assinatura comum é verificada contra seu ByteRange original, atributos assinados CMS e valor de assinatura, vínculo signing-certificate-v2, cadeia de certificados atual do backend configurado e evidências opcionais de revogação

Timestamps de assinatura e Document Time-stamps adicionalmente validam sua impressão de mensagem SHA-256, assinatura CMS anexada, cadeia TSA e estado de revogação opcional

O certificado do signatário do timestamp deve ter uma extensão crítica Extended Key Usage contendo apenas id-kp-timeStamping, como exige o RFC 3161 seção 2.3. Uma EKU ausente, não crítica, mista ou diferente produz um TimeStampTrustStatus inválido mesmo quando a assinatura CMS e a cadeia de certificados básica do token são válidas; a assinatura externa do documento mantém seus resultados independentes

A sobrecarga assíncrona captura a origem antes do despacho e relata a conclusão por meio de TPadesTrustValidationReply

Options

NetworkPolicyptnpOffline usa apenas dados de certificado em cache, enquanto ptnpOnline permite a recuperação de cadeia pelo Windows
CheckRevocationSolicita a avaliação de revogação da cadeia do backend configurado; o Windows exclui o certificado raiz, enquanto o OpenSSL confronta as CRLs configuradas com a cadeia
CheckTimeStampsValida tokens de timestamp de assinatura e Document Time-stamp quando presentes
UrlRetrievalTimeoutMsLimita a recuperação nativa de URL usada pelo processamento de cadeia e revogação
QualifiedTrustEvaluatorOpcionalmente avalia o assinante e a cadeia coletada contra um snapshot autenticado offline de lista confiável
QualifiedValidationTimeSeleciona o horário de avaliação UTC do histórico de serviço, com zero usando o horário atual
CancellationTokenPara no próximo limite de estágio de validação
OnProgressRecebe o estágio, o índice da assinatura, a contagem de assinaturas e o percentual geral

Result

TPadesValidationResult.Signatures relata valores independentes de ByteRangeStatus, CmsSignatureStatus, AlgorithmPolicyStatus, SigningCertificateStatus, CertificateTrustStatus, QualifiedTrustStatus, RevocationStatus, TimeStampStatus, TimeStampSignatureStatus, TimeStampTrustStatus e TimeStampRevocationStatus, enquanto QualifiedTrust identifica o território, provedor, serviço, tipo, status e hora de início correspondentes

AlgorithmInfo registra os OIDs de digest e assinatura CMS, além dos OIDs de chave pública e curva nomeada do certificado assinante, e aplica as regras ISO/TS 32002 NIST, Brainpool, Ed25519, Ed448 e curva-para-digest antes que a integridade seja aceita

Algoritmos sem suporte, serviços de confiança da plataforma indisponíveis, evidências de revogação incompletas e validação cancelada não são promovidos a estados válidos

Cada entrada de assinatura inclui RevocationReason e NativeRevocationError da verificação CMS dela, além de TimeStampRevocationReason e NativeTimeStampRevocationError independentes, vindos da verificação do token de timestamp. Os campos de reason usam TPdfCmsRevocationReason; os campos de erro nativo são valores Cardinal no espaço de erros do backend selecionado, como os códigos X509_V_ERR_* do OpenSSL ou um DWORD bruto de provider do Windows ou de GetLastError. Valores do Windows são preservados sem conversão para um espaço HRESULT comum

O par do timestamp descreve um timestamp de assinatura embutido ou um Document Time-stamp, sem sobrescrever o par da assinatura comum. Os diagnósticos do timestamp só são preenchidos depois que as checagens de estrutura do token e de impressão de mensagem permitem que a verificação CMS rode

Com CheckRevocation = False, os reasons de diagnóstico permanecem pcrrNone e os erros permanecem zero. Os mesmos defaults valem quando uma checagem não é alcançada ou o backend dela não fornece reason detalhado, então sempre leia o status correspondente em vez de tratar um diagnóstico vazio como sucesso

Remarks

Example

var
  Options: TPadesTrustValidationOptions;
  Validation: TPadesValidationResult;
begin
  Options := TPadesTrustValidationOptions.Default;
  Options.NetworkPolicy := ptnpOnline;
  Options.CheckRevocation := True;
  Validation := Pdf1.ValidatePadesTrust(Options);
end;

See Also

ValidatePades FPdfTrustedList AnalyzeSignatureRevisions RenewPadesArchiveTimestamp