function ValidatePadesTrust(const Options: TPadesTrustValidationOptions): TPadesValidationResult;
function ValidatePadesTrustAsync(const Options: TPadesTrustValidationOptions; const Reply: TPadesTrustValidationReply): Boolean;
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
| NetworkPolicy | ptnpOffline usa apenas dados de certificado em cache, enquanto ptnpOnline permite a recuperação de cadeia pelo Windows |
| CheckRevocation | Solicita 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 |
| CheckTimeStamps | Valida tokens de timestamp de assinatura e Document Time-stamp quando presentes |
| UrlRetrievalTimeoutMs | Limita a recuperação nativa de URL usada pelo processamento de cadeia e revogação |
| QualifiedTrustEvaluator | Opcionalmente avalia o assinante e a cadeia coletada contra um snapshot autenticado offline de lista confiável |
| QualifiedValidationTime | Seleciona o horário de avaliação UTC do histórico de serviço, com zero usando o horário atual |
| CancellationToken | Para no próximo limite de estágio de validação |
| OnProgress | Recebe o estágio, o índice da assinatura, a contagem de assinaturas e o percentual geral |
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
Active como True e um snapshot completo da origem originalOnProgress executa na thread de trabalho quando chamado por ValidatePadesTrustAsync e não deve manipular controles de UI diretamenteTPdfFuture
var
Options: TPadesTrustValidationOptions;
Validation: TPadesValidationResult;
begin
Options := TPadesTrustValidationOptions.Default;
Options.NetworkPolicy := ptnpOnline;
Options.CheckRevocation := True;
Validation := Pdf1.ValidatePadesTrust(Options);
end;